Tutorial: Introducción a Amazon EMR - Amazon EMR

Tutorial: Introducción a Amazon EMR

Información general

Con Amazon EMR, puede configurar un clúster para procesar y analizar datos con marcos de macrodatos en solo unos minutos. En este tutorial, se muestra cómo lanzar un clúster de muestra con Spark y cómo ejecutar un script de PySpark sencillo almacenado en un bucket de Amazon S3. Cubre tareas esenciales de Amazon EMR en tres categorías principales de flujo de trabajo: planificación y configuración, administración y limpieza.

Encontrará enlaces a temas más detallados a medida que avance en el tutorial e ideas para pasos adicionales en la sección Pasos siguientes. Si tiene alguna pregunta o no sabe cómo continuar, contacte con el equipo de Amazon EMR en nuestro foro de discusión.

Diagrama de flujo de trabajo para Amazon EMR que describe las tres categorías principales de flujo de trabajo: planificación y configuración, administración y limpieza.
Requisitos previos
Costo
  • El clúster de ejemplo que cree se ejecuta en un entorno real. El clúster genera unos gastos mínimos. Para evitar cargos adicionales, asegúrese de completar las tareas de limpieza del último paso de este tutorial. Los cargos se acumulan en virtud la tarifa por segundo según los precios de Amazon EMR. Los cargos también varían según la región. Para obtener más información, consulte Precios de Amazon EMR.

  • Es posible que se acumulen cargos mínimos por los archivos pequeños que almacene en Amazon S3. Es posible que no se apliquen algunos o todos los cargos de Amazon S3 si se encuentra dentro de los límites de uso del nivel gratuito de AWS. Para obtener más información, consulte Precios de Amazon S3 y Nivel gratuito de AWS.

Paso 1: planificar y configurar un clúster de Amazon EMR

Prepare el almacenamiento para Amazon EMR

Cuando utiliza Amazon EMR, puede elegir entre una variedad de sistemas de archivos para almacenar los datos de entrada, los datos de salida y los archivos de registro. En este tutorial, utilizará EMRFS para almacenar datos en un bucket de S3. EMRFS es una implementación del sistema de archivos de Hadoop que le permite leer y escribir archivos normales en Amazon S3. Para obtener más información, consulte Utilizar almacenamiento y sistemas de archivos.

Para crear un bucket para este tutorial, consulte Crear un bucket de S3 en la Guía del usuario de la consola de Amazon Simple Storage Service. Cree el bucket en la misma región de AWS en la que desee lanzar el clúster de Amazon EMR. Por ejemplo, Oeste de EE. UU. (Oregón) us-west-2.

Los buckets y las carpetas que utilice con Amazon EMR tienen las siguientes limitaciones:

  • Los nombres pueden contener letras minúsculas, números, puntos (.) y guiones (-).

  • Los nombres no pueden terminar en números.

  • El nombre de un bucket debe ser único en todas las cuentas de AWS.

  • La carpeta de salida debe estar vacía.

Preparar una aplicación con datos de entrada para Amazon EMR

La forma más común de preparar una aplicación para Amazon EMR consiste en cargar la aplicación y sus datos de entrada en Amazon S3. A continuación, cuando envíe el trabajo a su clúster, especifique las ubicaciones de Amazon S3 para el script y los datos.

En este paso, cargue un ejemplo del script de PySpark a su bucket de Amazon S3. Le hemos proporcionado un script de PySpark para que lo utilice. El script procesa los datos de inspección del establecimiento de alimentos y devuelve un archivo de resultados en su bucket de S3. En el archivo de resultados se enumeran los diez establecimientos con más infracciones de tipo “rojo”.

También debe cargar datos de entrada de muestra en Amazon S3 para que el script de PySpark los procese. Los datos de entrada son una versión modificada de los resultados de las inspecciones del Departamento de Salud en el condado de King (Washington) entre 2006 y 2020. Para obtener más información, consulte Datos abiertos del condado de King: datos de inspección de establecimientos alimentarios. A continuación se incluyen ejemplos de filas del conjunto de datos.

name, inspection_result, inspection_closed_business, violation_type, violation_points 100 LB CLAM, Unsatisfactory, FALSE, BLUE, 5 100 PERCENT NUTRICION, Unsatisfactory, FALSE, BLUE, 5 7-ELEVEN #2361-39423A, Complete, FALSE, , 0
Para preparar el script PySpark de muestra para EMR
  1. Copie el siguiente código de muestra en un nuevo archivo en el editor que prefiera.

    import argparse from pyspark.sql import SparkSession def calculate_red_violations(data_source, output_uri): """ Processes sample food establishment inspection data and queries the data to find the top 10 establishments with the most Red violations from 2006 to 2020. :param data_source: The URI of your food establishment data CSV, such as 's3://DOC-EXAMPLE-BUCKET/food-establishment-data.csv'. :param output_uri: The URI where output is written, such as 's3://DOC-EXAMPLE-BUCKET/restaurant_violation_results'. """ with SparkSession.builder.appName("Calculate Red Health Violations").getOrCreate() as spark: # Load the restaurant violation CSV data if data_source is not None: restaurants_df = spark.read.option("header", "true").csv(data_source) # Create an in-memory DataFrame to query restaurants_df.createOrReplaceTempView("restaurant_violations") # Create a DataFrame of the top 10 restaurants with the most Red violations top_red_violation_restaurants = spark.sql("""SELECT name, count(*) AS total_red_violations FROM restaurant_violations WHERE violation_type = 'RED' GROUP BY name ORDER BY total_red_violations DESC LIMIT 10""") # Write the results to the specified output URI top_red_violation_restaurants.write.option("header", "true").mode("overwrite").csv(output_uri) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument( '--data_source', help="The URI for you CSV restaurant data, like an S3 bucket location.") parser.add_argument( '--output_uri', help="The URI where output is saved, like an S3 bucket location.") args = parser.parse_args() calculate_red_violations(args.data_source, args.output_uri)
  2. Guarde el archivo como health_violations.py.

  3. Suba health_violations.py a Amazon S3 en el bucket que creó para este tutorial. Para obtener instrucciones, consulte Cargar un objeto en un bucket en la Guía de introducción a Amazon Simple Storage Service.

Para preparar los datos de entrada de muestra para EMR
  1. Descargue el archivo zip, food_establishment_data.zip.

  2. Descomprima y guarde food_establishment_data.zip como food_establishment_data.csv en su máquina.

  3. Suba el archivo CSV en el bucket de S3 que creó para este tutorial. Para obtener instrucciones, consulte Cargar un objeto en un bucket en la Guía de introducción a Amazon Simple Storage Service.

Para obtener más información sobre cómo configurar los datos para EMR, consulte Preparar datos de entrada.

Lanzar un clúster de Amazon EMR

Tras preparar la ubicación de almacenamiento y la aplicación, puede lanzar un clúster de muestra de Amazon EMR. En este paso, lanza un clúster de Apache Spark con la versión de Amazon EMR más reciente.

New console
Para lanzar un clúster con Spark instalado con la nueva consola
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon EMR 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 la página Crear clúster, anote los valores predeterminados para la versión, el tipo de instancia, el número de instancias y los permisos. Estos campos se rellenan automáticamente con valores que funcionan para clústeres de uso general.

  4. En el campo Nombre del clúster, escriba un nombre único que le ayude a identificarlo, como Mi primer clúster.

  5. En Aplicaciones, elije la opción Spark para instalar Spark en el clúster.

    nota

    Elija las aplicaciones que desee incluir en su clúster de Amazon EMR antes de lanzarlo. No puede agregar ni eliminar aplicaciones de un clúster después del lanzamiento.

  6. En Registros de clúster, seleccione la casilla Publicar los registros específicos del clúster en Amazon S3. Sustituya el valor de Ubicación de Amazon S3 por el bucket de Amazon S3 que creó, seguido por /logs. Por ejemplo, s3://DOC-EXAMPLE-BUCKET/logs. Al agregar /logs, se crea una nueva carpeta llamada “logs” en el bucket, donde Amazon EMR puede copiar los archivos de registro del clúster.

  7. En Configuración y permisos de seguridad, elija su par de claves de EC2. En la misma sección, seleccione el menú desplegable Rol de servicio para Amazon EMR y elija EMR_DefaultRole. A continuación, seleccione el menú desplegable Rol de IAM para el perfil de instancia y elija EMR_EC2_DefaultRole.

  8. Seleccione Crear clúster para lanzar el clúster y abrir la página de detalles del clúster.

  9. Consulte el estado del clúster junto a su nombre. El estado cambia de Iniciando a En ejecución a Esperando a medida que Amazon EMR aprovisiona el clúster. Es posible que tenga que elegir el icono de actualización situado a la derecha o actualizar el navegador para ver las actualizaciones de estado.

Cuando el estado cambia a Esperando, el clúster está activo, en ejecución y listo para aceptar trabajo. Para obtener más información sobre cómo leer el resumen del clúster, consulte Ver el estado y los detalles del clúster. Para obtener más información acerca del estado del clúster, consulte Descripción del ciclo de vida del clúster.

Old console
Para lanzar un clúster con Spark instalado 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. Seleccione Crear clúster para abrir el asistente de opciones rápidas.

  3. Anote los valores predeterminados de la versión, el tipo de instancia, el número de instancias y los permisos en la página Crear clúster: Opciones rápidas. Estos campos se rellenan automáticamente con valores que funcionan para clústeres de uso general.

  4. Ingrese un nombre de clúster que le ayude a identificarlo. Por ejemplo, Mi primer clúster.

  5. Deje el registro activado, pero sustituya el valor de la carpeta de S3 por el bucket de Amazon S3 que creó, seguido de /logs. Por ejemplo, s3://DOC-EXAMPLE-BUCKET/logs. Al agregar /logs, se crea una nueva carpeta llamada “logs” en su bucket, donde EMR puede copiar los archivos de registro del clúster.

  6. Elige la opción Spark en Aplicaciones para instalar Spark en el clúster.

    nota

    Elija las aplicaciones que desee incluir en su clúster de Amazon EMR antes de lanzarlo. No puede agregar ni eliminar aplicaciones de un clúster después del lanzamiento.

  7. Elija su par de claves de EC2 en Seguridad y acceso.

  8. Seleccione Crear clúster para lanzar el clúster y abrir la página de estado del clúster.

  9. Consulte el estado del clúster junto a su nombre. El estado cambia de Iniciando a En ejecución a Esperando a medida que Amazon EMR aprovisiona el clúster. Es posible que tenga que elegir el icono de actualización situado a la derecha o actualizar el navegador para ver las actualizaciones de estado.

Cuando el estado cambia a Esperando, el clúster está activo, en ejecución y listo para aceptar trabajo. Para obtener más información sobre cómo leer el resumen del clúster, consulte Ver el estado y los detalles del clúster. Para obtener más información acerca del estado del clúster, consulte Descripción del ciclo de vida del clúster.

CLI
Para lanzar un clúster con Spark instalado con la AWS CLI
  1. Cree los roles predeterminados de IAM que, a continuación, podrá utilizar para crear el clúster mediante el siguiente comando.

    aws emr create-default-roles

    Para obtener más información sobre create-default-roles, consulte la Referencia de los comandos de la AWS CLI.

  2. Cree un clúster de Spark con el siguiente comando. Introduzca un nombre para el clúster con la opción --name y especifique el nombre del par de claves de EC2 con la opción --ec2-attributes.

    aws emr create-cluster \ --name "<My First EMR Cluster>" \ --release-label <emr-5.36.1> \ --applications Name=Spark \ --ec2-attributes KeyName=<myEMRKeyPairName> \ --instance-type m5.xlarge \ --instance-count 3 \ --use-default-roles

    Anote los demás valores obligatorios para --instance-type, --instance-count, y --use-default-roles. Estos valores se han elegido para clústeres de uso general. Para obtener más información sobre create-cluster, consulte la Referencia de los comandos de la AWS CLI.

    nota

    Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

    Debería ver un resultado como el siguiente. El resultado muestra el ClusterId y el ClusterArn del nuevo clúster. Anote su ClusterId. Se utiliza ClusterId para comprobar el estado del clúster y enviar trabajos.

    { "ClusterId": "myClusterId", "ClusterArn": "myClusterArn" }
  3. Compruebe el estado del clúster con el siguiente comando.

    aws emr describe-cluster --cluster-id <myClusterId>

    Debería ver un resultado como el siguiente con el objeto Status del nuevo clúster.

    { "Cluster": { "Id": "myClusterId", "Name": "My First EMR Cluster", "Status": { "State": "STARTING", "StateChangeReason": { "Message": "Configuring cluster software" } } } }

    El valor State cambia de STARTING a RUNNING a WAITING cuando Amazon EMR aprovisiona el clúster.

El estado del clúster cambia a WAITING cuando un clúster está activo, en ejecución y listo para aceptar trabajo. Para obtener más información acerca del estado del clúster, consulte Descripción del ciclo de vida del clúster.

Paso 2: administrar el clúster de Amazon EMR

Enviar un trabajo a Amazon EMR

Después de lanzar un clúster, puede enviar el trabajo al clúster en ejecución para procesar y analizar los datos. El trabajo se envía a un clúster de Amazon EMR como un paso. Un paso es una unidad de trabajo compuesta por una o más acciones. Por ejemplo, puede enviar un paso para calcular valores o para transferir y procesar datos. Puede enviar pasos cuando al crear un clúster o bien a un clúster en ejecución. En este tutorial, envía health_violations.py como un paso a su clúster en ejecución. Para obtener más información sobre los pasos, consulte Enviar trabajo a un clúster.

New console
Para enviar una aplicación de Spark como paso con la nueva consola
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon EMR en https://console.aws.amazon.com/emr.

  2. En EMR en EC2, en el panel de navegación izquierdo, seleccione Clústeres y, a continuación, seleccione el clúster al desee enviar trabajo. El estado del clúster debe estar en Esperando.

  3. Seleccione la pestaña Pasos y, a continuación Agregar paso.

  4. Configure el paso de acuerdo con las directrices siguientes:

    • En Tipo, seleccione Aplicación de Spark. Deberá ver campos adicionales para el modo implementación, la ubicación de la aplicación y las opciones de spark-submit.

    • En Nombre, escriba un nuevo nombre. Si tiene muchos pasos en un clúster, nombrar cada paso le ayudará a hacer un seguimiento de ellos.

    • Para el modo implementación, deje el valor predeterminado Modo de clúster. Para obtener más información sobre los modos de implementación de Spark, consulte Información general sobre el modo de clúster en la documentación de Apache Spark.

    • En Ubicación de la aplicación, ingrese la ubicación del script health_violations.py en Amazon S3, por ejemplo, s3://DOC-EXAMPLE-BUCKET/health_violations.py.

    • Deje vacío el campo Opciones de Spark-submit. Para obtener más información sobre las opciones de spark-submit, consulte Launching applications with spark-submit.

    • En el campo Argumentos, ingrese los siguientes argumentos y valores:

      --data_source s3://DOC-EXAMPLE-BUCKET/food_establishment_data.csv --output_uri s3://DOC-EXAMPLE-BUCKET/myOutputFolder

      Sustituya s3://DOC-EXAMPLE-BUCKET/food_establishment_data.csv por el URI del bucket de S3 de los datos de entrada que preparó en Preparar una aplicación con datos de entrada para Amazon EMR.

      Sustituya DOC-EXAMPLE-BUCKET por el nombre del bucket que creó para este tutorial y sustituya myOutputFolder por un nombre para la carpeta de salida del clúster.

    • En Acción si se produce un error en el paso, acepte la opción predeterminada Continuar. De esta forma, si se produce un error en el paso, el clúster seguirá ejecutándose.

  5. Seleccione Agregar para enviar el paso. El paso debería aparecer en la consola con el estado Pendiente.

  6. Supervise el estado del paso. Debería cambiar de Pendiente a En ejecución a Completado. Para actualizar el estado en la consola, elija el icono de actualización situado a la derecha de Filtro. El script tarda aproximadamente un minuto en ejecutarse. Cuando el paso se haya completado correctamente, el estado cambiará a Completado.

Old console
Para enviar una aplicación de Spark como paso 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. En Lista de clústeres, seleccione el nombre del clúster. El estado del clúster debe estar en Esperando.

  3. Elija Steps (Pasos) y, a continuación Add step (Añadir paso).

  4. Configure el paso de acuerdo con las directrices siguientes:

    • En Step type (Tipo de paso), elija Spark application (Aplicación de Spark). Debería ver campos adicionales para el modo implementación, las opciones de Spark-submit y Ubicación de la aplicación.

    • En Nombre, deje el valor predeterminado o escriba un nombre nuevo. Si tiene muchos pasos en un clúster, nombrar cada paso le ayudará a hacer un seguimiento de ellos.

    • En Modo implementación, deje el valor predeterminado Clúster. Para obtener más información acerca de los modos de implementación de Spark, consulte Información general sobre el modo de clúster en la documentación de Apache Spark.

    • Deje en blanco el campo Opciones de Spark-submit. Para obtener más información sobre las opciones de spark-submit, consulte Launching applications with spark-submit.

    • En Ubicación de la aplicación, ingrese la ubicación del script health_violations.py en Amazon S3. Por ejemplo, s3://DOC-EXAMPLE-BUCKET/health_violations.py.

    • En el campo Argumentos, ingrese los siguientes argumentos y valores:

      --data_source s3://DOC-EXAMPLE-BUCKET/food_establishment_data.csv --output_uri s3://DOC-EXAMPLE-BUCKET/myOutputFolder

      Sustituya s3://DOC-EXAMPLE-BUCKET/food_establishment_data.csv por el URI de S3 de los datos de entrada que preparó en Preparar una aplicación con datos de entrada para Amazon EMR.

      Sustituya DOC-EXAMPLE-BUCKET por el nombre del bucket que creó para este tutorial y myOutputFolder por el nombre de la carpeta de salida del clúster.

    • En Acción sobre el error, acepte la opción predeterminada Continuar para que, si el paso falla, el clúster continúe ejecutándose.

  5. Seleccione Agregar para enviar el paso. El paso debería aparecer en la consola con el estado Pendiente.

  6. Compruebe si el estado del paso cambia de Pendiente a En ejecución a Completado. Para actualizar el estado en la consola, elija el icono de actualización situado a la derecha del Filtro. El script tarda aproximadamente un minuto en ejecutarse.

Sabrá que el paso ha finalizado correctamente cuando el estado cambie a Completado.

CLI
Para enviar una solicitud a Spark como un paso con la AWS CLI
  1. Asegúrese de tener el ClusterId del clúster que lanzó en Lanzar un clúster de Amazon EMR. Puede recuperar el ID del clúster con los siguientes comandos.

    aws emr list-clusters --cluster-states WAITING
  2. Envíe health_violations.py como un paso con el comando add-steps y el ClusterId.

    • Puede especificar un nombre para el paso al sustituir “Mi aplicación de Spark”. En la matriz Args, sustituya s3://DOC-EXAMPLE-BUCKET/health_violations.py por la ubicación de la aplicación health_violations.py.

    • Sustituya s3://DOC-EXAMPLE-BUCKET/food_establishment_data.csv por la ubicación de S3 del conjunto de datos food_establishment_data.csv.

    • Sustituya s3://DOC-EXAMPLE-BUCKET/MyOutputFolder por la ruta de S3 del bucket designado y un nombre para la carpeta de salida del clúster.

    • ActionOnFailure=CONTINUE significa que el clúster seguirá ejecutándose si se produce un error en el paso.

    aws emr add-steps \ --cluster-id <myClusterId> \ --steps Type=Spark,Name="<My Spark Application>",ActionOnFailure=CONTINUE,Args=[<s3://DOC-EXAMPLE-BUCKET/health_violations.py>,--data_source,<s3://DOC-EXAMPLE-BUCKET/food_establishment_data.csv>,--output_uri,<s3://DOC-EXAMPLE-BUCKET/MyOutputFolder>]

    Para obtener más información acerca envío de pasos mediante la CLI, consulte la ‎Referencia de los comandos de la AWS CLI.

    Después de enviar el paso, debería ver un resultado como el siguiente con una lista de StepIds. Como ha enviado un paso, solo verá un ID en la lista. Copie el ID de su paso. Utilice el identificador del paso para comprobar el estado.

    { "StepIds": [ "s-1XXXXXXXXXXA" ] }
  3. Consulte el estado del paso con el comando describe-step.

    aws emr describe-step --cluster-id <myClusterId> --step-id <s-1XXXXXXXXXXA>

    Debería ver un resultado como el siguiente, con información sobre el paso.

    { "Step": { "Id": "s-1XXXXXXXXXXA", "Name": "My Spark Application", "Config": { "Jar": "command-runner.jar", "Properties": {}, "Args": [ "spark-submit", "s3://DOC-EXAMPLE-BUCKET/health_violations.py", "--data_source", "s3://DOC-EXAMPLE-BUCKET/food_establishment_data.csv", "--output_uri", "s3://DOC-EXAMPLE-BUCKET/myOutputFolder" ] }, "ActionOnFailure": "CONTINUE", "Status": { "State": "COMPLETED" } } }

    A medida que el paso se ejecuta, el State cambia de PENDING a RUNNING a COMPLETED. El paso tarda aproximadamente un minuto en ejecutarse, por lo que es posible que tenga que comprobar el estado varias veces.

Sabrá que el paso se ha completado correctamente cuando el State cambie a COMPLETED.

Para obtener más información sobre el ciclo de vida del paso, consulte Ejecución de pasos para procesar datos.

Ver los resultados

Cuando un paso se ejecute correctamente, podrá ver los resultados de salida en la carpeta de salida de Amazon S3.

Para ver los resultados de health_violations.py
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el nombre del bucket y, a continuación, la carpeta de salida que especificó al enviar el paso. Por ejemplo, DOC-EXAMPLE-BUCKET y, a continuación, myOutputFolder.

  3. Compruebe que los siguientes elementos aparecen en la carpeta de salida:

    • Un objeto de tamaño pequeño llamado _SUCCESS.

    • Un archivo CSV que comienza con el prefijo part- que contiene los resultados.

  4. Elija el objeto con los resultados y, a continuación, seleccione Descargar para guardar los resultados en el sistema de archivos local.

  5. Abra los resultados con el editor que prefiera. En el archivo de salida, se muestra una lista de los diez establecimientos de alimentación con más infracciones rojas. En el archivo de salida, también se muestra el número total de infracciones rojas de cada establecimiento.

    A continuación se muestra un resultado de health_violations.py.

    name, total_red_violations SUBWAY, 322 T-MOBILE PARK, 315 WHOLE FOODS MARKET, 299 PCC COMMUNITY MARKETS, 251 TACO TIME, 240 MCDONALD'S, 177 THAI GINGER, 153 SAFEWAY INC #1508, 143 TAQUERIA EL RINCONSITO, 134 HIMITSU TERIYAKI, 128

Para obtener más información sobre el resultado del clúster de Amazon EMR, consulte Configurar una ubicación de salida.

Cuando utiliza Amazon EMR, es posible que desee conectarse a un clúster en ejecución para leer los archivos de registro, depurar el clúster o utilizar herramientas de la CLI, como el intérprete de comandos de Spark. Amazon EMR le permite conectarse a un clúster mediante el protocolo Secure Shell (SSH). En esta sección, se explica cómo configurar SSH, conectarse al clúster y ver los archivos de registro de Spark. Para obtener más información acerca de la conexión al clúster, consulte Autenticación en nodos de clúster de Amazon EMR.

Autorizar las conexiones de SSH a su clúster

Antes de conectarse al clúster, debe modificar sus grupos de seguridad para autorizar las conexiones SSH entrantes. Los grupos de seguridad de Amazon EC2 funcionan como firewalls virtuales para controlar el tráfico entrante y saliente del clúster. Cuando creó el clúster para este tutorial, Amazon EMR creó los siguientes grupos de seguridad en su nombre:

ElasticMapReduce-master

El grupo de seguridad administrado por Amazon EMR, asociado al nodo principal. En un clúster de Amazon EMR, el nodo principal es una instancia de Amazon EC2 que administra el clúster.

ElasticMapReduce-slave

El grupo de seguridad, asociado a los nodos secundarios y de tareas.

New console
Para permitir el acceso SSH a los orígenes de confianza del grupo de seguridad principal con la nueva consola

Para editar los grupos de seguridad, debe tener permiso para administrar los grupos de seguridad de la VPC en la que se encuentra el clúster. Para obtener más información, consulte Cambio de los permisos de un usuario y el Ejemplo de política que permite administrar los grupos de seguridad de EC2 en la Guía del usuario de IAM.

  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon EMR en https://console.aws.amazon.com/emr.

  2. En EMR en EC2, en el panel de navegación izquierdo, elija Clústeres y, a continuación, seleccione el clúster que desee actualizar. Se abrirá la página de detalles del clúster. La pestaña Propiedades de esta página debe estar preseleccionada.

  3. En Redes, en la pestaña Propiedades, seleccione la flecha situada junto a Grupos de seguridad de EC2 (firewall) para ampliar esta sección. En Nodo principal, seleccione el enlace del grupo de seguridad. Cuando haya completado los siguientes pasos, si lo desea, puede volver a este paso, elija Nodos principales y de tareas y repita los pasos siguientes para permitir que el cliente SSH acceda a dichos nodos.

  4. Se abrirá la consola de EC2. Elija la pestaña Reglas de entrada y, a continuación, elija Editar reglas de entrada.

  5. Compruebe si hay una regla de entrada que permita el acceso público con la siguiente configuración. Si existe, seleccione Eliminar para eliminarla.

    • Tipo

      SSH

    • Puerto

      22

    • Fuente

      0.0.0.0/0 personalizado

    aviso

    Antes de diciembre de 2020, el grupo de seguridad ElasticMapReduce-master tenía una regla preconfigurada para permitir el tráfico entrante en el puerto 22 desde todos los orígenes. Esta regla se creó para simplificar las conexiones SSH iniciales al nodo maestro. Le recomendamos encarecidamente que elimine esta regla de entrada y que restrinja el tráfico a los orígenes de confianza.

  6. Desplácese a la parte inferior de la lista de reglas y seleccione Agregar regla.

  7. En Type (Tipo), seleccione SSH. Al seleccionar SSH, se ingresa automáticamente TCP en Protocolo y 22 en Rango de puertos.

  8. Como origen, seleccione Mi IP para agregar automáticamente su dirección IP como dirección de origen. También puede agregar un rango de direcciones IP de clientes de confianza personalizadas o crear reglas adicionales para otros clientes. Muchos entornos de red asignan direcciones IP de forma dinámica, por lo que es posible que en el futuro necesite actualizar las direcciones IP de los clientes de confianza.

  9. Seleccione Save.

  10. Si lo desea, elija Nodos principales y de tareas en la lista y repita los pasos anteriores para permitir que el cliente SSH acceda dichos nodos.

Old console
Para conceder a los orígenes de confianza acceso SSH al grupo de seguridad principal con la consola antigua

Para editar los grupos de seguridad, debe tener permiso para administrar los grupos de seguridad de la VPC en la que se encuentra el clúster. Para obtener más información, consulte Cambio de los permisos de un usuario y el Ejemplo de política que permite administrar los grupos de seguridad de EC2 en la Guía del usuario de IAM.

  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. Seleccione Clusters (Clústeres). Seleccione el nombre del clúster que desea modificar.

  3. Elija el enlace Grupos de seguridad para nodo maestro de Seguridad y acceso.

  4. Elija ElasticMapReduce-master en la lista.

  5. Elija la pestaña Reglas de entrada y, a continuación, elija Editar reglas de entrada.

  6. Compruebe si hay una regla de entrada que permita el acceso público con la siguiente configuración. Si existe, seleccione Eliminar para eliminarla.

    • Tipo

      SSH

    • Puerto

      22

    • Fuente

      0.0.0.0/0 personalizado

    aviso

    Antes de diciembre de 2020, el grupo de seguridad ElasticMapReduce-master tenía una regla preconfigurada para permitir el tráfico entrante en el puerto 22 desde todos los orígenes. Esta regla se creó para simplificar las conexiones SSH iniciales al nodo principal. Le recomendamos encarecidamente que elimine esta regla de entrada y que restrinja el tráfico a los orígenes de confianza.

  7. Desplácese a la parte inferior de la lista de reglas y seleccione Agregar regla.

  8. En Type (Tipo), seleccione SSH.

    Al seleccionar SSH, se ingresa automáticamente TCP en Protocolo y 22 en Rango de puertos.

  9. Como origen, seleccione Mi IP para agregar automáticamente su dirección IP como dirección de origen. También puede agregar un rango de direcciones IP de clientes de confianza personalizadas o crear reglas adicionales para otros clientes. Muchos entornos de red asignan direcciones IP de forma dinámica, por lo que es posible que en el futuro necesite actualizar las direcciones IP de los clientes de confianza.

  10. Seleccione Save.

  11. Si lo desea, puede seleccionar ElasticMapReduce-slave en la lista y repetir los pasos anteriores para permitir el acceso de los clientes SSH a los nodos principales y de tarea.

Conectarse al clúster con la AWS CLI

Independientemente del sistema operativo, puede crear una conexión SSH a su clúster mediante la AWS CLI.

Para conectarse a su clúster y ver los archivos de registro mediante la AWS CLI
  1. Use el comando siguiente para abrir una conexión SSH a su clúster. Sustituya <mykeypair.key> por la ubicación y el nombre del archivo del par de claves. Por ejemplo, C:\Users\<username>\.ssh\mykeypair.pem.

    aws emr ssh --cluster-id <j-2AL4XXXXXX5T9> --key-pair-file <~/mykeypair.key>
  2. Navegue hasta /mnt/var/log/spark para acceder a los registros de Spark en el nodo maestro del clúster. A continuación, consulte los archivos de esa ubicación. Para obtener una lista de los archivos de registro adicionales del nodo maestro, consulte Ver archivos de registro en el nodo principal.

    cd /mnt/var/log/spark ls

Paso 3: eliminar los recursos de Amazon EMR

Terminar su clúster

Ahora que ha enviado trabajo a su clúster y ha visto los resultados de su aplicación de PySpark, puede terminar el clúster. Al terminar un clúster, se detienen todos los cargos de Amazon EMR y las instancias de Amazon EC2 asociados al clúster.

Al terminar un clúster, Amazon EMR conserva los metadatos del clúster durante dos meses sin costo alguno. Los metadatos archivados le ayudan a clonar el clúster para un nuevo trabajo o a revisitar la configuración del clúster como referencia. Los metadatos no incluyen los datos que el clúster escribe en S3 ni los datos almacenados en el HDFS del clúster.

nota

La consola de Amazon EMR no le permite eliminar un clúster de la vista de lista una vez terminado el clúster. Un clúster terminado desaparece de la consola cuando Amazon EMR borra sus metadatos.

New console
Para terminar el clúster con la nueva consola
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon EMR en https://console.aws.amazon.com/emr.

  2. Seleccione Clústeres y, a continuación, elija el clúster que desea terminar.

  3. En el menú desplegable Acciones, seleccione Terminar clúster.

  4. Seleccione Terminar en el cuadro de diálogo. Según la configuración del clúster, la terminación puede tardar de 5 a 10 minutos. Para obtener más información sobre cómo terminar clústeres en Amazon EMR, consulte Terminar un clúster.

Old console
Para terminar el clúster 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. Seleccione Clústeres y, a continuación, seleccione el clúster que desea terminar. Por ejemplo, Mi primer clúster de EMR.

  3. Seleccione Terminar para abrir el mensaje Terminar clúster.

  4. Elija Terminar en el mensaje abierto. Según la configuración del clúster, la terminación puede tardar de 5 a 10 minutos. Para obtener más información sobre la terminación de clústeres de Amazon EMR, consulte Terminar un clúster.

    nota

    Si ha seguido el tutorial al pie de la letra, la protección de terminación debería estar desactivada. La protección de terminación de clúster evita la terminación accidental. Si la protección de terminación está activada, verá un mensaje para cambiar esta opción como medida de precaución antes de terminar el clúster. Seleccione Cambiar, y luego Desactivada.

CLI
Para terminar el clúster con la AWS CLI
  1. Inicie el proceso de terminación del clúster con el siguiente comando. Sustituya <myClusterId> por el ID del clúster de muestra. El comando no devuelve resultados.

    aws emr terminate-clusters --cluster-ids <myClusterId>
  2. Para comprobar que el proceso de terminación del clúster esté en curso, compruebe el estado del clúster con el siguiente comando.

    aws emr describe-cluster --cluster-id <myClusterId>

    El siguiente ejemplo está en formato JSON. El clúster Status debe cambiar de TERMINATING a TERMINATED. Según la configuración del clúster, la terminación puede tardar de 5 a 10 minutos. Para obtener más información sobre la terminación de un clúster de Amazon EMR, consulte Terminar un clúster.

    { "Cluster": { "Id": "j-xxxxxxxxxxxxx", "Name": "My Cluster Name", "Status": { "State": "TERMINATED", "StateChangeReason": { "Code": "USER_REQUEST", "Message": "Terminated by user request" } } } }

Eliminar recursos de S3

Para evitar cargos adicionales, debe eliminar el bucket de Amazon S3. Al eliminar el bucket, se eliminan todos los recursos de Amazon S3 de este tutorial. El bucket debe contener:

  • El script de PySpark

  • El conjunto de datos de entrada

  • La carpeta de resultados de salida

  • La carpeta de archivos de registro

Es posible que tenga que tomar medidas adicionales para eliminar los archivos almacenados si guardó el script o la salida de PySpark en una ubicación diferente.

nota

Debe terminar el clúster antes de eliminar el bucket. De lo contrario, es posible que no se le permita vaciar el bucket.

Para ello, siga las instrucciones de Eliminar un bucket de S3 en la Guía del usuario de Amazon Simple Storage Service.

Pasos siguientes

Ya ha lanzado su primer clúster de Amazon EMR de principio a fin. También ha completado tareas esenciales de EMR, como preparar y enviar aplicaciones de macrodatos, ver los resultados y terminar un clúster.

Utilice los siguientes temas para obtener más información sobre cómo personalizar el flujo de trabajo de Amazon EMR.

Explorar las aplicaciones de macrodatos para Amazon EMR

Descubra y compare las aplicaciones de macrodatos que puede instalar en un clúster en la Guía de publicación de Amazon EMR. La guía de versiones detalla cada versión de EMR e incluye consejos para usar marcos como Spark y Hadoop en Amazon EMR.

Planificar el hardware, las redes y la seguridad de los clústeres

En este tutorial, creó un clúster de EMR sencillo sin configurar las opciones avanzadas. Las opciones avanzadas le permiten especificar los tipos de instancias de Amazon EC2, las redes de clústeres y la seguridad de los clústeres. Para obtener más información sobre la planificación y el lanzamiento de un clúster que cumpla sus requisitos, consulte Planificar y configurar clústeres y Seguridad en Amazon EMR.

Administrar clústeres

Profundice en el trabajo con clústeres en ejecución en Administrar clústeres. Para administrar un clúster, puede conectarse al clúster, depurar los pasos y hacer un seguimiento de las actividades y el estado del clúster. También puede ajustar los recursos del clúster en respuesta a las demandas de carga de trabajo con el escalado administrado por EMR.

Utilizar una interfaz diferente

Además de la consola de Amazon EMR, puede administrar Amazon EMR mediante la AWS Command Line Interface, la API del servicio web o uno de los muchos AWS SDK compatibles. Para obtener más información, consulte Interfaces de administración.

También puede interactuar con las aplicaciones instaladas en los clústeres de Amazon EMR de muchas maneras. Algunas aplicaciones, como Apache Hadoop, publican interfaces web que puede consultar. Para obtener más información, consulte Ver las interfaces web alojadas en clústeres de Amazon EMR.

Consultar el blog técnico de EMR

Para ver ejemplos de tutoriales y un análisis técnico detallado sobre las nuevas características de Amazon EMR, consulte el blog de macrodatos de AWS.