HadoopActivity - AWS Data Pipeline

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

HadoopActivity

Führt einen MapReduce Job auf einem Cluster aus. Bei dem Cluster kann es sich um einen EMR-Cluster handeln, der von AWS Data Pipeline oder einer anderen Ressource verwaltet wird, wenn Sie ihn verwenden TaskRunner. Verwenden Sie diese Option, HadoopActivity wenn Sie parallel arbeiten möchten. Auf diese Weise können Sie die Planungsressourcen des YARN-Frameworks oder des MapReduce Resource Negotiators in Hadoop 1 verwenden. Wenn Sie die Arbeit sequenziell mit der Amazon EMR Step-Aktion ausführen möchten, können Sie dies trotzdem verwenden. EmrActivity

Beispiele

HadoopActivity unter Verwendung eines EMR-Clusters, verwaltet von AWS Data Pipeline

Das folgende HadoopActivity Objekt verwendet eine EmrCluster Ressource, um ein Programm auszuführen:

{ "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” }

Hier ist das entsprechende MyEmrCluster, das die Warteschlangen FairScheduler und in YARN für Hadoop 2-basierte AMIs konfiguriert:

{ "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”] }

Dies ist der, den EmrCluster Sie zur Konfiguration FairScheduler in Hadoop 1 verwenden:

{ "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" }

Die folgenden Konfigurationen CapacityScheduler für Hadoop EmrCluster 2-basierte AMIs:

{ "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 mit einem vorhandenen EMR-Cluster

In diesem Beispiel verwenden Sie workergroups und a, TaskRunner um ein Programm auf einem vorhandenen EMR-Cluster auszuführen. Die folgende Pipeline-Definition dient dazu: 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" } } ] }

Syntax

Pflichtfelder Beschreibung Slot-Typ
jarUri Speicherort einer JAR in Amazon S3 oder im lokalen Dateisystem des Clusters, mit dem ausgeführt werden soll HadoopActivity. String

Objektaufruf-Felder Beschreibung Slot-Typ
schedule Dieses Objekt wird innerhalb der Ausführung eines Zeitplanintervalls aufgerufen. Benutzer müssen einen Zeitplanverweis auf ein anderes Objekt angeben, um die Abhängigkeitsausführungsreihenfolge für dieses Objekt festzulegen. Benutzer können diese Anforderung erfüllen, indem sie explizit einen Zeitplan für das Objekt festlegen, z. B. indem sie „schedule“: {"ref“: "DefaultSchedule„} angeben. In den meisten Fällen ist es besser, den Zeitplanverweis auf das Standard-Pipeline-Objekt zu setzen, damit alle Objekte diesen Zeitplan erben. Wenn die Pipeline über einen Baum mit Zeitplänen verfügt (Zeitpläne innerhalb des Hauptplans), können Benutzer ein übergeordnetes Objekt mit Zeitplänenreferenz erstellen. Weitere Informationen zu optionalen Beispiel-Zeitplankonfigurationen finden Sie unter https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html. Referenzobjekt, z. B. „schedule“: {"ref“:“ myScheduleId „}

Erforderliche Gruppe (mindestens eine der folgenden ist erforderlich) Beschreibung Slot-Typ
runsOn EMR-Cluster, auf dem dieser Auftrag ausgeführt wird. Referenzobjekt, z. B. „runsOn“: {"ref“:“ myEmrCluster Id "}
workerGroup Die Auftragnehmergruppe. Dies wird für Routing-Aufgaben verwendet. Wenn Sie einen runsOn-Wert angeben und workerGroup vorhanden ist, wird workerGroup ignoriert. String

Optionale Felder Beschreibung Slot-Typ
argument Argumente, die an die JAR-Dateien übergeben werden. String
attemptStatus Zuletzt gemeldeter Status von der Remote-Aktivität. String
attemptTimeout Timeout für die Remote-Arbeit abgeschlossen. Wenn diese Option aktiviert ist, kann eine Remote-Aktivität, die nicht innerhalb der festgelegten Startzeit abgeschlossen wird, wiederholt werden. Intervall
dependsOn Angeben der Abhängigkeit von einem anderen ausführbaren Objekt. Referenzobjekt, z. B. „dependSon“: {"ref“:“ myActivityId „}
failureAndRerunModus Beschreibt das Verhalten des Konsumentenknotens, wenn Abhängigkeiten fehlschlagen oder erneut ausgeführt werden Aufzählung
hadoopQueue Der Name der Hadoop-Scheduler-Warteschlange, an die die Aktivität übergeben wird. String
input Speicherort der Eingabedaten. Referenzobjekt, z. B. „input“: {"ref“:“ myDataNode Id "}
lateAfterTimeout Die verstrichene Zeit nach dem Start der Pipeline, innerhalb derer das Objekt abgeschlossen werden muss. Sie wird nur ausgelöst, wenn der Zeitplantyp nicht auf eingestellt ist. ondemand Intervall
mainClass Die Hauptklasse der JAR, mit der Sie die Ausführung ausführen HadoopActivity. String
maxActiveInstances Die maximale Anzahl gleichzeitiger aktiver Instances einer Komponente. Wiederholungen zählen nicht zur Anzahl der aktiven Instances. Ganzzahl
maximumRetries Maximale Anzahl von Versuchen bei Ausfällen Ganzzahl
onFail Eine Aktion, die ausgeführt werden soll, wenn das aktuelle Objekt fehlschlägt. Referenzobjekt, z. B. „onFail“: {"ref“:“ myActionId „}
onLateAction Aktionen, die ausgelöst werden sollen, wenn ein Objekt noch nicht geplant oder noch nicht abgeschlossen wurde. Referenzobjekt, z. B. "onLateAction„: {" ref“:“ myActionId „}
onSuccess Eine Aktion, die ausgeführt wird, wenn das aktuelle Objekt erfolgreich ist. Referenzobjekt, z. B. „onSuccess“: {"ref“:“ myActionId „}
output Speicherort der Ausgabedaten. Referenzobjekt, z. B. „output“: {"ref“:“ myDataNode Id "}
übergeordneter Übergeordnetes Objekt des aktuellen Objekts, aus dem Slots übernommen werden. Referenzobjekt, z. B. „parent“: {"ref“:“ myBaseObject Id "}
pipelineLogUri Die S3-URI (wie 's3://BucketName/Key/ ') zum Hochladen von Protokollen für die Pipeline. String
postActivityTaskConfig Post-Activity-Konfigurationsskript, das ausgeführt werden soll. Dieses besteht aus einer URI des Shell-Skripts in Amazon S3 und einer Liste von Argumenten. Referenzobjekt, z. B. "postActivityTaskConfig“: {"ref“:“ myShellScript ConfigId „}
preActivityTaskConfig Pre-Activity-Konfigurationsskript, das ausgeführt werden soll. Dieses besteht aus einer URI des Shell-Skripts in Amazon S3 und einer Liste von Argumenten. Referenzobjekt, z. B. "preActivityTaskConfig“: {"ref“:“ myShellScript ConfigId „}
precondition Legen Sie optional eine Vorbedingung fest. Ein Datenknoten ist solange nicht als "BEREIT" markiert, bis alle Vorbedingungen erfüllt sind. Referenzobjekt, z. B. „Vorbedingung“: {"ref“:“ myPreconditionId „}
reportProgressTimeout Timeout für aufeinanderfolgende Aufrufe von Remote-Arbeit in reportProgress. Wenn diese Option aktiviert ist, werden Remote-Aktivitäten, die den Fortschritt für den angegebenen Zeitraum nicht melden, als fehlgeschlagen angesehen und es wird erneut versucht. Intervall
retryDelay Die Zeitüberschreitungsdauer zwischen zwei Wiederholungsversuchen. Intervall
scheduleType Mit dem Zeitplantyp können Sie angeben, ob die Objekte in Ihrer Pipeline-Definition am Anfang des Intervalls oder am Ende des Intervalls geplant werden sollen. Zeitreihenstilplanung bedeutet, dass Instances am Ende jedes Intervalls geplant werden und Cron-Stil-Planung bedeutet, dass Instances zu Beginn jedes Intervalls geplant werden. Ein On-Demand-Zeitplan ermöglicht es Ihnen, eine Pipeline einmal pro Aktivierung auszuführen. Dies bedeutet, dass Sie die Pipeline nicht klonen oder neu erstellen müssen, um sie erneut auszuführen. Wenn Sie einen On-Demand-Zeitplan verwenden, muss er im Standardobjekt angegeben werden und der einzige für die Objekte in der Pipeline angegebene scheduleType sein. Um On-Demand-Pipelines zu verwenden, rufen Sie den ActivatePipeline Vorgang einfach für jeden nachfolgenden Lauf auf. Die Werte sind: cron, ondemand und timeseries. Aufzählung

Laufzeitfelder Beschreibung Slot-Typ
@activeInstances Liste der aktuell geplanten aktiven Instance-Objekte. Referenzobjekt, z. B. „ActiveInstances“: {"ref“:“ myRunnableObject Id "}
@actualEndTime Zeitpunkt, zu dem die Ausführung dieses Objekts abgeschlossen wurde. DateTime
@actualStartTime Zeitpunkt, zu dem die Ausführung dieses Objekts gestartet wurde. DateTime
cancellationReason Die cancellationReason, wenn dieses Objekt storniert wurde. String
@cascadeFailedOn Beschreibung der Abhängigkeitskette, bei der das Objekt fehlgeschlagen ist. Referenzobjekt, z. B. "cascadeFailedOn„: {" ref“:“ myRunnableObject Id "}
emrStepLog EMR-Schrittprotokolle nur bei EMR-Aktivitätsversuchen verfügbar String
errorId Die errorId, wenn dieses Objekt fehlgeschlagen ist. String
errorMessage Die errorMessage, wenn dieses Objekt fehlgeschlagen ist. String
errorStackTrace Die Fehler-Stack-Ablaufverfolgung., wenn dieses Objekt fehlgeschlagen ist. String
@finishedTime Der Zeitpunkt, zu der dieses Objekt seine Ausführung beendet hat. DateTime
hadoopJobLog Hadoop-Jobprotokolle für Versuche für EMR-basierte Aktivitäten verfügbar. String
@healthStatus Der Integritätsstatus des Objekts, der Erfolg oder Misserfolg der letzten Objekt-Instance widerspiegelt, die einen beendeten Zustand erreicht hat. String
@healthStatusFromInstanceId Id des Objekts der letzten Instance, das einen beendeten Zustand erreicht hat. String
@ healthStatusUpdated Zeit Zeitpunkt, zu dem der Servicestatus beim letzten Mal aktualisiert wurde. DateTime
hostname Der Hostname des Clients, der den Aufgabenversuch aufnimmt. String
@lastDeactivatedTime Zeitpunkt, zu dem dieses Objekt zuletzt deaktiviert wurde. DateTime
@ latestCompletedRun Zeit Zeitpunkt des letzten Laufs, für den die Ausführung abgeschlossen wurde. DateTime
@latestRunTime Zeitpunkt des letzten Laufs, für den die Ausführung geplant war. DateTime
@nextRunTime Zeitpunkt des Laufs, der als nächstes geplant werden soll DateTime
reportProgressTime Der letzte Zeitpunkt, an dem die Remote-Aktivität einen Fortschritt gemeldet hat. DateTime
@scheduledEndTime Endzeit für Objekt einplanen DateTime
@scheduledStartTime Startzeit für Objekt einplanen DateTime
@Status Der Status des Objekts. String
@Version Pipeline-Version, mit der das Objekt erstellt wurde. String
@waitingOn Beschreibung der Liste der Abhängigkeiten, auf die dieses Objekt wartet. Referenzobjekt, z. B. „waitingOn“: {"ref“:“ myRunnableObject Id "}

Systemfelder Beschreibung Slot-Typ
@error Fehler mit einer Beschreibung des falsch formatierten Objekts. String
@pipelineId Id der Pipeline, zu der dieses Objekt gehört. String
@sphere Die Kugel eines Objekts bezeichnet seinen Platz im Lebenszyklus: Komponentenobjekte ergeben Instance-Objekte, die Versuchsobjekte ausführen. String

Weitere Informationen finden Sie unter: