Configurar el registro y la depuración de un clúster - 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 un clúster

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, probablemente querrá aprovechar todas las herramientas de depuración que ofrece Amazon EMR, 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 ellos a través de SSH para conectarse al nodo principal tal como se describe en Conectarse al nodo principal mediante SSH.

nota

Si utiliza la versión 6.8.0 o anterior de Amazon EMR, los archivos de registro se guardan en Amazon S3 durante la terminación del clúster, por lo que no podrá acceder a los archivos de registro una vez que termine el nodo principal. Las versiones 6.9.0 y posteriores de Amazon EMR archivan los registros en Amazon S3 durante la reducción vertical del clúster, de modo que los archivos de registro generados en él persisten incluso después de terminar 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 paso: estos registros se generan mediante el servicio de Amazon EMR y contienen información acerca del 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 paso de 13 caracteres (p. ej. stepId1, stepId2) son exclusivos de un clúster.

  • Registros de componentes de Hadoop e YARN: 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 de estado de instancia: estos registros proporcionan información sobre la CPU, el estado de la memoria y los subprocesos del recolector de elementos no utilizados del nodo. 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.

Las versiones 6.9.0 y posteriores de Amazon EMR archivan los registros en Amazon S3 durante la reducción vertical del clúster, de modo que los archivos de registro generados en él persisten incluso después de terminar el nodo. Este comportamiento se habilita de forma automática, por lo que no es necesario que haga nada para activarlo. Para las versiones 6.8.0 y anteriores de Amazon EMR, 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 que los archivos de registro se archiven en Amazon S3 en el caso de las versiones 6.8.0 y anteriores de Amazon EMR, debe habilitar esta característica al lanzar el clúster. Puede hacerlo utilizando la consola, la CLI o la API. De manera predeterminada, los clústeres lanzados con la consola tienen habilitado el archivado de registros. Para clústeres lanzados con la CLI o la API, el registro en Amazon S3 se debe habilitar manualmente.

nota

Hemos rediseñado la consola de Amazon EMR para que sea más fácil de utilizar. Consulte Consola Amazon EMR para obtener información sobre las diferencias entre la consola antigua y la nueva.

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

  2. En EMR en EC2 situado en el panel de navegación izquierdo, elija Clústeres y, a continuación, elija 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á.

    Cuando define este valor, Amazon EMR copia los archivos de registro de las instancias de EC2 en el clúster de Amazon S3. Esto evita que se pierdan los archivos de registro cuando el clúster finaliza y EC2 termina 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 un ARN de clave o cree una clave nueva. Esta opción solo está disponible con la versión 5.30.0 y versiones posteriores de Amazon EMR, excluyendo la versión 6.0.0. Para usar esta opción, añada permisos a su perfil AWS KMS de instancia EC2 y a su función de Amazon EMR. Para obtener más información, consulte Para cifrar los archivos de registro almacenados en Amazon S3 con una clave administrada por el cliente de AWS KMS.

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

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

Old console
Para archivar los archivos de registro en Amazon S3 con la consola antigua
  1. Vaya hasta la nueva consola de Amazon EMR y seleccione Ir a la consola antigua en el panel de navegación lateral. Para más información sobre lo que puede esperar al cambiar a la consola antigua, consulte Uso de la consola antigua.

  2. Elija Create cluster.

  3. Elija Go to advanced options (Ir a las opciones avanzadas).

  4. En la sección General options (Opciones generales) en el campo Logging (Registro), acepte la opción predeterminada: Enabled (Habilitada).

    Esta opción determina si Amazon EMR captura datos de registro detallados en Amazon S3. Solo puede definirlo cuando se crea el clúster. Para obtener más información, consulte Ver archivos de registro de .

  5. En el campo escriba Carpeta de S3, escriba (o busque) una ruta de Amazon S3 para almacenar los registros. También puede permitir que la consola genere una ruta de Amazon S3 para usted. Si escribe el nombre de una carpeta que no exista en el bucket, se creará.

    Cuando se define este valor, Amazon EMR copia los archivos de registro de las instancias de EC2 en el clúster de Amazon S3. Esto evita que se pierdan cuando el clúster finaliza y las instancias EC2 que lo alojan terminan. Estos registros resultan útiles en la solución de problemas.

    Para más información, consulte Ver archivos de registro.

  6. En el campo Cifrado de registros, seleccione Cifrar los registros almacenados en S3 con una clave de AWS KMS administrada por el cliente. A continuación, seleccione una clave AWS KMS de la lista o introduzca una clave ARN. También puede crear una AWS KMS clave nueva.

    Esta opción solo está disponible con la versión 5.30.0 y versiones posteriores de Amazon EMR, excluyendo la versión 6.0.0. Para utilizar esta opción, agregue permiso a AWS KMS para su perfil de instancia de EC2 y su rol de Amazon EMR. Para obtener más información, consulte Para cifrar los archivos de registro almacenados en Amazon S3 con una clave administrada por el cliente de AWS KMS.

  7. Continúe con la creación del clúster tal como se describe en Planificación y configuración de clústeres.

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

Para archivar archivos de registro en Amazon S3 mediante 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 sustituya myKey por el nombre del par de claves de EC2.

    aws emr create-cluster --name "Test cluster" --release-label emr-7.1.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 ha creado con anterioridad el rol de servicio de Amazon EMR predeterminado y el perfil de instancia de EC2, ingrese aws emr create-default-roles para crearlos antes de escribir el subcomando create-cluster.

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

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

  • El perfil de instancia de Amazon EC2 utilizado para el clúster debe tener permiso para utilizar kms:GenerateDataKey.

  • El rol de Amazon EMR utilizado para el clúster debe tener permiso para utilizar kms:DescribeKey.

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

    1. Abra 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 clave de KMS 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 Agregar usuarios clave, seleccione su perfil de instancia de Amazon EC2 y el rol de Amazon EMR.

    6. Elija Añadir.

Para obtener más información, consulte las funciones de servicio de IAM utilizadas por Amazon EMR y el uso de políticas clave en AWS la guía para desarrolladores de Key Management Service.

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 comando siguiente y sustituya myKey por el nombre del par de claves de EC2. 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.1.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 con anterioridad el rol de servicio de EMR predeterminado y el perfil de instancia de EC2, ejecute aws emr create-default-roles para crearlos antes de ejecutar el subcomando create-cluster.

Para obtener más información sobre el uso de los comandos de Amazon EMR 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. Puede utilizarlos para solucionar problemas de Amazon EMR.

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/

HDFS de Hadoop

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

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

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 aprovisionamiento de Amazon EMR

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 encontrar los registros de HiveCLI, elimine el asterisco (*) y agregue /var/log/hive/user/hadoop/hive.log al enlace anterior.

  • 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.