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á.
Configuração de registro em log e depuração do cluster do Amazon EMR
Uma das questões a ser decidida quando você planeja o seu cluster é quanto de suporte à depuração você deseja disponibilizar. Quando você está desenvolvendo um aplicativo de processamento de dados pela primeira vez, recomendamos testar o aplicativo em um cluster processando um subconjunto pequeno, mas representativo, dos seus dados. Ao fazer isso, você provavelmente vai aproveitar todas as ferramentas de depuração que o Amazon EMR oferece, tais como o arquivamento de arquivos de log para o Amazon S3.
Uma vez concluído o desenvolvimento, e com o aplicativo de processamento de dados totalmente em produção, você pode optar por reduzir a depuração. Dessa forma, você pode economizar no custo do armazenamento de arquivos de log no Amazon S3 e reduzir a carga de processamento no cluster, pois ele não precisa mais gravar o estado no Amazon S3. O risco, obviamente, é que se ocorrer algum problema, você terá menos ferramentas disponíveis para investigar o erro.
Arquivos de log padrão
Por padrão, cada cluster grava os arquivos de log no nó primário. Esses são gravados no diretório /mnt/var/log/
. Você pode acessá-los usando o SSH para se conectar ao nó primário, como descrito em Como se conectar ao nó primário do cluster do Amazon EMR usando SSH. O Amazon EMR coleta determinados logs de sistemas e aplicações gerados pelos daemons do Amazon EMR e outros processos do Amazon EMR para garantir operações de serviço eficazes.
nota
Se você usa o Amazon EMR versão 6.8.0 ou anterior, os arquivos de log são salvos no Amazon S3 durante o término do cluster, então não é possível acessar os arquivos de log após o término do nó primário. O Amazon EMR libera a versão 6.9.0 e versões posteriores arquiva os registros no Amazon S3 durante a redução da escala verticalmente do cluster, de forma que os arquivos de log gerados no cluster persistam mesmo após o término do nó.
Não é necessário habilitar nada para fazer com que os arquivos de log sejam gravados no nó primário. Esse é o comportamento padrão do Amazon EMR e do Hadoop.
Um cluster gera vários tipos de arquivos de log, incluindo:
-
Logs de etapa: esses logs são gerados pelo serviço do Amazon EMR e contêm informações sobre o cluster e os resultados de cada etapa. Os arquivos de log são armazenados no diretório
/mnt/var/log/hadoop/steps/
no nó primário. Cada etapa registra seus resultados em um subdiretório numerado separado:/mnt/var/log/hadoop/steps/s-
para a primeira etapa,stepId1
//mnt/var/log/hadoop/steps/s-
para a segunda etapa, e assim por diante. Os identificadores de etapa de 13 caracteres (por exemplo, IdEtapa1, IdEtapa2) são exclusivos dos clusters.stepId2
/ -
Registros de componentes do Hadoop e do YARN — Os registros dos componentes associados ao Apache YARN e MapReduce, por exemplo, estão contidos em pastas separadas em.
/mnt/var/log
Os locais dos arquivos de log para os componentes do Hadoop sob/mnt/var/log
são os seguintes: hadoop-hdfs, hadoop-mapreduce, hadoop-httpfs e hadoop-yarn. O hadoop-state-pusher diretório é para a saída do processo de envio de estado do Hadoop. -
Logs de ação de bootstrap: se seu trabalho utiliza ações de bootstrap, os resultados dessas ações são registrados em logs. Os arquivos de log são armazenados em/mnt/var/log/bootstrap-actions/ no nó primário. Cada ação de bootstrap registra seus resultados em um subdiretório numerado separado:
/mnt/var/log/bootstrap-actions/1/
para a primeira ação de bootstrap,/mnt/var/log/bootstrap-actions/2/
para a segunda ação de bootstrap, e assim por diante. -
Logs de estado de instância: esses logs fornecem informações sobre a CPU, o estado da memória e os threads do coletor de lixo do nó. Os arquivos de log são armazenados em
/mnt/var/log/instance-state/
no nó primário.
Arquivamento dos arquivos de log no Amazon S3
nota
Atualmente não é possível usar a agregação de logs para o Amazon S3 com o utilitário yarn logs
.
O Amazon EMR libera a versão 6.9.0 e versões posteriores arquiva os registros no Amazon S3 durante a redução da escala verticalmente do cluster, de forma que os arquivos de log gerados no cluster persistam mesmo após o término do nó. Esse comportamento é habilitado automaticamente, então não é necessário ativá-lo. Para as versões 6.8.0 e anteriores do Amazon EMR, é possível configurar um cluster para arquivar periodicamente os arquivos de log armazenados no nó primário no Amazon S3. Isso garante que os arquivos de log estarão disponíveis depois que o cluster for terminado, seja por meio de desligamento normal, seja devido a um erro. O Amazon EMR arquiva os arquivos de log no Amazon S3 em intervalos de cinco minutos.
Para que os arquivos de log sejam arquivados no Amazon S3 para o Amazon EMR 6.8.0 e versões anteriores, você deve habilitar esse recurso ao executar o cluster. Você pode fazer isso usando o console, a CLI ou a API. Por padrão, os clusters executados por meio do console têm a funcionalidade de registro em log habilitada. Para clusters executados usando a CLI ou a API, o registro em log no Amazon S3 deve ser habilitado manualmente.
Como criptografar arquivos de log armazenados no Amazon S3 com uma chave do AWS KMS gerenciada pelo cliente
Com o Amazon EMR versão 5.30.0 e posterior (exceto o Amazon EMR 6.0.0), você pode criptografar arquivos de log armazenados no Amazon S3 com uma chave gerenciada pelo cliente KMS. AWS Para habilitar essa opção no console, siga as etapas em Arquivamento dos arquivos de log no Amazon S3. Seu perfil de EC2 instância da Amazon e sua função no Amazon EMR devem atender aos seguintes pré-requisitos:
-
O perfil de EC2 instância da Amazon usado para seu cluster deve ter permissão de uso
kms:GenerateDataKey
. -
O perfil do Amazon EMR usada para o cluster deve ter permissão para usar
kms:DescribeKey
. -
O perfil da EC2 instância da Amazon e a função do Amazon EMR devem ser adicionados à lista de usuários-chave da chave gerenciada pelo cliente AWS KMS especificada, conforme demonstrado nas etapas a seguir:
-
Abra o console AWS Key Management Service (AWS KMS) em https://console.aws.amazon.com/kms
. -
Para alterar a AWS região, use o seletor de região no canto superior direito da página.
-
Selecione o alias da chave do KMS a ser modificada.
-
Na página de detalhes da chave, em Key Users (Usuários de chaves), escolha Add (Adicionar).
-
Na caixa de diálogo Adicionar usuários-chave, selecione seu perfil de EC2 instância da Amazon e a função do Amazon EMR.
-
Escolha Adicionar.
-
Para obter mais informações, consulte Funções de serviço do IAM usadas pelo Amazon EMR e Como usar políticas de chaves no guia do desenvolvedor do AWS Key Management Service.
Agregar logs no Amazon S3 usando a AWS CLI
nota
Atualmente não é possível usar a agregação de logs com o utilitário yarn logs
. Você só pode usar a agregação compatível com esse procedimento.
A agregação de logs (Hadoop 2.x) compila os logs de todos os contêineres de um aplicativo individual em um único arquivo. Para habilitar a agregação de logs para o Amazon S3 usando AWS CLI o, você usa uma ação de bootstrap na inicialização do cluster para habilitar a agregação de logs e especificar o bucket para armazenar os logs.
-
Para habilitar a agregação de logs, crie o arquivo de configuração chamado
myConfig.json
, que contém o seguinte:[ { "Classification": "yarn-site", "Properties": { "yarn.log-aggregation-enable": "true", "yarn.log-aggregation.retain-seconds": "-1", "yarn.nodemanager.remote-app-log-dir": "s3:\/\/
DOC-EXAMPLE-BUCKET
\/logs" } } ]Digite o comando a seguir e
substitua pelo nome do seu EC2 key pair. Além disso, você pode substituir os textos em vermelho por suas próprias configurações.myKey
aws emr create-cluster --name "
Test cluster
" \ --release-labelemr-7.6.0
\ --applications Name=Hadoop
\ --use-default-roles \ --ec2-attributes KeyName=myKey
\ --instance-typem5.xlarge
\ --instance-count3
\ --configurations file://./myConfig.jsonQuando você especifica a contagem de instâncias sem usar o parâmetro
--instance-groups
, um único nó primário é executado, e as instâncias restantes são executadas como nós centrais. Todos os nós usarão o tipo de instância especificado no comando.nota
Se você ainda não criou a função de serviço e o perfil de EC2 instância padrão do EMR, execute
aws emr create-default-roles
para criá-los antes de executar ocreate-cluster
subcomando.
Para obter mais informações sobre o uso dos comandos do Amazon EMR no AWS CLI, consulte Referência de AWS CLI comandos.
Locais de log
A lista a seguir inclui todos os tipos de log e seus locais no Amazon S3. Use-os para solucionar problemas do Amazon EMR.
- Logs de etapa
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/steps/<step-id>
/ - Logs de aplicações
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/containers/Esse local inclui contêiner
stderr
estdout
,directory.info
,prelaunch.out
e logslaunch_container.sh
. - Logs do gerenciador de recursos
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<leader-instance-id>
/applications/hadoop-yarn/ - HDFS do Hadoop
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<all-instance-id>
/applications/hadoop-hdfs/Esse local inclui NameNode, DataNode, e TimelineServer registros do YARN.
- Logs do gerenciador de nós
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<all-instance-id>
/applications/hadoop-yarn/ - Logs de estado de instância
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<all-instance-id>
/daemons/instance-state/ - Logs de provisionamento do Amazon EMR
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<leader-instance-id>
/provision-node/* - Logs do Hive
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<leader-instance-id>
/applications/hive/*-
Para encontrar logs do Hive no cluster, remova o asterisco (
*
) e anexe/var/log/hive/
ao link acima. -
Para encontrar HiveServer 2 registros, remova o asterisco (
*
) e anexevar/log/hive/hiveserver2.log
ao link acima. -
Para encontrar logs do HiveCLI, remova o asterisco (
*
) e anexe/var/log/hive/user/hadoop/hive.log
ao link acima. -
Para encontrar os logs do Hive Metastore Server, remova o asterisco (
*
) e anexe/var/log/hive/user/hive/hive.log
ao link acima.
Se sua falha estiver no nó primário ou no nó de tarefa da aplicação Tez, forneça logs do contêiner Hadoop apropriado.
-