Configurar registro em log e depuração do cluster
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 Conectar-se ao nó primário usando SSH.
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
/ -
Logs de componentes do Hadoop e do YARN: os logs dos componentes associados ao Apache YARN e ao MapReduce, por exemplo, estão armazenados 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 diretório hadoop-state-pusher é usado para os dados de saída do processo que envia o 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.
nota
Reformulamos o console do Amazon EMR para torná-lo mais fácil de usar. Consulte O que há de novo no console? para conhecer as diferenças entre as experiências do console antigo e novo.
Como criptografar arquivos de log armazenados no Amazon S3 com uma chave do AWS KMS gerenciada pelo cliente
No 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 do AWS KMS gerenciada pelo cliente. Para habilitar essa opção no console, siga as etapas em Arquivamento dos arquivos de log no Amazon S3. O perfil de instância do Amazon EC2 e o perfil do Amazon EMR devem atender aos seguintes pré-requisitos:
-
O perfil de instância do Amazon EC2 usado para o cluster deve ter permissão para usar
kms:GenerateDataKey
. -
O perfil do Amazon EMR usada para o cluster deve ter permissão para usar
kms:DescribeKey
. -
O perfil de instância do Amazon EC2 e o perfil do Amazon EMR devem ser adicionados à lista de usuários da chave do AWS KMS gerenciada pelo cliente especificada, conforme demonstrado pelas etapas a seguir:
-
Abra o console do AWS Key Management Service (AWS KMS) em https://console.aws.amazon.com/kms
. -
Para alterar a região da AWS, use o Region selector (Seletor de regiões) 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 de chave, selecione o perfil de instância do Amazon EC2 e o perfil do Amazon EMR.
-
Escolha Add (Adicionar).
-
Para obter mais informações, consulte IAM service roles used by Amazon EMR e Using key policies 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 no Amazon S3 usando a AWS CLI, você pode usar uma ação de bootstrap quando o cluster é executado para habilitar a agregação de logs e especificar o bucket que 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 seguinte comando, substituindo
pelo nome do par de chaves do EC2. 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-5.36.1
\ --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ê não tiver criado o perfil de serviço padrão do EMR e o perfil de instância do EC2, execute
aws emr create-default-roles
para criá-los antes de executar o subcomandocreate-cluster
.
Para obter mais informações sobre o uso de comandos do Amazon EMR na AWS CLI, consulte AWS CLI Command Reference.
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 aplicativos
-
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 logs de NameNode, DataNode e YARN TimelineServer.
- 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 logs do HiveServer2, 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.
-
Habilitar ferramenta de depuração
A ferramenta de depuração permite procurar mais facilmente os arquivos de log do console do Amazon EMR. Para obter mais informações, consulte Visualizar arquivos de log na ferramenta de depuração. Quando a depuração é habilitada em um cluster, o Amazon EMR arquiva os arquivos de log no Amazon S3 e, em seguida, indexa esses arquivos. Você pode usar o console para pesquisar nos logs das etapas, trabalhos, tarefas e tentativas de tarefas do cluster de uma maneira intuitiva.
Para usar a ferramenta de depuração no console do Amazon EMR, você deve habilitar a depuração ao iniciar o cluster usando o console, a CLI ou a API. O novo console do Amazon EMR não oferece a ferramenta de depuração.
Informações sobre as opções de depuração
O Amazon EMR versões 4.1.0 a 5.27.0 oferece suporte à depuração em todas as regiões. Outras versões do Amazon EMR não oferecem suporte à opção de depuração. A partir de 23 de janeiro de 2023, o Amazon EMR descontinuará a ferramenta de depuração em todas as versões.
O Amazon EMR cria uma fila do Amazon SQS para processar os dados de depuração. Podem ser cobrados encargos pelas mensagens. No entanto, o Amazon SQS disponibiliza um nível gratuito de até 1 milhão de solicitações. Para obter mais informações, consulte https://aws.amazon.com/https://aws.amazon.com/sqs
A depuração requer o uso de perfis. É necessário que o perfil de serviço e o perfil de instância permitam utilizar todas as operações de API do Amazon SQS. Se seus perfis estão anexados às políticas gerenciadas do Amazon EMR, você não precisará modificar os perfis. Se você tiver funções personalizadas, precisará adicionar as permissões sqs:*
. Para obter mais informações, consulte Configurar perfis de serviço do IAM para permissões do Amazon EMR aos serviços e recursos da AWS.