Controle uma instância do Amazon EMR Spark usando um notebook - Amazon SageMaker

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á.

Controle uma instância do Amazon EMR Spark usando um notebook

Importante

IAMPolíticas personalizadas que permitem que o Amazon SageMaker Studio ou o Amazon SageMaker Studio Classic criem SageMaker recursos da Amazon também devem conceder permissões para adicionar tags a esses recursos. A permissão para adicionar tags aos recursos é necessária porque o Studio e o Studio Classic marcam automaticamente todos os recursos que eles criam. Se uma IAM política permitir que o Studio e o Studio Classic criem recursos, mas não permita a marcação, erros AccessDenied "" podem ocorrer ao tentar criar recursos. Para obter mais informações, consulte Forneça permissões para marcar recursos SageMaker.

AWS Políticas gerenciadas para a Amazon SageMakerque dão permissões para criar SageMaker recursos já incluem permissões para adicionar tags ao criar esses recursos.

Você pode usar uma instância de notebook criada com um script de configuração de ciclo de vida personalizado para acessar AWS serviços do seu notebook. Por exemplo, você pode criar um script que permite usar seu notebook com o Sparkmagic para controlar outros AWS recursos, como uma instância da AmazonEMR. Em seguida, você pode usar a EMR instância da Amazon para processar seus dados em vez de executar a análise de dados em seu notebook. Isso permite que você crie uma instância de caderno menor porque você não usará a instância para processar dados. Isso é útil quando você tem conjuntos de dados grandes, que exigem uma instância de caderno grande para processar os dados.

O processo exige três procedimentos usando o SageMaker console da Amazon:

  • Crie a instância do Amazon EMR Spark

  • Criar o caderno Jupyter

  • Teste a notebook-to-Amazon EMR conexão

Para criar uma instância do Amazon EMR Spark que possa ser controlada a partir de um notebook usando o Sparkmagic
  1. Abra o EMR console da Amazon em https://console.aws.amazon.com/elasticmapreduce/.

  2. No painel de navegação, escolha Create cluster (Criar cluster).

  3. Na página Criar cluster - Opções rápidas, em Configuração de software, escolha Spark: Spark 2.4.4 no Hadoop 2.8.5 YARN com Ganglia 3.7.2 e Zeppelin 0.8.2.

  4. Defina parâmetros adicionais na página e escolha Create cluster (Criar cluster).

  5. Na página Cluster escolha o nome do cluster que você criou. Observe o público principal DNS, o grupo de segurança do EMR mestre e o VPC nome e o ID da sub-rede em que o EMR cluster foi criado. Você usará esses valores quando criar um caderno.

Para criar um notebook que usa o Sparkmagic para controlar uma instância do Amazon EMR Spark
  1. Abra o SageMaker console da Amazon em https://console.aws.amazon.com/sagemaker/.

  2. No painel de navegação, em Notebook instances (Instâncias de caderno), escolha Create notebook (Criar caderno).

  3. Insira o nome da instância de caderno e escolha o tipo de instância.

  4. Escolha Additional configuration (Configuração adicional) e, em Lifecycle configuration (Configuração do ciclo de vida), escolha Create a new lifecycle configuration (Criar uma configuração do ciclo de vida).

  5. Adicione o seguinte código ao script de configuração do ciclo de vida:

    # OVERVIEW # This script connects an Amazon EMR cluster to an Amazon SageMaker notebook instance that uses Sparkmagic. # # Note that this script will fail if the Amazon EMR cluster's master node IP address is not reachable. # 1. Ensure that the EMR master node IP is resolvable from the notebook instance. # One way to accomplish this is to have the notebook instance and the Amazon EMR cluster in the same subnet. # 2. Ensure the EMR master node security group provides inbound access from the notebook instance security group. # Type - Protocol - Port - Source # Custom TCP - TCP - 8998 - $NOTEBOOK_SECURITY_GROUP # 3. Ensure the notebook instance has internet connectivity to fetch the SparkMagic example config. # # https://aws.amazon.com/blogs/machine-learning/build-amazon-sagemaker-notebooks-backed-by-spark-in-amazon-emr/ # PARAMETERS EMR_MASTER_IP=your.emr.master.ip cd /home/ec2-user/.sparkmagic echo "Fetching Sparkmagic example config from GitHub..." wget https://raw.githubusercontent.com/jupyter-incubator/sparkmagic/master/sparkmagic/example_config.json echo "Replacing EMR master node IP in Sparkmagic config..." sed -i -- "s/localhost/$EMR_MASTER_IP/g" example_config.json mv example_config.json config.json echo "Sending a sample request to Livy.." curl "$EMR_MASTER_IP:8998/sessions"
  6. Na PARAMETERS seção do script, your.emr.master.ip substitua pelo DNS nome Master Public da EMR instância Amazon.

  7. Escolha Criar configuração.

  8. Na página Create notebook (Criar caderno), escolha Network - optional (Rede - opcional).

  9. Escolha a VPC sub-rede em que a EMR instância da Amazon está localizada.

  10. Escolha o grupo de segurança usado pelo nó EMR principal da Amazon.

  11. Escolha Create notebook instance (Criar instância de bloco de anotações).

Enquanto a instância de caderno estiver sendo criada, o status será Pending. Depois que a instância for criada e o script de configuração do ciclo de vida for executado com sucesso, o status será. InService

nota

Se a instância do notebook não conseguir se conectar à EMR instância da Amazon, não SageMaker será possível criar a instância do notebook. A conexão pode falhar se a EMR instância e o notebook da Amazon não estiverem na mesma VPC sub-rede, se o grupo de segurança EMR principal da Amazon não for usado pelo notebook ou se o DNS nome público principal no script estiver incorreto.

Para testar a conexão entre a EMR instância da Amazon e o notebook
  1. Quando o status do notebook for InService, escolha Abrir o Jupyter para abrir o notebook.

  2. Escolha Novo e, em seguida, escolha Sparkmagic () PySpark.

  3. Na célula de código, digite %%info e execute a célula.

    A saída deve ser semelhante ao seguinte.

    Current session configs: {'driverMemory': '1000M', 'executorCores': 2, 'kind': 'pyspark'}
                        No active sessions.