As ações de bootstrap permitem executar automaticamente scripts shell personalizados nos nós do cluster durante a criação, o scale-out ou o Auto Scaling. Use-as para instalar softwares de terceiros, modificar configurações de tempo de execução ou configurar serviços sem suporte nativo no EMR.
Para obter informações sobre como executar scripts em nós existentes, consulte Executar scripts manualmente.
Como funciona
Ao iniciar um nó do cluster, o EMR baixa o script de um bucket do Object Storage Service (OSS) e o executa no estágio especificado:
Before component installation — executado antes da instalação de qualquer serviço
Before component startup — executado após a instalação dos serviços, mas antes da inicialização
After component startup — executado após a inicialização dos serviços
O EMR executa as ações de bootstrap na ordem definida. Se um script falhar, o EMR interrompe o processo (bloqueando a criação ou o scale-out do cluster) ou continua para o próximo script, conforme a política de falha configurada.
Os casos de uso mais comuns incluem:
Instalar software via YUM (quando o pacote estiver disponível)
Baixar softwares públicos da Internet
Ler dados do OSS
Instalar e executar serviços como Flink ou Impala
Limitações
Cada cluster aceita no máximo 10 ações de bootstrap.
Por padrão, os scripts são executados como
root. Para alternar para o usuário Hadoop, executesu - hadoopdentro do script.
Pré-requisitos
Antes de começar, verifique se você tem:
Um bucket do OSS na mesma região do cluster, com o arquivo de script carregado
O arquivo de script armazenado em um caminho no formato
oss://<bucket>/<path>.sh
Adicionar uma ação de bootstrap
Durante a criação do cluster
Faça login no console do EMR. No painel de navegação à esquerda, clique em EMR on ECS.
Na barra de navegação superior, selecione uma região e um grupo de recursos.
Clique em Create Cluster.
Na etapa Basic Configuration, role até a seção Advanced Settings, localize Bootstrap Actions e clique em Add Bootstrap Action.
-
Configure os seguintes parâmetros.
Parâmetro
Descrição
Action name
Nome de exibição desta ação de bootstrap.
Script path
Caminho do OSS para o arquivo de script. Formato:
oss://<bucket>/<path>.sh.Parameter
Argumentos opcionais passados ao script. Use este campo para definir valores de variáveis referenciadas no script.
Execution time
Momento de execução do script: Before component installation, Before component startup ou After component startup.
Execution failure policy
Proceed: se o script falhar, continua com o próximo. Stop: se o script falhar, aborta a criação ou o scale-out do cluster.
Execution scope
Cluster: executa em todos os nós. Node group type: executa apenas nos nós dos tipos de grupo especificados.
Clique em OK.
Após criar o cluster, verifique a aba Script Operation para confirmar que o script foi executado sem erros. Se ocorrer algum erro, consulte Visualizar logs de execução para solucionar o problema.
A ação de bootstrap adicionada pode falhar na execução. No entanto, essa falha não afeta a criação do cluster. Verifique a aba Script Operation após a criação.
Após a criação do cluster
Faça login no console do EMR. No painel de navegação à esquerda, clique em EMR on ECS.
Na barra de navegação superior, selecione uma região e um grupo de recursos.
Localize o cluster desejado e clique em Services na coluna Actions.
Clique na aba Script Operation e, em seguida, na aba Bootstrap Actions.
Clique em Add Bootstrap Action.
-
Na caixa de diálogo Add Bootstrap Action, configure os seguintes parâmetros.
Parâmetro
Descrição
Name
Nome de exibição desta ação de bootstrap.
Script address
Caminho do OSS para o arquivo de script. Formato:
oss://<bucket>/<path>.sh.Parameter
Argumentos opcionais passados ao script. Use este campo para definir valores de variáveis referenciadas no script.
Execution scope
Cluster: executa em todos os nós. Node group type: executa apenas nos nós dos tipos de grupo especificados. Node group: executa apenas nos grupos de nós específicos selecionados.
Execution time
Momento de execução do script: Before component installation, Before component startup ou After component startup.
Execution failure policy
Proceed: se o script falhar, continua com o próximo. Stop: se o script falhar, aborta a criação ou o scale-out do cluster.

Clique em OK.
Gerenciar ações de bootstrap existentes
Na aba Bootstrap Actions, edite, clone ou exclua uma ação de bootstrap pela coluna Actions.
Visualizar logs de execução
Adicione instruções de log em pontos estratégicos do script para rastrear seu comportamento por meio do log operacional.
Faça login no console do EMR. No painel de navegação à esquerda, clique em EMR on ECS.
Na barra de navegação superior, selecione uma região e um grupo de recursos.
Localize o cluster desejado e clique em Services na coluna Actions.
Na aba Script Operation, encontre o script e clique em View Execution Result na coluna Actions.
-
No painel Operation History, localize o registro de operação relevante e clique em
para expandir os detalhes da atividade.Clusters DataLake, Dataflow, OLAP, DataServing e personalizados: procure registros
createNodeGroupouincreaseNodeGroup. Tarefas com o prefixoRUN_BOOTSTRAP_CLUSTER_SCRIPT_<action-name>_<action-ID>correspondem a atividades de ação de bootstrap. Visualize os logs Stdout e Stderr.Clusters Hadoop, Data Science e EMR Studio: procure registros
CREATE_CLUSTERouRESIZE_CLUSTER. EmpollDeployTaskStatusActivity, as tarefas denominadasRUN_SCRIPT_HOST_**são atividades de ação de bootstrap. Visualize os logs Stdout e Stderr.
Exemplos
Cada nó baixa o script do caminho especificado no OSS e o executa diretamente ou com os parâmetros definidos. Os exemplos a seguir abordam casos de uso comuns.
Exemplo 1: Baixar um arquivo do OSS e descompactá-lo
Especifique o arquivo a ser baixado do OSS diretamente no script. Os scripts abaixo baixam o arquivo <myFile>.tar.gz do OSS e o descompactam no diretório /<yourDir>. Escolha o script apropriado conforme o tipo do seu cluster.
O endpoint do OSS no script deve estar acessível pela rede do cluster. Use um endpoint interno para redes clássicas (por exemplo, oss-cn-hangzhou-internal.aliyuncs.com para a região China (Hangzhou)) e um endpoint de Virtual Private Cloud (VPC) para redes VPC (por exemplo, vpc100-oss-cn-hangzhou.aliyuncs.com).
Clusters DataLake, Dataflow, OLAP, DataServing e personalizados (usa ossutil64):
#!/bin/bash
ossutil64 cp oss://<yourBucket>/<myFile>.tar.gz ./ \
-e oss-cn-hangzhou-internal.aliyuncs.com \
-i <yourAccessKeyId> \
-k <yourAccessKeySecret>
mkdir -p /<yourDir>
tar -zxvf <myFile>.tar.gz -C /<yourDir>
Clusters Hadoop (usa osscmd):
#!/bin/bash
osscmd --id=<yourAccessKeyId> \
--key=<yourAccessKeySecret> \
--host=oss-cn-hangzhou-internal.aliyuncs.com \
get oss://<yourBucket>/<myFile>.tar.gz ./
mkdir -p /<yourDir>
tar -zxvf <myFile>.tar.gz -C /<yourDir>
Substitua os seguintes espaços reservados:
|
Espaço reservado |
Descrição |
Exemplo |
|
|
Nome do bucket do OSS |
|
|
|
Nome do arquivo no bucket |
|
|
|
Diretório local para descompactação |
|
|
|
AccessKey ID |
|
|
|
AccessKey secret |
|
Exemplo 2: Instalar software do sistema com YUM
#!/bin/bash
yum install -y ld-linux.so.2
Solução de problemas
Script interrompido sem erro nos logs
Geralmente, isso indica que o script encerrou inesperadamente antes de gravar no log. As causas mais frequentes são:
Problema de rede: As instâncias ECS e o bucket do OSS devem estar na mesma região. Tentativas de conexão entre regiões (por exemplo, uma instância ECS na China (Pequim) acessando um bucket do OSS fora dessa região) falham silenciosamente.
Função IAM ausente: Se os nós do cluster não conseguirem obter o par de AccessKey, verifique se as instâncias ECS têm a função
AliyunECSInstanceForEMRRoleatribuída.nohupsem redirecionamento de saída: Caso o script usenohupmas não redirecione a saída, o processo pode travar indefinidamente. Use o formatonohup <command> ><logfile> 2>&1.
Adicione logs em pontos de verificação essenciais para identificar onde a execução para:
#!/bin/bash
echo "Step 1: Downloading file..." >> /tmp/bootstrap.log 2>&1
ossutil64 cp oss://<yourBucket>/<myFile>.tar.gz ./ -e <endpoint> >> /tmp/bootstrap.log 2>&1
echo "Step 1: Done" >> /tmp/bootstrap.log 2>&1
^M nos logs de erro (quebras de linha do Windows)
Se o log de erro do Operation History contiver ^M, o script foi salvo com quebras de linha CRLF no estilo Windows, o que gera erros no ambiente Linux. Corrija as quebras de linha antes de carregar o arquivo no OSS:
# Option 1: Use tr
tr -d '\r' < your-script.sh > your-script-fixed.sh
# Option 2: Use perl
perl -pi -e 's/\r\n/\n/g' your-script.sh
Comandos YARN ou HDFS não encontrados
Por padrão, os scripts são executados sem carregar o perfil do sistema; portanto, os comandos relacionados ao Hadoop não estão no PATH. Adicione a seguinte linha no início do script:
. /etc/profile
Deve haver um espaço entre . e /etc/profile. Sem esse espaço, o comando não funcionará.