選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

建立引導動作以使用 Amazon EMR叢集安裝其他軟體

焦點模式
建立引導動作以使用 Amazon EMR叢集安裝其他軟體 - Amazon EMR

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

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

您可以使用引導操作安裝其他軟體,或自訂叢集執行個體的組態。引導動作是 Amazon 使用 Amazon Linux Amazon Machine Image () EMR啟動執行個體後,在叢集上執行的指令碼AMI。引導操作會在 Amazon EMR 安裝您在建立叢集時指定的應用程式之前,以及叢集節點開始處理資料之前執行。如果您將節點新增到執行中的叢集,引導操作也會以同樣的方式在這些節點上執行。您可以建立自訂引導操作,並且在建立叢集時指定它們。

Amazon 4.x EMRAMI版不支援 Amazon 2.x 版和 3.x EMR版的大多數預先定義引導動作。例如,Amazon 4.x EMR版configure-daemons不支援 configure-Hadoop和 。反之,Amazon 4.x EMR版原生提供此功能。如需如何將引導動作從 Amazon 2.x 和 3.x EMRAMI版遷移至 Amazon 4.x EMR版的詳細資訊,請參閱《Amazon EMR版本指南》中的使用舊版 AMI Amazon 自訂叢集和應用程式組態EMR

引導操作基本概念

根據預設,引導操作會以 Hadoop 使用者身分執行。您可以使用 sudo 以根權限執行引導操作。

所有 Amazon EMR管理介面都支援引導動作。您最多可以指定每個叢集 16 個引導動作,方法是從 主控台提供多個bootstrap-actions參數 AWS CLI,或 API。

從 Amazon EMR主控台,您可以在建立叢集時選擇性地指定引導動作。

使用 時CLI,您可以在使用 create-cluster命令建立叢集時新增 --bootstrap-actions 參數,EMR將引導動作指令碼的參考傳遞給 Amazon。

--bootstrap-actions Path="s3://amzn-s3-demo-bucket/filename",Args=[arg1,arg2]

如果引導動作傳回非零錯誤碼,Amazon 會將其EMR視為失敗,並終止執行個體。如果太多執行個體的引導動作失敗,則 Amazon 會EMR終止叢集。如果只有幾個執行個體失敗,Amazon 會EMR嘗試重新配置失敗的執行個體並繼續。使用叢集 lastStateChangeReason 錯誤代碼來識別引導操作造成的失敗。

有條件地執行引導操作

為了僅在主節點上執行引導操作,您可以使用具有某些邏輯的自訂引導操作來判斷節點是否為主節點。

#!/bin/bash if grep isMaster /mnt/var/lib/info/instance.json | grep false; then echo "This is not master node, do nothing,exiting" exit 0 fi echo "This is master, continuing to execute script" # continue with code logic for master node below

下列輸出將從核心節點列印。

This is not master node, do nothing, exiting

下列輸出將從主節點列印。

This is master, continuing to execute script

若要使用此邏輯,請將您的引導操作 (包括上述程式碼) 上傳至 Amazon S3 儲存貯體。在 上 AWS CLI,將 --bootstrap-actions 參數新增至 aws emr create-cluster API 呼叫,並將您的引導指令碼位置指定為 的值Path

關閉動作

引導操作指令碼可藉由將指令碼寫入 /mnt/var/lib/instance-controller/public/shutdown-actions/ 目錄的方式,建立一個或多個關機動作。當叢集終止時,此目錄中的所有指令碼就會平行執行。每個指令碼都必須執行並在 60 秒內完成。

如果節點終止時發生錯誤,則不保證關機動作指令碼會執行。

注意

使用 Amazon 4EMR.0 版及更新版本時,您必須在主節點上手動建立/mnt/var/lib/instance-controller/public/shutdown-actions/目錄。此目錄並非根據存在的目錄;不過,建立之後,此目錄中的指令碼無論如何都會在關機前執行。如需有關連接主節點以建立目錄的詳細資訊,請參閱 使用 連線至 Amazon EMR叢集主節點 SSH

使用自訂引導操作

您可以建立自訂指令碼來執行自訂的引導操作。任何 Amazon EMR 介面都可以參考自訂引導動作。

注意

為了獲得最佳效能,建議您EMR將自訂引導動作、指令碼和其他要與 Amazon 搭配使用的檔案存放在與 AWS 區域 叢集相同的 Amazon S3 儲存貯體中。

新增自訂引導操作

Console
使用主控台建立具有引導動作的叢集
  1. 登入 AWS Management Console,並在 https://console.aws.amazon.com/emr 開啟 Amazon EMR主控台。

  2. 在左側導覽窗格中的 EMR EC2下,選擇叢集,然後選擇建立叢集

  3. 引導操作下,選擇新增以指定動作的名稱、指令碼位置和選用引數。選取新增引導操作

  4. 您也可以選擇新增更多引導操作。

  5. 選擇適用於您的叢集的任何其他選項。

  6. 若要啟動您的叢集,請選擇建立叢集

CLI
使用 建立具有自訂引導動作的叢集 AWS CLI

使用 AWS CLI 包含引導動作時,請將 Path和 指定Args為逗號分隔清單。下列範例不會使用引數清單。

  • 若要使用自訂引導動作啟動叢集,請輸入下列命令,myKey以EC2金鑰對的名稱取代 。包含 --bootstrap-actions 作為參數,並將引導指令碼位置指定為 Path 的值。

    • Linux、 UNIX和 Mac OS X 使用者:

      aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 \ --use-default-roles --ec2-attributes KeyName=myKey \ --applications Name=Hive Name=Pig \ --instance-count 3 --instance-type m5.xlarge \ --bootstrap-actions Path="s3://elasticmapreduce/bootstrap-actions/download.sh"
    • Windows 使用者:

      aws emr create-cluster --name "Test cluster" --release-label emr-4.2.0 --use-default-roles --ec2-attributes KeyName=myKey --applications Name=Hive Name=Pig --instance-count 3 --instance-type m5.xlarge --bootstrap-actions Path="s3://elasticmapreduce/bootstrap-actions/download.sh"

    如果您在未使用 --instance-groups 參數的情況下指定執行個體計數,即會啟動單一主節點,且剩餘執行個體會以核心節點的形式啟動。所有節點都將使用命令中指定的執行個體類型。

    注意

    如果您先前尚未建立預設 Amazon EMR服務角色和EC2執行個體描述檔,請在輸入create-cluster子命令之前輸入 aws emr create-default-roles 來建立它們。

    如需在 中使用 Amazon EMR命令的詳細資訊 AWS CLI,請參閱 https://docs.aws.amazon.com/cli/latest/reference/emr

使用主控台建立具有引導動作的叢集
  1. 登入 AWS Management Console,並在 https://console.aws.amazon.com/emr 開啟 Amazon EMR主控台。

  2. 在左側導覽窗格中的 EMR EC2下,選擇叢集,然後選擇建立叢集

  3. 引導操作下,選擇新增以指定動作的名稱、指令碼位置和選用引數。選取新增引導操作

  4. 您也可以選擇新增更多引導操作。

  5. 選擇適用於您的叢集的任何其他選項。

  6. 若要啟動您的叢集,請選擇建立叢集

使用自訂引導操作將物件從 Amazon S3 複製到每個節點

您可以使用引導操作,在應用程式安裝之前將物件從 Amazon S3 複製到叢集中的每個節點。 AWS CLI 安裝在叢集的每個節點上,因此您的引導動作可以呼叫 AWS CLI 命令。

下列範例示範簡單的引導操作指令碼,這會將檔案 myfile.jar 從 Amazon S3 複製到每個叢集節點上的本機資料夾 /mnt1/myfolder 中。指令碼會儲存至 Amazon S3,其檔案名稱為 copymyfile.sh 且包含下列內容。

#!/bin/bash aws s3 cp s3://amzn-s3-demo-bucket/myfilefolder/myfile.jar /mnt1/myfolder

當您啟動叢集時,您會指定指令碼。下列 AWS CLI 範例示範了這一點:

aws emr create-cluster --name "Test cluster" --release-label emr-7.5.0 \ --use-default-roles --ec2-attributes KeyName=myKey \ --applications Name=Hive Name=Pig \ --instance-count 3 --instance-type m5.xlarge \ --bootstrap-actions Path="s3://amzn-s3-demo-bucket/myscriptfolder/copymyfile.sh"
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。