

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.

# Enviar un paso JAR personalizado
<a name="emr-launch-custom-jar-cli"></a>

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](emr-build-binaries.md).

Para obtener más información sobre cómo crear una MapReduce aplicación de Hadoop, consulte el [MapReduce tutorial](http://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) 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
<a name="ConsoleCreatingaCustomJARJob"></a>

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 Amazon EMR en https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr/)

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

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

1. 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)**.

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

1. 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). 

## Lanzar un clúster y enviar un paso JAR personalizado con AWS CLI
<a name="emr-dev-create-jar-cli"></a>

**Para lanzar un clúster y enviar un paso JAR personalizado con el AWS CLI**

Para lanzar un clúster y enviar un paso JAR personalizado con el AWS CLI, escriba el `create-cluster` subcomando con el `--steps` parámetro.
+ Para lanzar un clúster y enviar un paso JAR personalizado, escriba el siguiente comando, {{myKey}} sustitúyalo por el nombre del key pair de EC2 y {{amzn-s3-demo-bucket}} sustitúyalo por el nombre del bucket.

  ```
  aws emr create-cluster --name "{{Test cluster}}" --release-label {{emr-7.13.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 el uso de los comandos de Amazon EMR en AWS CLI, consulte. [https://docs.aws.amazon.com/cli/latest/reference/emr](https://docs.aws.amazon.com/cli/latest/reference/emr)

## Dependencias de terceros
<a name="emr-custom-jar-dependency"></a>

A veces puede ser necesario incluirlo en la MapReduce ruta de clases JARs para usarlo con el programa. Dispone de dos opciones para hacerlo:
+ Incluir el paso `--libjars s3://{{URI_to_JAR}}` en las opciones de paso para el procedimiento en [Lanzar un clúster y enviar un paso JAR personalizado con AWS CLI](#emr-dev-create-jar-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 siguiendo el paso siguiente AWS CLI, tendría el siguiente aspecto:

  ```
  aws emr create-cluster --release-label {{emr-7.13.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.