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 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
Abra la consola de Amazon EMR enhttps://console.aws.amazon.com/emr
. -
En la Cluster List (Lista de clústeres), seleccione el nombre del clúster.
-
Desplácese hasta la sección Steps (Pasos) y amplíela; a continuación, elija Add step (Añadir paso).
-
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).
-
-
Elija Añadir. El paso aparece en la consola con el estado Pending (Pendiente).
-
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 sustituyaamzn-s3-demo-bucket
por el nombre del bucket.aws emr create-cluster --name "
Test cluster
" --release-labelemr-7.3.0
\ --applications Name=Hue
Name=Hive
Name=Pig
--use-default-roles \ --ec2-attributes KeyName=myKey
--instance-typem5.xlarge
--instance-count3
\ --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 subcomandocreate-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://
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.URI_to_JAR
-
Lance el clúster con una configuración
mapreduce.application.classpath
modificada enmapred-site.xml
. Utilice la clasificación de configuraciónmapred-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.jsonmyConfig.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.