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á.
Crie ações de bootstrap para instalar software adicional com um cluster da Amazon EMR
Você pode usar uma ação de bootstrap para instalar softwares adicionais ou personalizar a configuração de instâncias de cluster. As ações de bootstrap são scripts executados no cluster depois que a Amazon EMR lança a instância usando o Amazon Linux Amazon Machine Image (AMI). As ações de bootstrap são executadas antes que a Amazon EMR instale os aplicativos que você especifica ao criar o cluster e antes que os nós do cluster comecem a processar os dados. Se você adicionar nós a um cluster em execução, as ações de bootstrap também serão executadas nesses nós da mesma forma. É possível criar ações de bootstrap personalizadas e especificá-las ao criar seu cluster.
A maioria das ações de bootstrap predefinidas para as EMR AMI versões 2.x e 3.x da Amazon não são suportadas nas versões 4.x da Amazon. EMR Por exemplo, configure-Hadoop
e não configure-daemons
são compatíveis com a EMR versão 4.x da Amazon. Em vez disso, a EMR versão 4.x da Amazon fornece essa funcionalidade de forma nativa. Para obter mais informações sobre como migrar ações de bootstrap das EMR AMI versões 2.x e 3.x da Amazon para a versão 4.x da EMR Amazon, acesse Personalizando a configuração de clusters e aplicativos com AMI versões anteriores da Amazon EMR no Amazon Release Guide. EMR
Noções básicas sobre ações de bootstrap
Ações de bootstrap são executadas como o usuário do Hadoop por padrão. Você pode executar uma ação de bootstrap com privilégios de root usando sudo
.
Todas as interfaces EMR de gerenciamento da Amazon oferecem suporte a ações de bootstrap. Você pode especificar até 16 ações de bootstrap por cluster fornecendo vários bootstrap-actions
parâmetros do console, AWS CLI, ouAPI.
No EMR console da Amazon, você pode, opcionalmente, especificar uma ação de bootstrap ao criar um cluster.
Ao usar oCLI, você pode passar referências aos scripts de ação de bootstrap para a Amazon EMR adicionando o --bootstrap-actions
parâmetro ao criar o cluster usando o create-cluster
comando.
--bootstrap-actions Path="s3://
amzn-s3-demo-bucket
/filename
",Args=[arg1
,arg2
]
Se a ação de bootstrap retornar um código de erro diferente de zero, a Amazon EMR tratará isso como uma falha e encerrará a instância. Se muitas instâncias falharem em suas ações de bootstrap, a Amazon EMR encerrará o cluster. Se apenas algumas instâncias falharem, a Amazon EMR tentará realocar as instâncias com falha e continuar. Use o código de erro de cluster lastStateChangeReason
para identificar falhas causadas por uma ação de bootstrap.
Executar uma ação de bootstrap condicionalmente
Para executar apenas ações de bootstrap no nó principal, você pode usar uma ação de bootstrap personalizada com um pouco de lógica para determinar se o nó é principal.
#!/bin/bash if grep isMaster /mnt/var/lib/info/instance.json | grep false; then echo "This is not master node, do nothing,exiting" exit 0 fi echo "This is master, continuing to execute script" # continue with code logic for master node below
A saída a seguir será impressa de um nó central.
This is not master node, do nothing, exiting
A saída a seguir será impressa de um nó principal.
This is master, continuing to execute script
Para usar essa lógica, carregue a ação de bootstrap, incluindo o código acima, no bucket do Amazon S3. No AWS CLI, adicione o --bootstrap-actions
parâmetro à aws emr
create-cluster
API chamada e especifique a localização do script de bootstrap como o valor dePath
.
Ações de desligamento
Um script de ação de bootstrap pode criar uma ou mais ações de desligamento, escrevendo scripts no diretório /mnt/var/lib/instance-controller/public/shutdown-actions/
. Quando um cluster é encerrado, todos os scripts nesse diretório são executados em paralelo. Cada script deve ser executado e concluído em até 60 segundos.
Scripts de ação de desligamento não terão garantia de execução se o nó for encerrado com um erro.
nota
Ao usar EMR as versões 4.0 e posteriores da Amazon, você deve criar manualmente o /mnt/var/lib/instance-controller/public/shutdown-actions/
diretório no nó principal. Ele não existe por padrão. No entanto, depois de serem criados, os scripts nesse diretório são executados antes do desligamento. Para obter mais informações sobre como conectar-se ao nó principal para criar diretórios, consulte Conecte-se ao nó primário EMR do cluster Amazon usando SSH.
Usar ações de bootstrap personalizadas
Você pode criar um script personalizado para executar uma ação de bootstrap personalizada. Qualquer uma das EMR interfaces da Amazon pode fazer referência a uma ação de bootstrap personalizada.
nota
Para obter o melhor desempenho, recomendamos que você armazene ações de bootstrap, scripts e outros arquivos personalizados que você deseja usar com a Amazon EMR em um bucket do Amazon S3 que esteja no Região da AWS mesmo que seu cluster.
Conteúdo
Adicionar ações de bootstrap personalizadas
Usar uma ação de bootstrap personalizada para copiar um objeto do Amazon S3 para cada nó
Você pode usar uma ação de bootstrap para copiar objetos do Amazon S3 para cada nó no cluster antes que suas aplicações sejam instaladas. O AWS CLI é instalado em cada nó de um cluster, para que sua ação de bootstrap possa chamar AWS CLI comandos.
O exemplo a seguir demonstra um script de ação de bootstrap simples que copia um arquivo, myfile.jar
, do Amazon S3 para uma pasta local, /mnt1/myfolder
, em cada nó do cluster. O script é salvo no Amazon S3 com o nome de arquivo copymyfile.sh
com os conteúdos a seguir.
#!/bin/bash aws s3 cp s3://amzn-s3-demo-bucket/myfilefolder/myfile.jar /mnt1/myfolder
Ao iniciar o cluster, você especifica o script. O AWS CLI exemplo a seguir demonstra isso:
aws emr create-cluster --name "Test cluster" --release-label
emr-7.5.0
\ --use-default-roles --ec2-attributes KeyName=myKey \ --applications Name=Hive Name=Pig \ --instance-count 3 --instance-type m5.xlarge \ --bootstrap-actions Path="s3://amzn-s3-demo-bucket/myscriptfolder/copymyfile.sh"