AWS Data Pipeline ist für Neukunden nicht mehr verfügbar. Bestehende Kunden von AWS Data Pipeline können den Service weiterhin wie gewohnt nutzen. Weitere Informationen
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 einer anderen AWS Data Pipeline Ressource verwaltet wird, wenn Sie Folgendes 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 mit der Amazon EMR Step-Aktion sequenziell ausführen möchten, können Sie sie trotzdem verwendenEmrActivity.
Beispiele
HadoopActivity unter Verwendung eines EMR Clusters, das verwaltet wird 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 YARN für Hadoop 2-basierte Warteschlangen konfiguriert: AMIs
{ "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 EmrCluster basieren auf CapacityScheduler Hadoop 2: 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 unter Verwendung eines vorhandenen Clusters EMR
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
-
Ein MapReduce Programm nur ausführen auf
myWorkerGroup
Ressourcen schätzen. Weitere Informationen zu Worker-Gruppen finden Sie unter Arbeiten an vorhandenen Ressourcen mit Task Runner ausführen. -
Führen Sie eine preActivityTask Config und eine postActivityTask Config aus
{ "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 eines 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 | EMRCluster, auf dem dieser Job 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 existiert, workerGroup wird dies ignoriert. | String |
Optionale Felder | Beschreibung | Slot-Typ |
---|---|---|
argument | Argumente, die an die übergeben werden sollenJAR. | 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 nach dem Start der Pipeline verstrichene Zeit, innerhalb der das Objekt abgeschlossen werden muss. Sie wird nur ausgelöst, wenn der Zeitplantyp nicht auf eingestellt ist. ondemand |
Intervall |
mainClass | Die Hauptklasse der, mit der JAR 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 | Das S3 URI (wie 's3://BucketName/Key/ ') zum Hochladen von Protokollen für die Pipeline. | String |
postActivityTaskConfig | Post-Activity-Konfigurationsskript, das ausgeführt werden soll. Dies besteht URI aus einem Shell-Skript in Amazon S3 und einer Liste von Argumenten. | Referenzobjekt, z. B. "postActivityTaskConfig“: {"ref“:“ myShellScript ConfigId „} |
preActivityTaskConfig | Pre-Activity-Konfigurationsskript, das ausgeführt werden soll. Dies besteht URI aus einem Shell-Skript in Amazon S3 und einer Liste von Argumenten. | Referenzobjekt, z. B. "preActivityTaskConfig“: {"ref“:“ myShellScript ConfigId „} |
precondition | Legen Sie optional eine Vorbedingung fest. Ein Datenknoten wird erst mit "READY" markiert, wenn alle Voraussetzungen erfüllt sind. | Referenzobjekt, z. B. „Vorbedingung“: {"ref“:“ myPreconditionId „} |
reportProgressTimeout | Timeout für aufeinanderfolgende Anrufe von zu Hause aus. 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 dieser im Standardobjekt angegeben werden und darf das einzige Objekt sein, das für Objekte in der Pipeline scheduleType angegeben wird. 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 | Das cancellationReason , ob dieses Objekt storniert wurde. | String |
@cascadeFailedOn | Beschreibung der Abhängigkeitskette, bei der das Objekt fehlgeschlagen ist. | Referenzobjekt, z. B. "cascadeFailedOn„: {" ref“:“ myRunnableObject Id "} |
emrStepLog | EMRSchrittprotokolle sind nur bei EMR Aktivitätsversuchen verfügbar | String |
errorId | Das errorId , wenn dieses Objekt fehlgeschlagen ist. | String |
errorMessage | Das ist 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 sind bei Versuchen 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 |
@ Zeit healthStatusUpdated | 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 |