Quero configurar uma instância de caderno do Amazon SageMaker AI para usar sessões interativas do AWS Glue, PySparkProcessor ou kernels Sparkmagic para executar grandes workloads de dados.
Resolução
Para configurar uma instância de caderno do SageMaker AI para executar workloads do Spark e do PySpark, conclua uma das seguintes resoluções.
Configure sessões interativas do AWS Glue para instâncias de caderno
Para uma opção sem servidor para executar workloads do Apache Spark e do PySpark, configure sessões interativas do AWS Glue para suas instâncias de caderno. Quando você inicia sua instância de caderno, a sessão interativa cria um kernel PySpark e um kernel Spark. Em seguida, é possível usar um dos kernels instalados na guia Inicializador das aplicações Jupyter ou JupyterLab.
Conceda permissões para sessões interativas do AWS Glue
Conclua as etapas a seguir:
- Abra o console do AWS Identity and Access Management (AWS IAM).
- No painel de navegação, em Gerenciamento de acesso, selecione Perfis.
- Selecione o perfil de execução que você usa para sua instância de caderno do SageMaker AI.
- Crie a seguinte política do IAM personalizada em linha no editor JSON:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "uniqueStatementId",
"Effect": "Allow",
"Action": [
"iam:GetRole",
"iam:PassRole",
"sts:GetCallerIdentity"
],
"Resource": "YOUR-IAM-ROLE-ARN"
}
]
}
Observação: substitua YOUR-IAM-ROLE-ARN pelo nome do recurso da Amazon (ARN) do perfil de execução do IAM da sua instância de caderno.
- Para conceder permissões do AWS Glue ao perfil do IAM, selecione Anexar políticas no menu suspenso Adicionar permissões. Em seguida, pesquise AwsGlueSessionUserRestrictedServiceRole e selecione Anexar políticas.
- Para permitir que o AWS Glue assuma o perfil do IAM, clique na guia Relações de confiança e adicione glue.amazonaws.com à lista de serviços. Confirme se sua política de confiança é semelhante ao exemplo a seguir:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": [
"sagemaker.amazonaws.com",
"glue.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
Instale kernels de sessões interativas do AWS Glue em instâncias de caderno
Conclua as etapas a seguir:
-
Para instalar automaticamente os kernels do AWS Glue durante a inicialização, crie o seguinte script de configuração de ciclo de vida:
#!/bin/bash
set -e
# Start conda environment
sudo -u ec2-user -i <<'EOF'
# Activate conda default environment
source /home/ec2-user/anaconda3/bin/activate JupyterSystemEnv
# Install/upgrade packages for boto3 and aws-glue-sessions
pip3 install --upgrade jupyter boto3 aws-glue-sessions
echo "AWS Glue Sessions Installed Successfully"
# Install Glue kernels
install-glue-kernels
echo "Glue Kernels Installed Successfully"
# Deactivate conda environment
conda deactivate
EOF
# Ensure script reports success
echo "Lifecycle configuration complete!"
systemctl restart jupyter-server
sudo touch /home/ec2-user/glue_ready
-
Navegue até a instância do seu caderno e confirme se a instância não está no estado InService.
-
Para anexar o script de configuração de ciclo de vida, clique em Configurações da instância de caderno e, em seguida, selecione Editar.
-
Em Configuração extra, selecione seu script de configuração de ciclo de vida na lista suspensa Configuração de ciclo de vida.
-
Selecione Atualizar instância de caderno.
Observação: a instância de caderno pode levar vários minutos para ser atualizada.
-
Inicie sua instância de caderno.
-
Abra o JupyterLab e clique na guia Inicializador.
-
Escolha o kernel Spark do AWS Glue ou o PySpark do AWS Glue para executar seus workloads de dados.
Observação: depois de processar seu workload, desligue o kernel no JupyterLab para que você não continue gerando cobranças no AWS Glue.
Para obter mais informações sobre como configurar sua sessão interativa do AWS Glue, consulte Configuração de sessões interativas do AWS Glue para cadernos do Jupyter e do AWS Glue Studio.
Configure o PySparkProcessor para processar trabalhos do SageMaker AI
É possível usar o PySparkProcessor para executar scripts do PySpark como trabalhos de processamento. Para obter mais informações, consulte PySparkProcessor no site do SageMaker.
Observação: o PySparkProcessor usa contêineres Spark pré-construídos do SageMaker AI. É possível configurar somente os argumentos framework_version, py_version e container_version.
Para ver exemplos de cadernos que é possível usar, consulte sagemaker-spark-processing.ipynb no site do GitHub.
Configure um cluster de backend do Amazon EMR para os kernels Sparkmagic do SageMaker AI
Os kernels Sparkmagic exigem um cluster de backend do Amazon EMR. Se você usa kernels Sparkmagic sem o cluster de backend do Amazon EMR, receberá a seguinte mensagem de erro:
"The code failed because of a fatal error: Error sending http request and maximum retry encountered..."
Para configurar um cluster Spark que é executado no Amazon EMR para se conectar à sua instância de caderno, consulte Build Amazon SageMaker AI notebooks backed by Spark in Amazon EMR (Criar cadernos do Amazon SageMaker AI com suporte do Spark no Amazon EMR).
Depois de confirmar a conexão, execute o seguinte comando para fazer o upgrade sagemaker-studio-analytics-extension:
pip install --upgrade sagemaker-studio-analytics-extension
As versões mais recentes do sagemaker-studio-analytics-extension substituem o tempo limite padrão da sessão do servidor de 60 segundos para 120 segundos. Para obter mais informações, consulte Solucione problemas de conexões do Livy interrompidas ou falhando.
Depois de atualizar a extensão, inicie um caderno do Jupyter com um kernel PySpark e teste a conexão. Se a conexão for bem-sucedida, você verá uma mensagem semelhante à seguinte:
"Starting Spark application … SparkSession available as 'spark' "
Depois de se conectar, importe o PySpark para executar seus workloads.
Informações relacionadas
Configurar permissões do IAM para o AWS Glue Studio
Criando AWS Glue trabalhos com sessões interativas