Configurar el registro y la depuración de EMR clústeres de Amazon - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configurar el registro y la depuración de EMR clústeres de Amazon

Una de las cosas que decidir a la hora de planificar el clúster es la cantidad de soporte de depuración que tiene que hacer que esté disponible. Al desarrollar por primera vez la aplicación de procesamiento de datos, le recomendamos probar la aplicación en un clúster que procese un subconjunto pequeño, pero representativo, de sus datos. Al hacerlo, es probable que desee aprovechar todas las herramientas de depuración que EMR ofrece Amazon, como el archivado de archivos de registro en Amazon S3.

Cuando haya terminado el desarrollo y tenga la aplicación de procesamiento de datos a pleno rendimiento, puede optar por reducir la depuración. Al hacerlo puede ahorrar el costo de almacenamiento del conjunto de los archivos de registro en Amazon S3 y reducir la carga de procesamiento en el clúster, ya que no es necesario escribir el estado en Amazon S3. El inconveniente, por supuesto, es que si algo va mal, tendrá menos herramientas disponibles para investigar el problema.

Archivos de registro predeterminados

De forma predeterminada, cada clúster escribe archivos de registro en el nodo principal. Se escriben en el directorio /mnt/var/log/. Puede acceder a ellas conectándose SSH al nodo principal, tal y como se describe en. Conéctese al nodo principal EMR del clúster de Amazon mediante SSH Amazon EMR recopila determinados registros de sistemas y aplicaciones generados por los EMR daemons de Amazon y otros EMR procesos de Amazon para garantizar la eficacia de las operaciones de servicio.

nota

Si utiliza la EMR versión 6.8.0 de Amazon o una versión anterior, los archivos de registro se guardan en Amazon S3 durante la finalización del clúster, por lo que no podrá acceder a los archivos de registro una vez que finalice el nodo principal. La versión 6.9.0 y las EMR versiones posteriores de Amazon archivan los registros en Amazon S3 durante la reducción de escala del clúster, de modo que los archivos de registro generados en el clúster persisten incluso después de cerrar el nodo.

No tiene que habilitar nada para que los archivos de registro se escriban en el nodo principal. Este es el comportamiento predeterminado de Amazon EMR y Hadoop.

Un clúster genera varios tipos de archivos de registro, incluidos:

  • Registros de pasos: estos registros los genera el EMR servicio de Amazon y contienen información sobre el clúster y los resultados de cada paso. Los archivos de registro se almacenan en el directorio /mnt/var/log/hadoop/steps/ en el nodo principal. Cada paso registra sus resultados en un subdirectorio numerado independiente: /mnt/var/log/hadoop/steps/s-stepId1/ para el primer paso, /mnt/var/log/hadoop/steps/s-stepId2/ para el segundo paso, y así sucesivamente. Los identificadores de pasos de 13 caracteres (por ejemplo, stepId 1 o stepId 2) son exclusivos de un clúster.

  • Registros de Hadoop y de YARN componentes: los registros de los componentes asociados a Apache YARN y MapReduce, por ejemplo, se encuentran en carpetas independientes. /mnt/var/log Las ubicaciones de archivo de registro para los componentes de Hadoop en /mnt/var/log son las siguientes: hadoop-hdfs, hadoop-mapreduce, hadoop-httpfs y hadoop-yarn. El hadoop-state-pusher directorio es para el resultado del proceso de introducción de estados de Hadoop.

  • Registros de acción de arranque: si su trabajo utiliza acciones de arranque, se registran los resultados de estas acciones. Los archivos de registro se almacenan en/mnt/var/log/bootstrap-actions/ en el nodo principal. Cada acción de arranque registra sus resultados en un subdirectorio numerado independiente: /mnt/var/log/bootstrap-actions/1/ para la primera acción de arranque, /mnt/var/log/bootstrap-actions/2/ para la segunda acción de arranque y así sucesivamente.

  • Registros del estado de la instancia: estos registros proporcionan información sobre los subprocesos del nodoCPU, el estado de la memoria y el recolector de elementos no utilizados. Los archivos de registro se almacenan en /mnt/var/log/instance-state/ en el nodo principal.

Archivar archivos de registro en Amazon S3

nota

Actualmente, no puede utilizar la agregación de registros para Amazon S3 con la utilidad yarn logs.

La versión 6.9.0 y las EMR versiones posteriores de Amazon archivan los registros en Amazon S3 durante la reducción de escala del clúster, de modo que los archivos de registro generados en el clúster persisten incluso después de cerrar el nodo. Este comportamiento se habilita de forma automática, por lo que no es necesario que haga nada para activarlo. Para las EMR versiones 6.8.0 y anteriores de Amazon, puede configurar un clúster para archivar periódicamente los archivos de registro almacenados en el nodo principal en Amazon S3. Esto garantiza que los archivos de registro estén disponibles después de que el clúster se termine, ya sea a través de un apagado normal o debido a un error. Amazon EMR archiva los archivos de registro en Amazon S3 en intervalos de 5 minutos.

Para archivar los archivos de registro en Amazon S3 para las EMR versiones 6.8.0 y anteriores de Amazon, debe habilitar esta función al lanzar el clúster. Puede hacerlo mediante la consolaCLI, el o el. API De manera predeterminada, los clústeres lanzados con la consola tienen habilitado el archivado de registros. En el caso de los clústeres lanzados con CLI oAPI, el registro en Amazon S3 debe habilitarse manualmente.

Console
Para archivar los archivos de registro en Amazon S3 con la nueva consola
  1. Inicia sesión en y abre la AWS Management Console EMR consola de Amazon en https://console.aws.amazon.com/emr.

  2. EMREC2En el panel de navegación de la izquierda, selecciona Clústeres y, a continuación, selecciona Crear clúster.

  3. En Registros de clúster, seleccione la casilla Publicar los registros específicos del clúster en Amazon S3.

  4. En el campo Ubicación de Amazon S3, escriba (o busque) una ruta de Amazon S3 para almacenar sus registros. Si escribe el nombre de una carpeta que no existe en el bucket, Amazon S3 la creará.

    Al establecer este valor, Amazon EMR copia los archivos de registro de las EC2 instancias del clúster a Amazon S3. Esto evita que los archivos de registro se pierdan cuando el clúster finaliza y EC2 terminan las instancias que alojan el clúster. Estos registros resultan útiles en la solución de problemas. Para más información, consulte Ver archivos de registro.

  5. De manera opcional, seleccione la casilla Cifrar los registros específicos del clúster. A continuación, seleccione una AWS KMS clave de la lista, introduzca una clave ARN o cree una clave nueva. Esta opción solo está disponible con la EMR versión 5.30.0 y posteriores de Amazon, excepto la versión 6.0.0. Para usar esta opción, añade permisos a tu perfil AWS KMS de EC2 instancia y a tu EMR rol de Amazon. Para obtener más información, consulte Para cifrar los archivos de registro almacenados en Amazon S3 con una clave gestionada por el AWS KMS cliente.

  6. Elija cualquier otra opción que se aplique a su clúster.

  7. Para lanzar el clúster, elija Crear clúster.

CLI
Para archivar archivos de registro en Amazon S3 con AWS CLI

Para archivar archivos de registro en Amazon S3 mediante el AWS CLI, escriba el create-cluster comando y especifique la ruta de registro de Amazon S3 mediante el --log-uri parámetro.

  1. Para registrar archivos en Amazon S3, escriba el siguiente comando y myKey sustitúyalo por el nombre del par de EC2 claves.

    aws emr create-cluster --name "Test cluster" --release-label emr-7.5.0 --log-uri s3://DOC-EXAMPLE-BUCKET/logs --applications Name=Hadoop Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3
  2. Cuando especifica el recuento de instancias sin utilizar el parámetro --instance-groups, se lanza un nodo principal único y el resto de las instancias se lanzan como nodos básicos. Todos los nodos utilizarán el tipo de instancia especificado en el comando.

    nota

    Si no has creado previamente el rol de EMR servicio de Amazon y el perfil de EC2 instancia predeterminados, ingresa aws emr create-default-roles para crearlos antes de escribir el create-cluster subcomando.

Para cifrar los archivos de registro almacenados en Amazon S3 con una clave gestionada por el AWS KMS cliente

Con Amazon 5.30.0 y EMR versiones posteriores (excepto Amazon EMR 6.0.0), puede cifrar los archivos de registro almacenados en Amazon S3 con una AWS KMS clave gestionada por el cliente. Para habilitar esta opción en la consola, siga los pasos descritos en Archivar archivos de registro en Amazon S3. El perfil de su EC2 instancia de Amazon y su EMR rol en Amazon deben cumplir los siguientes requisitos previos:

  • El perfil de EC2 instancia de Amazon utilizado para tu clúster debe tener permiso de usokms:GenerateDataKey.

  • El EMR rol de Amazon utilizado para tu clúster debe tener permiso de usokms:DescribeKey.

  • El perfil de la EC2 instancia de Amazon y el EMR rol de Amazon deben añadirse a la lista de usuarios clave de la clave gestionada por el AWS KMS cliente especificada, tal y como se demuestra en los siguientes pasos:

    1. Abre la consola AWS Key Management Service (AWS KMS) en https://console.aws.amazon.com/kms.

    2. Para cambiar la AWS región, utilice el selector de regiones situado en la esquina superior derecha de la página.

    3. Seleccione el alias de la KMS clave que desee modificar.

    4. En la página de detalles de la clave, en Key Users (Usuarios de claves), seleccione Add (Añadir).

    5. En el cuadro de diálogo Añadir usuarios clave, selecciona tu perfil de EC2 instancia de Amazon y tu EMR rol en Amazon.

    6. Elija Agregar.

Para obtener más información, consulta las funciones de IAM servicio utilizadas por Amazon EMR y el uso de políticas clave en la guía AWS para desarrolladores del Servicio de administración de claves.

Para agregar registros en Amazon S3 con la AWS CLI

nota

No puede utilizar actualmente la agregación de registros con la utilidad yarn logs. Solo puede utilizar la agregación compatible con este procedimiento.

La agregación de registros (Hadoop 2.x) compila los registros desde todos los contenedores para una aplicación individual en un único archivo. Para habilitar la agregación de registros en Amazon S3 mediante el AWS CLI, utilice una acción de arranque al lanzar el clúster para habilitar la agregación de registros y especificar el depósito en el que se almacenarán los registros.

  • Para habilitar la agregación de registros, cree el siguiente archivo de configuración llamado myConfig.json, que contiene lo siguiente:

    [ { "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" } } ]

    Escriba el siguiente comando y myKey sustitúyalo por el nombre de su EC2 key pair. Además, puede sustituir cualquiera de los textos en rojo por sus propias configuraciones.

    aws emr create-cluster --name "Test cluster" \ --release-label emr-7.5.0 \ --applications Name=Hadoop \ --use-default-roles \ --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge \ --instance-count 3 \ --configurations file://./myConfig.json

    Cuando especifica el recuento de instancias sin utilizar el parámetro --instance-groups, se lanza un nodo principal único y el resto de las instancias se lanzan como nodos básicos. Todos los nodos utilizarán el tipo de instancia especificado en el comando.

    nota

    Si no ha creado anteriormente el rol de EMR servicio y el perfil de EC2 instancia predeterminados, ejecute aws emr create-default-roles para crearlos antes de ejecutar el create-cluster subcomando.

Para obtener más información sobre el uso de EMR los comandos de Amazon en AWS CLI, consulte la Referencia de AWS CLI comandos.

Localización de registros

La siguiente lista incluye todos los tipos de registro y sus ubicaciones en Amazon S3. Puedes utilizarlos para solucionar problemas de AmazonEMR.

Registros de pasos

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/steps/<step-id>/

Registros de aplicaciones

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/containers/

Esta ubicación incluye el contenedor stderr y los registros stdout, directory.info, prelaunch.out y launch_container.sh.

Registros del administrador de recursos

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<leader-instance-id>/applications/hadoop-yarn/

Hadoop HDFS

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<all-instance-id>/applications/hadoop-hdfs/

Esta ubicación incluye NameNode DataNode, y registros. YARN TimelineServer

Registros del administrador de nodos

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<all-instance-id>/applications/hadoop-yarn/

Registros de estado de la instancia

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<all-instance-id>/daemons/instance-state/

Registros de EMR aprovisionamiento de Amazon

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<leader-instance-id>/provision-node/*

Registros de Hive

s3://DOC-EXAMPLE-LOG-BUCKET/<cluster-id>/node/<leader-instance-id>/applications/hive/*

  • Para encontrar los registros de Hive en su clúster, elimine el asterisco (*) y agregue /var/log/hive/ al enlace anterior.

  • Para encontrar HiveServer 2 registros, elimine el asterisco (*) y añádalo var/log/hive/hiveserver2.log al enlace anterior.

  • Para buscar los CLI registros de Hive, quita el asterisco (*) y añádelo al enlace anterior. /var/log/hive/user/hadoop/hive.log

  • Para encontrar los registros de Hive Metastore Server, elimine el asterisco (*) y agregue /var/log/hive/user/hive/hive.log al enlace anterior.

Si el error se encuentra en el nodo principal o de tarea de su aplicación de Tez, proporcione los registros del contenedor de Hadoop correspondiente.