Instalação e uso de kernels e bibliotecas no EMR Studio - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Instalação e uso de kernels e bibliotecas no EMR Studio

Cada Caderno do EMR vem com um conjunto de bibliotecas e kernels instalados previamente. Você poderá instalar bibliotecas e kernels adicionais em um cluster do EMR, se o cluster tiver acesso ao repositório no qual os kernels e as bibliotecas estão localizados. Por exemplo, para clusters em sub-redes privadas, talvez seja necessário configurar a conversão de endereços de rede (NAT) e fornecer um caminho para o cluster acessar o repositório PyPI público para instalar uma biblioteca. Para obter mais informações sobre como configurar o acesso externo para diferentes configurações de rede, consulte Cenários e exemplos no Guia do usuário da Amazon VPC.

nota

Os cadernos do EMR estão disponíveis como Workspaces do EMR Studio no console. O botão Criar Workspace no console permite criar cadernos. Para acessar ou criar Workspaces, os usuários dos Cadernos do EMR precisam de permissões adicionais de perfil do IAM. Para obter mais informações, consulte Amazon EMR Notebooks are Amazon EMR Studio Workspaces in the console e console do Amazon EMR.

As aplicações do EMR Serverless vêm com as seguintes bibliotecas pré-instaladas para Python e PySpark:

  • Bibliotecas Python – ggplot, matplotlib, numpy, pandas, plotly, bokeh, scikit-learn, scipy, scipy

  • Bibliotecas PySpark ggplot — , matplotlib, numpy, pandas, plotly, bokeh, scikit-learn, scipy, scipy

Instalação de kernels e de bibliotecas Python em um nó primário do cluster

Com o Amazon EMR versão 5.30.0 e posteriores, exceto a versão 6.0.0, é possível instalar bibliotecas e kernels Python adicionais no nó primário do cluster. Após a instalação, os kernels e as bibliotecas ficam disponíveis para qualquer usuário que execute um Caderno do EMR anexado ao cluster. As bibliotecas Python instaladas dessa forma estão disponíveis somente para processos em execução no nó primário. As bibliotecas não são instaladas nos nós principais ou de tarefas e não estão disponíveis para executores em execução nesses nós.

nota

Para as versões 5.30.1, 5.31.0 e 6.1.0 do Amazon EMR, você deve executar etapas adicionais para instalar kernels e bibliotecas no nó primário de um cluster.

Para habilitar o recurso, faça o seguinte:

  1. Certifique-se de que a política de permissões anexada ao perfil de serviço para os Cadernos do EMR permite a seguinte ação:

    elasticmapreduce:ListSteps

    Para obter mais informações, consulte Service role for EMR Notebooks.

  2. Use a AWS CLI para executar uma etapa no cluster que configura os Cadernos do EMR, conforme mostrado no exemplo a seguir. Você deve usar o nome da etapa EMRNotebooksSetup. Substitua us-east-1 pela região em que seu cluster reside. Para obter mais informações, consulte Adding steps to a cluster using the AWS CLI.

    aws emr add-steps --cluster-id MyClusterID --steps Type=CUSTOM_JAR,Name=EMRNotebooksSetup,ActionOnFailure=CONTINUE,Jar=s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://awssupportdatasvcs.com/bootstrap-actions/EMRNotebooksSetup/emr-notebooks-setup.sh"]

Você pode instalar kernels e bibliotecas usando pip ou conda no diretório /emr/notebook-env/bin no nó primário.

exemplo : instalação de bibliotecas Python

No kernel do Python3, execute a mágica %pip como um comando de dentro de uma célula de caderno para instalar bibliotecas Python.

%pip install pmdarima

Pode ser necessário reiniciar o kernel para usar os pacotes atualizados. Você também pode usar a mágica %%sh do Spark para invocar pip.

%%sh /emr/notebook-env/bin/pip install -U matplotlib /emr/notebook-env/bin/pip install -U pmdarima

Ao usar um kernel do PySpark, é possível instalar bibliotecas no cluster usando comandos pip ou usar bibliotecas com escopo de cadernos de dentro de um caderno PySpark.

Para executar comandos pip no cluster do terminal, primeiro conecte-se ao nó primário usando SSH, como demonstram os comandos a seguir.

sudo pip3 install -U matplotlib sudo pip3 install -U pmdarima

Como alternativa, você pode usar bibliotecas com escopo de cadernos. Com bibliotecas com escopo de cadernos, a instalação da sua biblioteca é limitada ao escopo da sua sessão e ocorre em todos os executores do Spark. Para obter mais informações, consulte Uso de bibliotecas com escopo de cadernos.

Se desejar empacotar várias bibliotecas Python em um kernel do PySpark, você também pode criar um ambiente virtual Python isolado. Para obter exemplos, consulte Uso de Virtualenv.

Para criar um ambiente virtual Python em uma sessão, use a propriedade spark.yarn.dist.archives do Spark do comando mágico %%configure na primeira célula de um caderno, como demonstra o exemplo a seguir.

%%configure -f { "conf": { "spark.yarn.appMasterEnv.PYSPARK_PYTHON":"./environment/bin/python", "spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON":"./environment/bin/python", "spark.yarn.dist.archives":"s3://amzn-s3-demo-bucket/prefix/my_pyspark_venv.tar.gz#environment", "spark.submit.deployMode":"cluster" } }

De forma semelhante, você pode criar um ambiente de executor do Spark.

%%configure -f { "conf": { "spark.yarn.appMasterEnv.PYSPARK_PYTHON":"./environment/bin/python", "spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON":"./environment/bin/python", "spark.executorEnv.PYSPARK_PYTHON":"./environment/bin/python", "spark.yarn.dist.archives":"s3://amzn-s3-demo-bucket/prefix/my_pyspark_venv.tar.gz#environment", "spark.submit.deployMode":"cluster" } }

Você também pode usar conda para instalar bibliotecas Python. Você não precisa de acesso ao sudo para usar conda. Você deve se conectar ao nó primário com SSH e, em seguida, executar conda do terminal. Para ter mais informações, consulte Conecte-se ao nó primário EMR do cluster Amazon usando SSH.

exemplo : instalação de kernels

O seguinte exemplo demonstra a instalação do kernel do Kotlin usando um comando de terminal enquanto estiver conectado ao nó primário de um cluster:

sudo /emr/notebook-env/bin/conda install kotlin-jupyter-kernel -c jetbrains
nota

Estas instruções não instalam as dependências do kernel. Se o seu kernel tiver dependências de terceiros, talvez seja necessário realizar etapas adicionais de configuração antes de poder usar o kernel com o seu caderno.

Considerações e limitações com bibliotecas com escopo de cadernos

Considere o seguinte ao usar bibliotecas com escopo de cadernos:

  • Bibliotecas com escopo de cadernos estão disponíveis para clusters criados com as versões 5.26.0 e superiores do Amazon EMR.

  • As bibliotecas com escopo de bloco de anotações destinam-se a ser usadas somente com o kernel PySpark.

  • Qualquer usuário pode instalar bibliotecas adicionais com escopo de bloco de anotações de dentro de uma célula de bloco de anotações. Essas bibliotecas só estão disponíveis para esse usuário do bloco de anotações durante uma única sessão do bloco de anotações. Se outros usuários precisarem das mesmas bibliotecas ou o mesmo usuário precisar das mesmas bibliotecas em uma sessão diferente, a biblioteca deverá ser reinstalada.

  • Você pode desinstalar apenas as bibliotecas instaladas usando a API install_pypi_package. Não é possível desinstalar nenhuma biblioteca pré-instalada no cluster.

  • Se as mesmas bibliotecas com versões diferentes estiverem instaladas no cluster e como bibliotecas com escopo de bloco de anotações, a versão da biblioteca com escopo de bloco de anotações substituirá a versão da biblioteca do cluster.

Como trabalhar com bibliotecas com escopo de cadernos

Para instalar bibliotecas, o cluster do Amazon EMR deve ter acesso ao repositório PyPI em que as bibliotecas estão localizadas.

Os exemplos a seguir demonstram comandos simples para listar, instalar e desinstalar bibliotecas de dentro de uma célula de bloco de anotações usando as APIs e o kernel PySpark. Para obter exemplos adicionais, consulte a publicação Install Python libraries on a running cluster with EMR Notebooks no blog de Big Data da AWS.

exemplo : listagem de bibliotecas atuais

O comando a seguir lista os pacotes Python disponíveis para a sessão de bloco de anotações Spark atual. Isso lista as bibliotecas instaladas no cluster e as bibliotecas com escopo de bloco de anotações.

sc.list_packages()
exemplo : instalação da biblioteca Celery

O comando a seguir instala a biblioteca Celery como uma biblioteca com escopo de bloco de anotações.

sc.install_pypi_package("celery")

Depois de instalar a biblioteca, o comando a seguir confirma que a biblioteca está disponível no driver e nos executores Spark.

import celery sc.range(1,10000,1,100).map(lambda x: celery.__version__).collect()
exemplo : instalação da biblioteca Arrow com especificação de versão e de repositório

O comando a seguir instala a biblioteca Arrow como uma biblioteca com escopo de bloco de anotações, com uma especificação da versão da biblioteca e do URL do repositório.

sc.install_pypi_package("arrow==0.14.0", "https://pypi.org/simple")
exemplo : desinstalação de uma biblioteca

O comando a seguir desinstala a biblioteca Arrow, removendo-a como uma biblioteca com escopo de bloco de anotações da sessão atual.

sc.uninstall_package("arrow")