EmrCluster - AWS Data Pipeline

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 棄用期間延長和修改。強烈建議您使用支援簽名EMR版本 4 的 Amazon 發行版本。對於從 EMR 4.7.x 開始的早期版本,該系列中最新發行的版本已更新為支援「簽名版本 4」。使用舊EMR版本時,建議您使用該系列中的最新版本。此外,請避免使用早於 EMR 4.7.0 的發行版本。

考量事項與限制

使用最新版本的工作執行器

如果您正在使用具有發行版本標籤的自我管理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 這樣的常見庫已從類路徑中刪除。

如果EmrActivityHadoopActivity執行在 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,請將一個新增bootstrapActionEmrCluster物件。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.jaremr-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 沒有這些許可。您必須提供DefaultDataPipelineResourceRoleDataPipelineDefaultRole角色的聯集作為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 區塊裝置的組態。包含指定的磁碟區數量,這些磁碟區會與執行個體群組中的每個執行個體產生關聯性。包含 volumesPerInstancevolumeSpecification,其中:

  • volumesPerInstance是與執行個體群組中每個執行個體相關聯的特定EBS磁碟區組態的磁碟區數量。

  • volumeSpecification是 Amazon EBS 磁碟區規格,例如磁碟區類型IOPS,以及針對連接到 Amazon 叢集中EC2執行個體的磁碟區要求的EBS磁碟區的大小 (以千兆位元組 (GiB) 為單位。EMR

參考物件,例如 “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 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。值為:cronondemandtimeseriestimeseries 排程表示執行個體會排程在每個間隔的結尾。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 包括:

  • iops() 整數。Amazon EBS 磁碟區支援的每秒 I/O 作業數 (IOPS),例如 1000。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的 EBSI/O 特性

  • sizeinGB()。 整數。Amazon EBS 卷的大小,以吉字節(GiB)為單位,例如 500。如需有關磁碟區類型和硬碟大小的有效組合的資訊,請參閱 Amazon EC2 使用者指南中的EBS磁碟區類型

  • volumetType。 字符串。Amazon EBS 磁碟區類型,例如 gp2。支援的磁碟區類型包括標準、gp2、io1、st1、sc1 和其他。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的EBS磁碟區類型

參考物件,例如 “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 物件在生命週期中的位置。元件物件引發執行個體物件,這會執行嘗試物件。 字串

另請參閱