Enviar un paso JAR personalizado - Amazon EMR

Enviar un paso JAR personalizado

Un JAR personalizado ejecuta un programa Java compilado que carga en Amazon S3. Debería compilar el programa en comparación con la versión de Hadoop que desee lanzar y envíe un paso CUSTOM_JAR a su clúster de Amazon EMR. Para más información sobre la compilación de un archivo JAR, consulte Creación de binarios con Amazon EMR.

Para obtener más información sobre cómo crear una aplicación de Hadoop MapReduce, consulte MapReduce Tutorial en la documentación de Apache Hadoop.

En esta sección se describen los conceptos básicos de enviar un paso JAR personalizado en Amazon EMR. Enviar un paso JAR personalizado le permite escribir un script para procesar los datos mediante el lenguaje de programación Java.

Enviar un paso JAR personalizado mediante la consola

En este ejemplo se describe cómo utilizar la consola de Amazon EMR para enviar un paso JAR personalizado a un clúster en ejecución.

Para enviar un paso JAR personalizado mediante la consola
  1. Abra la consola de Amazon EMR enhttps://console.aws.amazon.com/emr.

  2. En la Cluster List (Lista de clústeres), seleccione el nombre del clúster.

  3. Desplácese hasta la sección Steps (Pasos) y amplíela; a continuación, elija Add step (Añadir paso).

  4. En el cuadro de diálogo Add Step (Añadir paso):

    • En Step type (Tipo de paso), elija Custom JAR (JAR personalizado).

    • En Name (Nombre), acepte el nombre predeterminado, Custom JAR (JAR personalizado), o escriba un nombre nuevo.

    • En JAR S3 location (Ubicación en S3 del JAR), escriba o busque la ubicación del archivo JAR. La ubicación del JAR puede ser una ruta hacia S3 o una clase java totalmente calificada en la classpath.

    • En Arguments (Argumentos), escriba los argumentos necesarios como cadenas separadas por espacios o deje el campo en blanco.

    • En Action on failure (Acción sobre el error), acepte la opción predeterminada, Continue (Continuar).

  5. Elija Añadir. El paso aparece en la consola con el estado Pending (Pendiente).

  6. El estado del paso cambia de Pending (Pendiente) a Running (En ejecución) y a Completed (Completado) a medida que se ejecuta. Para actualizar el estado, elija el icono Refresh (Actualizar) situado encima de la columna Actions (Acciones).

Inicio de un clúster y envío de un paso JAR personalizado mediante la AWS CLI

Para iniciar un clúster y enviar un paso JAR personalizado mediante la AWS CLI

Para iniciar un clúster y enviar un paso JAR personalizado mediante la AWS CLI, escriba el subcomando create-cluster con el parámetro --steps.

  • Para lanzar un clúster y enviar un paso JAR personalizado, escriba el comando siguiente, sustituya myKey por el nombre del par de claves de EC2 y sustituya amzn-s3-demo-bucket por el nombre del bucket.

    aws emr create-cluster --name "Test cluster" --release-label emr-7.3.0 \ --applications Name=Hue Name=Hive Name=Pig --use-default-roles \ --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \ --steps Type=CUSTOM_JAR,Name="Custom JAR Step",ActionOnFailure=CONTINUE,Jar=pathtojarfile,Args=["pathtoinputdata","pathtooutputbucket","arg1","arg2"]
    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 (^).

    Cuando especifica el recuento de instancias sin utilizar el parámetro --instance-groups, se inicia un nodo principal único y el resto de las instancias se inician como nodos básicos. Todos los nodos utilizan el tipo de instancia que especifica 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, escriba aws emr create-default-roles para crearlos antes de escribir el subcomando create-cluster.

    Para obtener más información sobre cómo usar los comandos de Amazon EMR en la AWS CLI, consulte https://docs.aws.amazon.com/cli/latest/reference/emr.

Dependencias de terceros

A veces puede ser necesario incluir en el classpath de MapReduce JAR para utilizarlos con su programa. Dispone de dos opciones para hacerlo:

  • Incluir el paso --libjars s3://URI_to_JAR en las opciones de paso para el procedimiento en Inicio de un clúster y envío de un paso JAR personalizado mediante la AWS CLI.

  • Lance el clúster con una configuración mapreduce.application.classpath modificada en mapred-site.xml. Utilice la clasificación de configuración mapred-site. Para crear el clúster con el paso mediante la AWS CLI, el aspecto sería el siguiente:

    aws emr create-cluster --release-label emr-7.3.0 \ --applications Name=Hue Name=Hive Name=Pig --use-default-roles \ --instance-type m5.xlarge --instance-count 2 --ec2-attributes KeyName=myKey \ --steps Type=CUSTOM_JAR,Name="Custom JAR Step",ActionOnFailure=CONTINUE,Jar=pathtojarfile,Args=["pathtoinputdata","pathtooutputbucket","arg1","arg2"] \ --configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.json

    myConfig.json:

    [ { "Classification": "mapred-site", "Properties": { "mapreduce.application.classpath": "path1,path2" } } ]

    La lista de rutas separadas por comas se debe adjuntar al classpath para el JVM de cada tarea.