HadoopActivity - AWS Data Pipeline

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.

HadoopActivity

Ejecuta un MapReduce trabajo en un clúster. El clúster puede ser un clúster de EMR administrado por AWS Data Pipeline u otro recurso si lo usa. TaskRunner HadoopActivity Úselo cuando desee ejecutar el trabajo en paralelo. Esto le permite utilizar los recursos de programación del marco YARN o el negociador de MapReduce recursos de Hadoop 1. Si desea ejecutar el trabajo de forma secuencial mediante la acción de paso de Amazon EMR, puede usar EmrActivity.

Ejemplos

HadoopActivity mediante un clúster de EMR gestionado por AWS Data Pipeline

El siguiente HadoopActivity objeto utiliza un EmrCluster recurso para ejecutar un programa:

{ "name": "MyHadoopActivity", "schedule": {"ref": "ResourcePeriod"}, "runsOn": {"ref": “MyEmrCluster”}, "type": "HadoopActivity", "preActivityTaskConfig":{"ref":"preTaskScriptConfig”}, "jarUri": "/home/hadoop/contrib/streaming/hadoop-streaming.jar", "argument": [ "-files", “s3://elasticmapreduce/samples/wordcount/wordSplitter.py“, "-mapper", "wordSplitter.py", "-reducer", "aggregate", "-input", "s3://elasticmapreduce/samples/wordcount/input/", "-output", “s3://test-bucket/MyHadoopActivity/#{@pipelineId}/#{format(@scheduledStartTime,'YYYY-MM-dd')}" ], "maximumRetries": "0", "postActivityTaskConfig":{"ref":"postTaskScriptConfig”}, "hadoopQueue" : “high” }

Esta es la correspondiente MyEmrCluster, que configura las colas FairScheduler y en YARN para las AMI basadas en Hadoop 2:

{ "id" : "MyEmrCluster", "type" : "EmrCluster", "hadoopSchedulerType" : "PARALLEL_FAIR_SCHEDULING", “amiVersion” : “3.7.0”, "bootstrapAction" : ["s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop,-z,yarn.scheduler.capacity.root.queues=low\,high\,default,-z,yarn.scheduler.capacity.root.high.capacity=50,-z,yarn.scheduler.capacity.root.low.capacity=10,-z,yarn.scheduler.capacity.root.default.capacity=30”] }

Esto es lo que se usa para configurar en EmrCluster Hadoop 1: FairScheduler

{ "id": "MyEmrCluster", "type": "EmrCluster", "hadoopSchedulerType": "PARALLEL_FAIR_SCHEDULING", "amiVersion": "2.4.8", "bootstrapAction": "s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop,-m,mapred.queue.names=low\\\\,high\\\\,default,-m,mapred.fairscheduler.poolnameproperty=mapred.job.queue.name" }

Lo siguiente EmrCluster configura las AMI basadas en CapacityScheduler Hadoop 2:

{ "id": "MyEmrCluster", "type": "EmrCluster", "hadoopSchedulerType": "PARALLEL_CAPACITY_SCHEDULING", "amiVersion": "3.7.0", "bootstrapAction": "s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop,-z,yarn.scheduler.capacity.root.queues=low\\\\,high,-z,yarn.scheduler.capacity.root.high.capacity=40,-z,yarn.scheduler.capacity.root.low.capacity=60" }
HadoopActivity usar un clúster de EMR existente

En este ejemplo, utiliza grupos de trabajo y TaskRunner a para ejecutar un programa en un clúster de EMR existente. La siguiente definición de canalización se utiliza para: HadoopActivity

{ "objects": [ { "argument": [ "-files", "s3://elasticmapreduce/samples/wordcount/wordSplitter.py", "-mapper", "wordSplitter.py", "-reducer", "aggregate", "-input", "s3://elasticmapreduce/samples/wordcount/input/", "-output", "s3://test-bucket/MyHadoopActivity/#{@pipelineId}/#{format(@scheduledStartTime,'YYYY-MM-dd')}" ], "id": "MyHadoopActivity", "jarUri": "/home/hadoop/contrib/streaming/hadoop-streaming.jar", "name": "MyHadoopActivity", "type": "HadoopActivity" }, { "id": "SchedulePeriod", "startDateTime": "start_datetime", "name": "SchedulePeriod", "period": "1 day", "type": "Schedule", "endDateTime": "end_datetime" }, { "id": "ShellScriptConfig", "scriptUri": "s3://test-bucket/scripts/preTaskScript.sh", "name": "preTaskScriptConfig", "scriptArgument": [ "test", "argument" ], "type": "ShellScriptConfig" }, { "id": "ShellScriptConfig", "scriptUri": "s3://test-bucket/scripts/postTaskScript.sh", "name": "postTaskScriptConfig", "scriptArgument": [ "test", "argument" ], "type": "ShellScriptConfig" }, { "id": "Default", "scheduleType": "cron", "schedule": { "ref": "SchedulePeriod" }, "name": "Default", "pipelineLogUri": "s3://test-bucket/logs/2015-05-22T18:02:00.343Z642f3fe415", "maximumRetries": "0", "workerGroup": "myWorkerGroup", "preActivityTaskConfig": { "ref": "preTaskScriptConfig" }, "postActivityTaskConfig": { "ref": "postTaskScriptConfig" } } ] }

Sintaxis

Campos obligatorios Descripción Tipo de slot
jarUri Ubicación de un JAR en Amazon S3 o en el sistema de archivos local del clúster con el que se va a ejecutar HadoopActivity. Cadena

Campos de invocación de objetos Descripción Tipo de slot
schedule Este objeto se invoca dentro de la ejecución de un intervalo de programación. Los usuarios deben especificar una referencia de programación a otro objeto para establecer el orden de ejecución de dependencia para este objeto. Los usuarios pueden cumplir este requisito estableciendo explícitamente una programación en el objeto, por ejemplo, especificando «schedule»: {"ref»: "DefaultSchedule«}. En la mayoría de los casos, es mejor poner la referencia de programación en el objeto de la canalización predeterminado de modo que todos los objetos hereden ese programa. O bien, si la canalización tiene un árbol de programas (programas dentro del programa maestro), los usuarios pueden crear un objeto principal que tenga una referencia de programación. Para obtener más información acerca de las configuraciones de programación opcionales de ejemplo, consulte https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html Objeto de referencia, por ejemplo, «schedule»: {"ref»:» myScheduleId «}

Grupo obligatorio (se requiere uno de los siguientes) Descripción Tipo de slot
runsOn Clúster de EMR en el que se ejecutará este trabajo. Objeto de referencia, por ejemplo, «RunSon»: {"ref»:» myEmrCluster Id "}
workerGroup El grupo de procesos de trabajo. Este se usa para dirigir tareas. Si proporciona un valor runsOn y workerGroup existe, se hace caso omiso de workerGroup. Cadena

Campos opcionales Descripción Tipo de slot
argument Argumentos que se pasan al archivo JAR. Cadena
attemptStatus Estado más reciente notificado por la actividad remota. Cadena
attemptTimeout Tiempo de espera para que se complete el trabajo remoto. Si se establece, se puede reintentar una actividad remota que no se complete dentro del tiempo de inicio establecido. Período
dependsOn Especificar la dependencia de otro objeto ejecutable. Objeto de referencia, por ejemplo, «DependSon»: {"ref»:» myActivityId «}
failureAndRerunModo Describe el comportamiento del nodo del consumidor cuando las dependencias producen un error o se vuelven a ejecutar. Enumeración
hadoopQueue El nombre de cola de programador Hadoop en el que se enviará la actividad. Cadena
input Ubicación de los datos de entrada. Objeto de referencia, por ejemplo, «input»: {"ref»:» myDataNode Id "}
lateAfterTimeout El tiempo transcurrido desde el inicio de la canalización dentro del cual el objeto debe completarse. Solo se activa cuando el tipo de programación no está establecido en ondemand. Período
mainClass La clase principal del JAR con el que se está ejecutando HadoopActivity. Cadena
maxActiveInstances El número máximo de instancias activas simultáneas de un componente. Las nuevas ejecuciones no cuentan para el número de instancias activas. Entero
maximumRetries Número máximo de reintentos cuando se produce un error. Entero
onFail Acción que se debe ejecutar cuando el objeto actual produzca un error. Objeto de referencia, por ejemplo, «onFail»: {"ref»:» myActionId «}
onLateAction Acciones que deben iniciarse si un objeto todavía no se ha programado o no se ha completado. Objeto de referencia, por ejemplo, "onLateAction«: {" ref»:» myActionId «}
onSuccess Acción que se debe ejecutar cuando el objeto actual se complete correctamente. Objeto de referencia, por ejemplo, «onSuccess»: {"ref»:» myActionId «}
salida Ubicación de los datos de salida. Objeto de referencia, por ejemplo, «output»: {"ref»:» myDataNode Id "}
parent Elemento principal del objeto actual del que se heredarán los slots. Objeto de referencia, por ejemplo, «parent»: {"ref»:» myBaseObject Id "}
pipelineLogUri El URI de S3 (como 's3://BucketName/Key/ ') para cargar los registros de la canalización. Cadena
postActivityTaskConfig Script de configuración después de la actividad que se va a ejecutar. Este consta de un URI del script de shell en Amazon S3 y una lista de argumentos. Objeto de referencia, por ejemplo, "postActivityTaskConfig»: {"ref»:» myShellScript ConfigId «}
preActivityTaskConfig Script de configuración antes de la actividad que se va a ejecutar. Este consta de un URI del script de shell en Amazon S3 y una lista de argumentos. Objeto de referencia, por ejemplo, "preActivityTaskConfig»: {"ref»:» myShellScript ConfigId «}
precondition Opcionalmente, defina una condición previa. Un nodo de datos no se marca como "READY" hasta que se han cumplido todas las condiciones previas. Objeto de referencia, por ejemplo, «condición previa»: {"ref»:» myPreconditionId «}
reportProgressTimeout Tiempo de espera para llamadas sucesivas del trabajo remoto a reportProgress. Si se establece, las actividades remotas que no informen de su progreso durante el período especificado pueden considerarse estancadas y, en consecuencia, reintentarse. Período
retryDelay Duración del tiempo de espera entre dos reintentos. Período
scheduleType El tipo de programa le permite especificar si los objetos de la definición de la canalización deben programarse al principio del intervalo o al final de este. La programación de estilo de serie temporal significa que las instancias se programan al final de cada intervalo y la programación de estilo cron significa que las instancias se programan al principio de cada intervalo. Un programa bajo demanda le permite ejecutar una canalización una vez por activación. Esto significa que no tiene que clonar o recrear la canalización para ejecutarla de nuevo. Si usa un programa bajo demanda, debe especificarse en el objeto predeterminado y debe ser el único scheduleType especificado para los objetos de la canalización. Para usar canalizaciones bajo demanda, basta con llamar a la ActivatePipeline operación para cada ejecución posterior. Los valores son: cron, ondemand y timeseries. Enumeración

Campos de tiempo de ejecución Descripción Tipo de slot
@activeInstances Lista de los objetos de instancias activas programados actualmente. Objeto de referencia, por ejemplo, «ActiveInstances»: {"ref»:» myRunnableObject Id "}
@actualEndTime La hora a la que finalizó la ejecución de este objeto. DateTime
@actualStartTime La hora a la que comenzó la ejecución de este objeto. DateTime
cancellationReason El valor de cancellationReason si este objeto se ha cancelado. Cadena
@cascadeFailedOn Descripción de la cadena de dependencia en la que ha fallado el objeto. Objeto de referencia, por ejemplo, "cascadeFailedOn«: {" ref»:» myRunnableObject Id "}
emrStepLog Registros de pasos de EMR disponibles únicamente sobre intentos de actividad de EMR. Cadena
errorId El valor de errorId si este objeto ha fallado. Cadena
errorMessage El valor de errorMessage si este objeto ha fallado. Cadena
errorStackTrace El seguimiento de la pila de error si este objeto ha fallado. Cadena
@finishedTime La hora a la que este objeto finalizó su ejecución. DateTime
hadoopJobLog Los registros de trabajo de Hadoop disponibles sobre intentos de actividades basadas en EMR. Cadena
@healthStatus El estado de salud del objeto que refleja el éxito o el fracaso de la última instancia de objeto que alcanzó un estado terminado. Cadena
@healthStatusFromInstanceId ID del último objeto de instancia que alcanzó un estado terminado. Cadena
@ healthStatusUpdated Hora Hora a la que el estado de salud se actualizó la última vez. DateTime
hostname El nombre de host del cliente que recogió el intento de tarea. Cadena
@lastDeactivatedTime La hora a la que este objeto se desactivó la última vez. DateTime
@ latestCompletedRun Hora Hora de la última ejecución para la que se completó la ejecución. DateTime
@latestRunTime Hora de la última ejecución para la que se programó la ejecución. DateTime
@nextRunTime Hora de ejecución que se va a programar a continuación. DateTime
reportProgressTime La hora más reciente a la que la actividad remota notificó algún progreso. DateTime
@scheduledEndTime Hora de finalización programada para el objeto. DateTime
@scheduledStartTime Hora de comienzo programada para el objeto. DateTime
@status El estado de este objeto. Cadena
@version Versión de la canalización con la que se creó el objeto. Cadena
@waitingOn Descripción de la lista de dependencias de la que este objeto está a la espera. Objeto de referencia, por ejemplo, «WaitingOn»: {"ref»:» myRunnableObject Id "}

Campos del sistema Descripción Tipo de slot
@error Error al describir el objeto mal estructurado. Cadena
@pipelineId ID de la canalización a la que pertenece este objeto. Cadena
@sphere La esfera de un objeto denota su lugar en el ciclo de vida: los objetos de componente dan lugar a objetos de instancia que ejecutan objetos de intento. Cadena

Véase también