EmrActivity - AWS Data Pipeline

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

EmrActivity

執行 EMR 叢集。

AWS Data Pipeline使用與 Amazon EMR 不同的EmrActivity步驟格式;例如,在步驟欄位中的 JAR 名稱後面AWS Data Pipeline使用逗號分隔的引數。下列範例顯示針對 Amazon EMR 格式化的步驟,接著是其AWS Data Pipeline等效步驟:

s3://example-bucket/MyWork.jar arg1 arg2 arg3
"s3://example-bucket/MyWork.jar,arg1,arg2,arg3"

範例

以下為此物件類型的範例。此範例使用較舊版本的 Amazon EMR。請驗證此範例,瞭解您使用的 Amazon EMR 叢集版本的正確性。

此物件會參考三個您在相同管道定義檔案中定義的其他物件。MyEmrClusterEmrCluster 物件,MyS3InputMyS3Output 則是 S3DataNode 物件。

注意

在此範例中,您可以將 step 欄位取代成您所需的叢集字串,該字串可以是 Pig 指令碼、Hadoop 串流叢集、您自己的 JAR (包含參數) 等。

Hadoop 2.x (AMI 3.x)

{ "id" : "MyEmrActivity", "type" : "EmrActivity", "runsOn" : { "ref" : "MyEmrCluster" }, "preStepCommand" : "scp remoteFiles localFiles", "step" : ["s3://mybucket/myPath/myStep.jar,firstArg,secondArg,-files,s3://mybucket/myPath/myFile.py,-input,s3://myinputbucket/path,-output,s3://myoutputbucket/path,-mapper,myFile.py,-reducer,reducerName","s3://mybucket/myPath/myotherStep.jar,..."], "postStepCommand" : "scp localFiles remoteFiles", "input" : { "ref" : "MyS3Input" }, "output" : { "ref" : "MyS3Output" } }
注意

若要在步驟中將引述傳遞給應用程式,您需要在指令碼的路徑中指定區域,如以下範例所示。此外,您可能需要逸出您傳遞的引數。例如,若您使用 script-runner.jar 執行殼層指令碼,並希望將引數傳遞給指令碼,您必須逸出分隔他們的逗號。以下步驟位置示範如何執行此作業:

"step" : "s3://eu-west-1.elasticmapreduce/libs/script-runner/script-runner.jar,s3://datapipeline/echo.sh,a\\\\,b\\\\,c"

此步驟使用 script-runner.jar 執行 echo.sh 殼層指令碼,並將 abc 做為單一引數傳遞給指令碼。第一個逸出字元會從結果引數中移除,因此您可能需要再次進行逸出。例如,若您在 JSON 使用 File\.gz 做為引數,您可以使用 File\\\\.gz 來逸出它。但是,由於第一個逸出會遭到捨棄,因此您必須使用 File\\\\\\\\.gz

語法

物件呼叫欄位 描述 槽類型
schedule 在排程間隔的執行期間會呼叫此物件。指定其他物件的排程參考,以設定此物件的相依性執行順序。您可以在物件上明確設定排程以滿足這項要求,例如,指定 "schedule": {"ref": "DefaultSchedule"}。在大部分的情況下,建議您將排程參考放在預設的管道物件,讓所有物件都繼承該排程。或者,如果管道有排程的樹狀目錄 (主排程內還有排程),您可以建立含排程參考的父物件。如需範例選用排程組態的詳細資訊,請參閱https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html 參考對象,例如,「時間表」:{「ref」:」myScheduleId「}

必要的群組 (下列其中之一為必要) 描述 槽類型
runsOn 將在其上執行此任務的 Amazon EMR 叢集。 參考物件,例如,「runsOn」: {"ref」: "myEmrClusterId"}
workerGroup 工作者群組。這是用於路由任務。如果您提供 runsOn 值,且 workerGroup 存在,則會忽略 workerGroup 字串

選用欄位 描述 槽類型
attemptStatus 遠端活動最新回報的狀態。 字串
attemptTimeout 遠端工作完成的逾時。如果設定,則系統可能會重試未在設定開始時間內完成的遠端活動。 期間
dependsOn 指定與另一個可執行物件的相依性。 引用對象,例如,「依賴信息」:{「參考」:myActivityId「}
failureAndRerun模式 描述相依性故障或重新執行時的消費者節點行為。 列舉
input 輸入資料的位置。 引用對象,例如,「輸入」:{「ref」:」myDataNode Id「}
lateAfterTimeout 管線開始後,物件必須在其中完成的經過時間。僅當明細表類型未設定為時,才會觸發此選項ondemand 期間
maxActiveInstances 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 Integer
maximumRetries 故障時嘗試重試的次數上限。 Integer
onFail 目前物件發生故障時要執行的動作。 引用對象,例如,「onFail」:{「參考」:myActionId「}
onLateAction 某個物件尚未排程或仍未完成時,應該觸發的動作。 參考物件,例如,onLateAction"": {"ref」:」myActionId「}
onSuccess 目前物件成功時要執行的動作。 引用對象,例如,「onSuccess」:{「裁判」:」myActionId「}
output 輸出資料的位置。 引用對象,例如,「輸出」:{「ref」:」myDataNode Id「}
parent 目前物件的父系,其槽會被繼承。 引用對象,例如,「父」:{「ref」:」myBaseObject Id「}
pipelineLogUri Amazon S3 URI,例如 's3:///BucketName前綴/',用於上傳管道的日誌。 字串
postStepCommand 完成所有步驟後要執行的 Shell 指令碼。若要指定多個指令碼 (最多 255 個),請新增多個 postStepCommand 欄位。 字串
precondition 選擇是否定義先決條件。在所有先決條件滿足前,資料節點不會標示為"READY"。 引用對象,例如,「先決條件」:{「ref」:」myPreconditionId「}
preStepCommand 執行任何步驟之前要執行的 Shell 指令碼。若要指定多個指令碼 (最多 255 個),請新增多個 preStepCommand 欄位。 字串
reportProgressTimeout 遠端工作連續呼叫 reportProgress 的逾時。如果設定,則不回報指定時段進度的遠端活動,可能會視為已停滯而重試。 期間
resizeClusterBefore跑步

在執行此活動之前重新調整叢集大小,以容納指定為輸入或輸出的 DynamoDB 表。

注意

如果您的 EmrActivity 使用 DynamoDBDataNode 做為輸入或輸出資料節點,且您將 resizeClusterBeforeRunning 設為 TRUE,則 AWS Data Pipeline 會開始使用 m3.xlarge 執行個體類型。這會將您選擇的執行個體類型覆寫為 m3.xlarge,可能會增加您的每月成本。

Boolean
resizeClusterMax實例 調整大小演算法可請求的執行個體數目上限。 Integer
retryDelay 兩次重試嘗試之間的逾時持續時間。 期間
scheduleType 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。值為:cronondemandtimeseriestimeseries 排程表示執行個體會排程在每個間隔的結尾。cron 排程表示執行個體會排程在每個間隔的開頭。ondemand 排程可讓您在每次啟用時執行一次管道。您不必複製或重新建立管道,然後再執行一次。若您使用 ondemand 排程,則必須在預設物件中指定此排程,且其必須是針對管道中物件指定的唯一 scheduleType。若要使用 ondemand 管道,請針對每次後續執行呼叫 ActivatePipeline 操作。 列舉
步驟 叢集要執行的一或多個步驟。若要指定多個步驟 (最多 255 個),請新增多個步驟欄位。在 JAR 名稱後方,使用逗號分隔的引數,例如 s3://example-bucket/MyWork.jar,arg1,arg2,arg3 字串

執行時間欄位 描述 槽類型
@activeInstances 目前已排程的作用中執行個體物件清單。 引用對象,例如「活動實例」:{「ref」:「myRunnableObjectId」}
@actualEndTime 此物件執行完成的時間。 DateTime
@actualStartTime 此物件執行開始的時間。 DateTime
cancellationReason 若此物件已取消,會提供 cancellationReason。 字串
@cascadeFailedOn 物件失敗所在的相依鏈的描述。 參考物件,例如,"cascadeFailedOn" ": {" ref」: "myRunnableObjectId"}
emrStepLog Amazon EMR 步驟日誌僅適用於 EMR 活動嘗試 字串
errorId 若此物件失敗,會提供 errorId 字串
errorMessage 若此物件失敗,會提供 errorMessage 字串
errorStackTrace 如果此物件失敗,則為錯誤堆疊追蹤。 字串
@finishedTime 此物件完成其執行的時間。 DateTime
hadoopJobLog 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 字串
@healthStatus 反映已達終止狀態之最後一個物件執行個體成功或失敗的物件運作狀態。 字串
@healthStatusFromInstanceId 已達終止狀態之最後一個執行個體物件的 ID。 字串
@ healthStatusUpdated 時間 上次更新運作狀態的時間。 DateTime
hostname 選取任務嘗試之用戶端的主機名稱。 字串
@lastDeactivatedTime 此物件最後停用的時間。 DateTime
@ latestCompletedRun 時間 執行完成最近一次執行的時間。 DateTime
@latestRunTime 執行排程最近一次執行的時間。 DateTime
@nextRunTime 下次要排程執行的時間。 DateTime
reportProgressTime 遠端活動最近報告進度的時間。 DateTime
@scheduledEndTime 物件的排程結束時間。 DateTime
@scheduledStartTime 物件的排程開始時間。 DateTime
@status 此物件的狀態。 字串
@version 建立物件時使用的管道版本。 字串
@waitingOn 此物件等待之相依性清單的描述。 引用對象,例如,「等待」:{「參考」:」myRunnableObject ID「}

系統欄位 描述 槽類型
@error 描述格式錯誤物件的錯誤。 字串
@pipelineId 此物件所屬管道的 ID。 字串
@sphere 物件範圍代表其在生命週期中的位置:Component 物件會引發執行 Attempt 物件的 Instance 物件。 字串

另請參閲