AWS Data Pipeline 不再提供給新客戶。現有客戶 AWS Data Pipeline 可繼續正常使用此服務。進一步了解
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
EmrCluster
表示 Amazon EMR 叢集的組態。此物件是由EmrActivity和用HadoopActivity來啟動叢集。
排程器
排程器可提供在 Hadoop 叢集內指定資源配置和任務優先順序的方式。管理員或使用者可以為各種類別的使用者和應用程式選擇排程器。排程器可使用佇列,將資源配置給使用者和應用程式。您可以在建立叢集時設定這些佇列。您接著可以設定特定類型工作和使用者的優先順序。這可以讓您有效率地使用叢集資源,允許超過一名使用者將工作提交至叢集。有三種可用的排程器類型:
-
FairScheduler
— 嘗試在大量時間內平均排程資源。 -
CapacityScheduler
— 使用佇列允許叢集管理員將使用者指派至不同優先順序和資源配置的佇列。 -
預設 — 由叢集使用,可由您的場地設定。
Amazon EMR 發布版本
Amazon EMR 版本是來自大數據生態系統的一組開放原始碼應用程式。每個版本都包含不同的大數據應用程式、元件和功能,您可以在建立叢集時選擇讓 Amazon EMR 安裝和設定這些功能。請使用版本標籤指定發行版本。發行標籤的格式應為 emr-
。例如:x.x.x
emr-5.30.0
。Amazon EMR 叢集以發行標籤為基礎,emr-4.0.0
並在稍後使用該releaseLabel
屬性來指定EmrCluster
物件的發行標籤。早期版本使用此 amiVersion
屬性。
重要
使用 5.22.0 版或更新版本建立的所有 Amazon EMR 叢集都使用簽名版本 4 來驗證傳送給 Amazon S3 的請求。某些早期版本會使用簽章版本 2。簽章版本 2 支援將不再提供。如需詳細資訊,請參閱 Amazon S3 更新 — Sigv2 棄用期間延長和修改
考量事項與限制
使用最新版本的工作執行器
如果您正在使用具有發行版本標籤的自我管理EmrCluster
物件,請使用最新的工作執行器。如需 Task Runner 的詳細資訊,請參閱使用工作執行器。您可以為所有 Amazon EMR 組態分類設定屬性值。如需詳細資訊,請參閱 Amazon EMR 版本指南中的設定應用程式EmrConfiguration、和屬性物件參考。
Support IMDSv2
稍早版本僅 AWS Data Pipeline 支援IMDSv1。現在,IMDSv2在 Amazon EMR 5.23.1,5.27.1 和 5.32 或更高版本以及 Amazon EMR 6.2 或更高版本中 AWS Data Pipeline 支持。IMDSv2從執行個體擷取中繼資料資訊時,會使用工作階段導向方法來更妥善處理驗證。您應該使用 TaskRunner -2.0 建立使用者管理的資源,將執行個體設定為IMDSv2撥打呼叫。
Amazon EMR 5.32 或更高版本和 Amazon 6.x EMR
Amazon EMR 5.32 或更高版本和 6.x 發布系列使用 Hadoop 版本 3.x,這引入了與 Hadoop 版本 2.x 相比,如何評估 Hadoop 的類路徑的突破性變化。像 Joda-Time 這樣的常見庫已從類路徑中刪除。
如果EmrActivity或HadoopActivity執行在 Hadoop 3.x 中移除的程式庫具有相依性的 Jar 檔案,則步驟會失敗並顯示錯誤java.lang.NoClassDefFoundError
或。java.lang.ClassNotFoundException
對於使用 Amazon EMR 5.x 發行版本沒有問題的 Jar 檔案,可能會發生這種情況。
若要修正此問題,您必須先將 Jar 檔案相依性複製到EmrCluster
物件上的 Hadoop 類別路徑,然後再啟動或. EmrActivity
HadoopActivity
我們提供了一個 bash 腳本來做到這一點。bash 腳本可在以下位置使用,其中 MyRegion
例如,您的EmrCluster
對象運行的 AWS 區域us-west-2
。
s3://datapipeline-
MyRegion
/MyRegion
/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh
執行指令碼的方式取決於是否EmrActivity
在自我管理的資源上HadoopActivity
執行 AWS Data Pipeline 或是在自我管理的資源上執行。
如果您使用由管理的資源 AWS Data Pipeline,請將一個新增bootstrapAction
至EmrCluster
物件。bootstrapAction
指定要複製為引數的指令碼和 Jar 檔案。每個EmrCluster
物件最多可以新增 255 個bootstrapAction
欄位,也可以將bootstrapAction
欄位新增至已具有啟動程序動作的EmrCluster
物件。
若要將此指令碼指定為啟動程序動作,請使用下列語法,其中JarFileRegion
是儲存 Jar 檔案的區域,以及每個 MyJarFilen
是要複製到 Hadoop 類路徑的 Jar 文件的 Amazon S3 中的絕對路徑。依預設,請勿指定 Hadoop 類別路徑中的 Jar 檔案。
s3://datapipeline-
MyRegion
/MyRegion
/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh,JarFileRegion
,MyJarFile1
,MyJarFile2
[, ...]
下列範例會指定在 Amazon S3 中複製兩個 Jar 檔案的啟動程序動作:my-jar-file.jar
和emr-dynamodb-tool-4.14.0-jar-with-dependencies.jar
. 範例中使用的區域為 us-west-2。
{ "id" : "
MyEmrCluster
", "type" : "EmrCluster", "keyPair" : "my-key-pair
", "masterInstanceType" : "m5.xlarge
", "coreInstanceType" : "m5.xlarge
", "coreInstanceCount" : "2
", "taskInstanceType" : "m5.xlarge
", "taskInstanceCount": "2
", "bootstrapAction" : ["s3://datapipeline-us-west-2
/us-west-2
/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh,us-west-2
,s3://path/to/my-jar-file.jar,s3://dynamodb-dpl-us-west-2
/emr-ddb-storage-handler/4.14.0/emr-dynamodb-tools-4.14.0-jar-with-dependencies.jar"] }
您必須儲存並啟動配管,新的變更bootstrapAction
才會生效。
如果您使用自我管理的資源,您可以將指令碼下載到叢集執行個體,然後使用SSH. 該腳本創建一個名為的目錄/etc/hadoop/conf/shellprofile.d
和一個datapipeline-jars.sh
在該目錄中命名的文件。做為命令列引數提供的 jar 檔案會複製到指令碼建立名稱的目錄中/home/hadoop/datapipeline_jars
。如果您的叢集設定不同,請在下載指令碼後適當地修改指令碼。
在命令列上執行指令碼的語法與使用上一個範例中bootstrapAction
所示的語法略有不同。在引數之間使用空格而不是逗號,如下列範例所示。
./copy-jars-to-hadoop-classpath.sh
us-west-2
s3://path/to/my-jar-file.jar s3://dynamodb-dpl-us-west-2
/emr-ddb-storage-handler/4.14.0/emr-dynamodb-tools-4.14.0-jar-with-dependencies.jar
Amazon EMR 許可
建立自訂IAM角色時,請仔細考慮叢集執行其工作所需的最低權限。請務必授予對所需資源的存取權,例如 Amazon S3 中的檔案或亞馬遜RDS、Amazon Redshift 或 DynamoDB 中的資料。若您希望將 visibleToAllUsers
設為 False,您的角色必須擁有適當的許可來執行此作業。請注意,DataPipelineDefaultRole
沒有這些許可。您必須提供DefaultDataPipelineResourceRole
和DataPipelineDefaultRole
角色的聯集作為EmrCluster
對象角色,或為此目的創建自己的角色。
語法
物件呼叫欄位 | 描述 | 槽類型 |
---|---|---|
schedule | 在排程間隔的執行期間會呼叫此物件。指定其他物件的排程參考,以設定此物件的相依性執行順序。您可以在物件上明確設定排程以滿足這項要求,例如,指定 "schedule": {"ref":
"DefaultSchedule"} 。在大部分的情況下,建議您將排程參考放在預設的管道物件,讓所有物件都繼承該排程。或者,如果管道有排程的樹狀目錄 (主排程內還有排程),您可以建立含排程參考的父物件。如需範例選用排程組態的詳細資訊,請參閱https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html。 |
參考物件,例如 "schedule":{"ref":"myScheduleId"} |
選用欄位 | 描述 | 槽類型 |
---|---|---|
actionOnResource失敗 | 此資源的資源故障之後所採取的動作。有效值為 "retryall " (這會在指定的時間內重試叢集所有任務) 和 "retrynone "。 |
字串 |
actionOnTask失敗 | 此資源的任務失敗之後所採取的動作。有效值為 "continue (繼續)" (表示不終止叢集) 和 "terminate (終止)"。 | 字串 |
additionalMasterSecurityGroupIds | EMR叢集之其他主要安全性群組的識別碼,其格式遵循 sg-XXXX6a 01。如需詳細資訊,請參閱 Amazon EMR管理指南中的 Amazon EMR 其他安全群組。 | 字串 |
additionalSlaveSecurityGroupIds | EMR叢集之其他從屬安全性群組的識別碼,其格式如下sg-01XXXX6a 。 |
字串 |
amiVersion | Amazon 用於安裝群集節點的 Amazon EMR 機器映像(AMI)版本。如需詳細資訊,請參閱 Amazon EMR 管理指南。 | 字串 |
應用程式 | 以逗號分隔引數安裝在叢集中的應用程式。根據預設,會安裝 Hive 和 Pig。此參數僅適用於 Amazon 4.0 及更高EMR版本。 | 字串 |
attemptStatus | 遠端活動最新回報的狀態。 | 字串 |
attemptTimeout | 遠端工作完成的逾時。如果設定,則系統可能會重試未在設定開始時間內完成的遠端活動。 | 期間 |
availabilityZone | 叢集執行所在的可用區域。 | 字串 |
bootstrapAction | 當叢集啟動時要執行的動作。您可以指定逗號分隔引數。若要指定上限 255 的多個動作,請新增多個 bootstrapAction 欄位。預設行為是不使用任何引導操作啟動叢集。 |
字串 |
組態 | Amazon EMR 群集的配置。此參數僅適用於 Amazon 4.0 及更高EMR版本。 | 參考物件,例如 "configuration":{"ref":"myEmrConfigurationId"} |
coreInstanceBid價格 | 您願意為 Amazon EC2 執行個體支付的最高 Spot 價格。如果指定了出價,Amazon EMR 會將競價型執行個體用於執行個體群組。在中指定USD。 | 字串 |
coreInstanceCount | 用於叢集的核心節點數目。 | Integer |
coreInstanceType | 用於核心節點的 Amazon EC2 執行個體類型。請參閱 支援 Amazon EMR 叢集的亞馬遜 EC2 執行個體 。 | 字串 |
coreGroupConfiguration | Amazon EMR 叢集核心執行個體群組的組態。此參數僅適用於 Amazon 4.0 及更高EMR版本。 | 參考物件,例如 “configuration”: {“ref”:
“myEmrConfigurationId”} |
coreEbsConfiguration | 將連接至 Amazon EMR 叢集核心群組中每個核心節點的 Amazon EBS 磁碟區組態。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的 Support EBS 最佳化的執行個體類型。 | 參考物件,例如 “coreEbsConfiguration”: {“ref”:
“myEbsConfiguration”} |
customAmiId | 僅適用於 Amazon EMR 版本 5.7.0 及更高版本。指定 Amazon EMR 佈建 Amazon 執行個EC2體時AMI要使用的自訂 AMI ID。它也可以用來代替引導操作來自定義叢集節點配置。如需詳細資訊,請參閱 Amazon EMR 管理指南中的以下主題。使用自訂 AMI | 字串 |
EbsBlockDeviceConfig |
與執行個體群組相關聯的要求 Amazon EBS 區塊裝置的組態。包含指定的磁碟區數量,這些磁碟區會與執行個體群組中的每個執行個體產生關聯性。包含
|
參考物件,例如 “EbsBlockDeviceConfig”: {“ref”:
“myEbsBlockDeviceConfig”} |
emrManagedMasterSecurityGroupId | Amazon EMR 叢集之主要安全群組的識別碼,其形式遵循sg-01XXXX6a . 如需詳細資訊,請參閱 Amazon EMR 管理指南中的設定安全群組。 |
字串 |
emrManagedSlaveSecurityGroupId | Amazon EMR 叢集之從屬安全群組的識別碼,該識別碼遵循下列表單sg-01XXXX6a 。 |
字串 |
enableDebugging | 啟用 Amazon EMR 叢集上的偵錯功能。 | 字串 |
failureAndRerun模式 | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 |
hadoopSchedulerType | 叢集的排程器類型。有效類型為:
PARALLEL_FAIR_SCHEDULING 、
PARALLEL_CAPACITY_SCHEDULING 和
DEFAULT_SCHEDULER 。 |
列舉 |
httpProxy | 用戶端用來連線至AWS服務的 Proxy 主機。 | 參考物件,例如,"httpProxy" ": {" ref」: "myHttpProxyId"} |
initTimeout | 等候資源啟動的時間長短。 | 期間 |
keyPair | 用於登入 Amazon EMR 叢集主節點的 Amazon EC2 key pair。 | 字串 |
lateAfterTimeout | 管線開始後,物件必須在其中完成的經過時間。僅當明細表類型未設定為時,才會觸發此選項ondemand 。 |
期間 |
masterInstanceBid價格 | 您願意為 Amazon EC2 執行個體支付的最高 Spot 價格。介於 0 到 20.00 的小數值 (不含 0 和 20.00)。在中指定USD。設定此值可啟用 Amazon EMR 叢集主節點的競價型執行個體。如果指定了出價,Amazon EMR 會將競價型執行個體用於執行個體群組。 | 字串 |
masterInstanceType | 要用於主節點的 Amazon EC2 執行個體類型。請參閱 支援 Amazon EMR 叢集的亞馬遜 EC2 執行個體 。 | 字串 |
masterGroupConfiguration | Amazon EMR 叢集主執行個體群組的組態。此參數僅適用於 Amazon 4.0 及更高EMR版本。 | 參考物件,例如 “configuration”: {“ref”:
“myEmrConfigurationId”} |
masterEbsConfiguration | 將連接到 Amazon EMR 叢集中主群組中每個主節點的 Amazon EBS 磁碟區組態。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的 Support EBS 最佳化的執行個體類型。 | 參考物件,例如 “masterEbsConfiguration”: {“ref”:
“myEbsConfiguration”} |
maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer |
maximumRetries | 故障時嘗試重試的次數上限。 | Integer |
onFail | 目前物件發生故障時要執行的動作。 | 參考物件,例如 "onFail":{"ref":"myActionId"} |
onLateAction | 某個物件尚未排程或仍未完成時,應該觸發的動作。 | 參考物件,例如 "onLateAction":{"ref":"myActionId"} |
onSuccess | 目前物件成功時要執行的動作。 | 參考物件,例如 "onSuccess":{"ref":"myActionId"} |
parent | 目前物件的父系,其插槽已被繼承。 | 參考物件,例如 "parent":{"ref":"myBaseObjectId"} |
pipelineLogUri | 用於上傳管道日誌的 Amazon S3URI(例如 's3://BucketName/密鑰/')。 | 字串 |
region | Amazon EMR 叢集應執行之區域的程式碼。根據預設,叢集執行所在的區域和管道相同。您可以在和相依資料集相同的區域中執行叢集。 | 列舉 |
releaseLabel | EMR叢集的釋出標籤。 | 字串 |
reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定,則不回報指定時段進度的遠端活動,可能會視為已停滯而重試。 |
期間 |
resourceRole | AWS Data Pipeline 用來建立 Amazon EMR 叢集的IAM角色。預設角色為 DataPipelineDefaultRole 。 |
字串 |
retryDelay | 兩次重試嘗試之間的逾時持續時間。 | 期間 |
role | 傳遞給 Amazon EMR 創建EC2節點的IAM角色。 | 字串 |
runsOn | 此物件不允許此欄位。 | 參考物件,例如 "runsOn":{"ref":"myResourceId"} |
securityConfiguration | 將套用至叢集之EMR安全性組態的識別碼。此參數僅適用於 Amazon 4.8.0 EMR 版及更高版本。 | 字串 |
serviceAccessSecurityGroupId | Amazon EMR 叢集之服務存取安全群組的識別碼。 | 字串. 它遵循 sg-01XXXX6a 格式,例如 sg-1234abcd 。 |
scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。值為:cron 、ondemand 和 timeseries 。timeseries 排程表示執行個體會排程在每個間隔的結尾。cron 排程表示執行個體會排程在每個間隔的開頭。ondemand 排程可讓您在每次啟用時執行一次管道。您不必複製或重新建立管道,然後再執行一次。若您使用 ondemand 排程,則必須在預設物件中指定此排程,且其必須是針對管道中物件指定的唯一 scheduleType 。若要使用 ondemand 管道,請針對每次後續執行呼叫 ActivatePipeline 操作。 |
列舉 |
subnetId | 要啟動 Amazon EMR 叢集的子網路識別碼。 | 字串 |
supportedProducts | 在 Amazon EMR 叢集上安裝第三方軟體的參數,例如 Hadoop 的第三方發行版本。 | 字串 |
taskInstanceBid價格 | 您願意為EC2執行個體支付的最高 Spot 價格。介於 0 到 20.00 的小數值 (不含 0 和 20.00)。在中指定USD。如果指定了出價,Amazon EMR 會將競價型執行個體用於執行個體群組。 | 字串 |
taskInstanceCount | 要用於 Amazon EMR 叢集的任務節點數目。 | Integer |
taskInstanceType | 用於任務節點的 Amazon EC2 執行個體類型。 | 字串 |
taskGroupConfiguration | Amazon EMR 叢集任務執行個體群組的組態。此參數僅適用於 Amazon 4.0 及更高EMR版本。 | 參考物件,例如 “configuration”: {“ref”:
“myEmrConfigurationId”} |
taskEbsConfiguration | 將連接到 Amazon EMR 叢集中任務群組中每個任務節點的 Amazon EBS 磁碟區的組態。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的 Support EBS 最佳化的執行個體類型。 | 參考物件,例如 “taskEbsConfiguration”: {“ref”:
“myEbsConfiguration”} |
terminateAfter | 在這些小時後終止資源。 | Integer |
VolumeSpecification |
Amazon EBS 磁碟區規格,例如磁碟區類型IOPS,以及以千兆位元組 (GiB) 為單位的大小,將要求連接到 Amazon 叢集中 Amazon EC2 執行個體的 Amazon EBS 磁碟區。EMR節點可以是核心節點、主節點或任務節點。
|
參考物件,例如 “VolumeSpecification”: {“ref”:
“myVolumeSpecification”} |
useOnDemandOnLastAttempt | 最後一次嘗試請求資源時,提出隨需執行個體請求,而不是 Spot 執行個體請求。這可確保即使之前所有的嘗試都失敗,最後一次嘗試也不會中斷。 | Boolean |
workerGroup | 此物件不允許此欄位。 | 字串 |
執行時間欄位 | 描述 | 槽類型 |
---|---|---|
@activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件,例如,"activeInstances" ": {" ref」: "myRunnableObjectId"} |
@actualEndTime | 此物件執行完成的時間。 | DateTime |
@actualStartTime | 此物件執行開始的時間。 | DateTime |
cancellationReason | cancellationReason 如果此物件已取消。 | 字串 |
@cascadeFailedOn | 物件失敗所在相依性鏈的描述。 | 參考物件,例如,"cascadeFailedOn" ": {" ref」: "myRunnableObjectId"} |
emrStepLog | 步驟日誌僅適用於 Amazon EMR 活動嘗試。 | 字串 |
errorId | 若此物件失敗,會提供錯誤 ID。 | 字串 |
errorMessage | 若此物件失敗,會提供錯誤訊息。 | 字串 |
errorStackTrace | 如果此物件失敗,則為錯誤堆疊追蹤。 | 字串 |
@failureReason | 資源故障的原因。 | 字串 |
@finishedTime | 此物件完成其執行的時間。 | DateTime |
hadoopJobLog | Hadoop 任務日誌可在嘗試 Amazon EMR 活動時使用。 | 字串 |
@healthStatus | 反映已達終止狀態之最後一個物件執行個體成功或失敗的物件運作狀態。 | 字串 |
@healthStatusFromInstanceId | 已達終止狀態之最後一個執行個體物件的 ID。 | 字串 |
@ healthStatusUpdated 時間 | 上次更新運作狀態的時間。 | DateTime |
hostname | 選取任務嘗試之用戶端的主機名稱。 | 字串 |
@lastDeactivatedTime | 此物件最後停用的時間。 | DateTime |
@ latestCompletedRun 時間 | 執行完成最近一次執行的時間。 | DateTime |
@latestRunTime | 執行排程最近一次執行的時間。 | DateTime |
@nextRunTime | 下次要排程執行的時間。 | DateTime |
reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime |
@scheduledEndTime | 物件的排程結束時間。 | DateTime |
@scheduledStartTime | 物件的排程開始時間。 | DateTime |
@status | 此物件的狀態。 | 字串 |
@version | 建立物件使用的管道版本。 | 字串 |
@waitingOn | 此物件等待之相依性清單的描述。 | 參考物件,例如,"waitingOn" ": {" ref」: "myRunnableObjectId"} |
系統欄位 | 描述 | 槽類型 |
---|---|---|
@error | 描述格式錯誤物件的錯誤。 | 字串 |
@pipelineId | 此物件所屬管道的 ID。 | 字串 |
@sphere | 物件在生命週期中的位置。元件物件引發執行個體物件,這會執行嘗試物件。 | 字串 |