Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O HDInsight tem duas instalações Python integradas no cluster Spark, Anaconda Python 2.7 e Python 3.5. Os clientes podem precisar personalizar o ambiente Python como instalar pacotes Python externos. Aqui, mostramos as melhores práticas de gerenciamento seguro de ambientes Python para clusters Apache Spark no HDInsight.
Pré-requisitos
Um cluster do Apache Spark no HDInsight. Para obter instruções, veja Criar clusters do Apache Spark no Azure HDInsight. Se você ainda não tiver um cluster do Spark no HDInsight, poderá executar ações de script durante a criação do cluster. Visite a documentação sobre como usar ações de script personalizadas.
Suporte para software de código aberto usado em clusters HDInsight
O serviço Microsoft Azure HDInsight usa um ambiente de tecnologias de código aberto formado em torno do Apache Hadoop. O Microsoft Azure fornece um nível geral de suporte para tecnologias de código aberto. Para obter mais informações, consulte página de FAQ do suporte da Azure. O serviço HDInsight fornece um nível adicional de suporte para componentes internos.
Há dois tipos de componentes de código aberto disponíveis no serviço HDInsight:
| Componente | Descrição |
|---|---|
| Incorporado | Esses componentes são pré-instalados em clusters HDInsight e fornecem a funcionalidade principal do cluster. Por exemplo, o Apache Hadoop YARN Resource Manager, a linguagem de consulta Apache Hive (HiveQL) e a biblioteca Mahout pertencem a esta categoria. Uma lista completa de componentes de cluster está disponível em Novidades nas versões de cluster do Apache Hadoop fornecidas pelo HDInsight. |
| Personalizado | Você, como usuário do cluster, pode instalar ou usar em sua carga de trabalho qualquer componente disponível na comunidade ou criado por você. |
Importante
Os componentes fornecidos com o cluster HDInsight são totalmente suportados. O Suporte da Microsoft ajuda a isolar e resolver problemas relacionados a esses componentes.
Os componentes personalizados recebem suporte comercialmente razoável para ajudá-lo a solucionar ainda mais o problema. O suporte da Microsoft pode ser capaz de resolver o problema OU eles podem pedir que você envolva os canais disponíveis para as tecnologias de código aberto onde o conhecimento profundo para essa tecnologia é encontrado. Por exemplo, há muitos sites da comunidade que podem ser usados, como: Página de perguntas e respostas da Microsoft para o HDInsight, https://stackoverflow.com. Além disso, os projetos Apache têm sites de projetos em https://apache.org.
Compreender a instalação padrão do Python
Os clusters HDInsight Spark têm o Anaconda instalado. Existem duas instalações Python no cluster, Anaconda Python 2.7 e Python 3.5. A tabela a seguir mostra as configurações padrão do Python para Spark, Livy e Jupyter.
| Configurações | Python 2.7 | Python 3,5 |
|---|---|---|
| Caminho | /usr/bin/anaconda/bin | /usr/bin/anaconda/envs/py35/bin |
| Versão Spark | Padrão definido como 2.7 | Pode alterar a configuração para 3.5 |
| Versão Livy | Padrão definido como 2.7 | Pode alterar a configuração para 3.5 |
| Jupyter | Kernel PySpark | Kernel PySpark3 |
Para a versão Spark 3.1.2, o kernel Apache PySpark é removido e um novo ambiente Python 3.8 é instalado sob /usr/bin/miniforge/envs/py38/bin, que é usado pelo kernel PySpark3. As variáveis de ambiente PYSPARK_PYTHON e PYSPARK3_PYTHON são atualizadas com o seguinte:
export PYSPARK_PYTHON=${PYSPARK_PYTHON:-/usr/bin/miniforge/envs/py38/bin/python}
export PYSPARK3_PYTHON=${PYSPARK_PYTHON:-/usr/bin/miniforge/envs/py38/bin/python}
Instale com segurança pacotes Python externos
O cluster HDInsight depende do ambiente Python integrado, Python 2.7 e Python 3.5. A instalação direta de pacotes personalizados nesses ambientes internos padrão pode causar alterações inesperadas na versão da biblioteca. E quebrar o cluster ainda mais. Para instalar com segurança pacotes Python externos personalizados para seus aplicativos Spark, siga as etapas.
Crie um ambiente virtual Python usando conda. Um ambiente virtual fornece um espaço isolado para seus projetos sem quebrar outros. Ao criar o ambiente virtual Python, você pode especificar a versão Python que deseja usar. Você ainda precisa criar um ambiente virtual, mesmo que você gostaria de usar Python 2.7 e 3.5. Esse requisito é para garantir que o ambiente padrão do cluster não fique quebrado. Execute ações de script em seu cluster para todos os nós com o seguinte script para criar um ambiente virtual Python.
-
--prefixespecifica um caminho onde está localizado um ambiente virtual do conda. Há várias configurações que precisam ser alteradas com base no caminho especificado aqui. Neste exemplo, usamos o py35new, pois o cluster já tem um ambiente virtual existente chamado py35. -
python=especifica a versão Python para o ambiente virtual. Neste exemplo, usamos a versão 3.5, a mesma versão do cluster criado numa unidade. Você também pode usar outras versões do Python para criar o ambiente virtual. -
anacondaespecifica o package_spec como anaconda para instalar pacotes Anaconda no ambiente virtual.
sudo /usr/bin/anaconda/bin/conda create --prefix /usr/bin/anaconda/envs/py35new python=3.5 anaconda=4.3 --yes-
Instale pacotes Python externos no ambiente virtual criado, se necessário. Execute ações de script em seu cluster para todos os nós com o seguinte script para instalar pacotes Python externos. Você precisa ter o privilégio sudo aqui para gravar arquivos na pasta do ambiente virtual.
Pesquise o índice de pacotes para obter a lista completa de pacotes disponíveis. Você também pode obter uma lista de pacotes disponíveis de outras fontes. Por exemplo, você pode instalar pacotes disponibilizados através conda-forge.
Use o seguinte comando se quiser instalar uma biblioteca com sua versão mais recente:
Utilize o canal conda:
-
seaborné o nome do pacote que você gostaria de instalar. -
-n py35newespecificar o nome do ambiente virtual que acaba de ser criado. Certifique-se de alterar o nome de forma correspondente com base na criação do seu ambiente virtual.
sudo /usr/bin/anaconda/bin/conda install seaborn -n py35new --yes-
Ou use o repositório PyPi, altere
seabornepy35newcorrespondentemente:sudo /usr/bin/anaconda/envs/py35new/bin/pip install seaborn
Use o seguinte comando se quiser instalar uma biblioteca com uma versão específica:
Utilize o canal conda:
-
numpy=1.16.1é o nome do pacote e a versão que você gostaria de instalar. -
-n py35newespecificar o nome do ambiente virtual que acaba de ser criado. Certifique-se de alterar o nome de forma correspondente com base na criação do seu ambiente virtual.
sudo /usr/bin/anaconda/bin/conda install numpy=1.16.1 -n py35new --yes-
Ou use o repositório PyPi, altere
numpy==1.16.1epy35newcorrespondentemente:sudo /usr/bin/anaconda/envs/py35new/bin/pip install numpy==1.16.1
Se não souber o nome do ambiente virtual, poderá usar SSH para o nó de cabeça do cluster e executar o comando
/usr/bin/anaconda/bin/conda info -epara mostrar todos os ambientes virtuais.Altere as configurações do Spark e do Livy e aponte para o ambiente virtual criado.
Abra a interface do usuário do Ambari, vá para a página do Spark 2, guia Configurações.
Expanda Advanced livy2-env, adicione as seguintes instruções na parte inferior. Se você instalou o ambiente virtual com um prefixo diferente, altere o caminho correspondentemente.
export PYSPARK_PYTHON=/usr/bin/anaconda/envs/py35new/bin/python export PYSPARK_DRIVER_PYTHON=/usr/bin/anaconda/envs/py35new/bin/python
Expanda Advanced spark2-env, substitua a instrução export PYSPARK_PYTHON existente na parte inferior. Se você instalou o ambiente virtual com um prefixo diferente, altere o caminho correspondentemente.
export PYSPARK_PYTHON=${PYSPARK_PYTHON:-/usr/bin/anaconda/envs/py35new/bin/python}
Salve as alterações e reinicie os serviços afetados. Essas alterações precisam ser reiniciadas pelo serviço Spark 2. Ambari UI solicitará um lembrete de reinicialização necessário, clique em Reiniciar para reiniciar todos os serviços afetados.
Defina duas propriedades para sua sessão do Spark para garantir que o trabalho aponte para a configuração atualizada do Spark:
spark.yarn.appMasterEnv.PYSPARK_PYTHONespark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON.Usando o terminal ou um notebook, use a função
spark.conf.set.spark.conf.set("spark.yarn.appMasterEnv.PYSPARK_PYTHON", "/usr/bin/anaconda/envs/py35/bin/python") spark.conf.set("spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON", "/usr/bin/anaconda/envs/py35/bin/python")Se você estiver usando
livy, adicione as seguintes propriedades ao corpo da solicitação:"conf" : { "spark.yarn.appMasterEnv.PYSPARK_PYTHON":"/usr/bin/anaconda/envs/py35/bin/python", "spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON":"/usr/bin/anaconda/envs/py35/bin/python" }
Se você gostaria de usar o novo ambiente virtual criado no Jupyter. Altere as configurações do Jupyter e reinicie o Jupyter. Execute ações de script em todos os nós de cabeçalho com a seguinte instrução para apontar o Jupyter para o novo ambiente virtual criado. Certifique-se de modificar o caminho para o prefixo especificado para seu ambiente virtual. Depois de executar essa ação de script, reinicie o serviço Jupyter por meio da interface do usuário do Ambari para disponibilizar essa alteração.
sudo sed -i '/python3_executable_path/c\ \"python3_executable_path\" : \"/usr/bin/anaconda/envs/py35new/bin/python3\"' /home/spark/.sparkmagic/config.jsonVocê pode confirmar duas vezes o ambiente Python no Jupyter Notebook executando o código: