添加引導操作能夠協助您安裝所需的第三方軟體或修改叢集的運行環境。本文將為您詳細介紹如何添加引導操作及其相關樣本。
背景資訊
引導操作功能能夠在叢集建立、擴容或Auto Scaling時,自動在新增節點上執行指定指令碼。手動執行功能則允許使用者批量選擇在現有節點上運行指定指令碼,以滿足個人化需求,手動執行指令碼的詳情,請參見手動執行指令碼。
引導操作類似於手動執行。在叢集建立過程中或建立完成後,您可以通過引導操作功能,執行許多當前E-MapReduce叢集尚未支援的操作,例如:
使用Yum安裝已經提供的軟體。
直接從公網上下載一些公開的軟體。
從OSS中讀取您所擁有的資料。
安裝並運行一個服務,例如Flink或者Impala。
使用限制
您最多可以添加10個引導操作。添加的引導操作將按照您指定的順序執行。
您指定的指令碼預設使用root賬戶執行,您也可以在指令碼中使用
su - hadoop命令,切換為hadoop使用者執行。
添加引導操作
添加引導操作支援以下兩種方式。
方式一:建立叢集時添加引導操作
進入叢集管理頁面。
在頂部功能表列處,根據實際情況選擇地區和資源群組。
在EMR on ECS頁面,單擊建立叢集。
在基礎配置的進階設定地區,單擊引導操作所在行的添加引導操作。
填寫以下配置項。
參數
描述
操作名稱
引導操作的名稱。
指令碼地址
選擇指令碼所在OSS的路徑。
指令碼路徑格式必須為oss://**/*.sh格式。
參數
引導操作指令碼的參數,指定指令碼中所引用的變數的值。
執行時間
組件安裝前:組件安裝前執行該指令碼。
組件啟動前:組件安裝後、啟動前執行該指令碼。
組件啟動後:組件啟動後執行該指令碼。
執行失敗策略
繼續執行:如果該指令碼執行失敗,則繼續執行下一個指令碼,不會影響叢集建立或擴容流程。
停止執行:如果該指令碼執行失敗,則立即停止當前指令碼的執行,並標記叢集建立或擴容流程為失敗狀態。
執行範圍
取值範圍如下:
叢集:此引導操作適用於整個叢集。
節點群組類型:此操作引導僅適用於您選擇的節點群組的類型。
引導操作樣本請參見樣本。
說明引導操作可能會執行失敗,但其失敗並不會影響叢集的建立。
有關建立叢集詳情,請參見建立叢集。叢集建立成功後,您可以在叢集的指令碼操作頁面查看是否有異常發生。如發現異常,請參見查看指令碼執行日誌。
方式二:建立叢集後添加引導操作
進入指令碼操作頁面。
在頂部功能表列處,根據實際情況選擇地區和資源群組。
單擊目的地組群的叢集服務。
單擊上方的指令碼操作頁簽。
在引導操作頁面,單擊添加引導操作。
在添加引導操作對話方塊中,填寫配置項。

參數
描述
名稱
引導操作的名稱。
指令碼位置
選擇指令碼所在的OSS位置。
指令碼路徑格式必須為oss://**/*.sh格式。
參數
引導操作指令碼的參數,指定指令碼中所引用的變數的值。
執行範圍
取值範圍如下:
叢集:此引導操作適用於整個叢集。
節點群組類型:此操作引導僅適用於您選擇的節點群組的類型。
指定節點群組:此引導操作僅適用於您選擇的節點群組。
執行時間
組件安裝前:組件安裝前執行該指令碼。
組件啟動前:組件安裝後、啟動前執行該指令碼。
組件啟動後:組件啟動後執行該指令碼。
執行失敗策略
繼續執行:如果該指令碼執行失敗,則繼續執行下一個指令碼,不會影響叢集建立或擴容流程。
停止執行:如果該指令碼執行失敗,則立即停止當前指令碼的執行,並標記叢集建立或擴容流程為失敗狀態。
單擊確定。
引導操作樣本請參見樣本。
您可以對已有的引導操作進行以下操作:
編輯引導操作:單擊目標引導操作所在行的編輯。
複製引導操作:單擊目標引導操作所在行的複製。
刪除引導操作:單擊目標引導操作所在行的刪除。
查看指令碼執行日誌
建議您在指令碼中關鍵位置增加日誌列印邏輯,以便通過作業記錄輔助您排查指令碼運行情況。
您可以通過操作歷史查看引導操作指令碼的執行日誌。具體步驟如下:
進入叢集服務頁面。
在左側導覽列,單擊EMR on ECS。
在頂部功能表列處,根據實際情況選擇地區和資源群組。
在EMR on ECS頁面,單擊目的地組群的叢集服務。
單擊指令碼操作頁簽,再單擊要查看的指令碼右側的查看執行結果。
在操作歷史面板中,找到執行指令碼的操作,查看詳情。
DataLake、DataFlow、OLAP、DataServing和自訂叢集:在建立叢集(create)或擴容(increaseNodeGroup)操作記錄中,單擊
查看任務詳情。其中RUN_BOOTSTRAP_CLUSTER_SCRIPT_<引導操作名稱>_<引導操作ID>開頭的任務為執行引導操作的任務,可查看執行Stdout和Stderr日誌。Hadoop、Data Science和EMR Studio叢集:在建立叢集(CREATE_CLUSTER)或擴容(RESIZE_CLUSTER)操作記錄中,單擊
查看任務詳情。pollDeployTaskStatusActivity下的RUN_SCRIPT_HOST_**開頭的任務即為執行引導操作的任務,可查看執行Stdout和Stderr日誌。
樣本
引導操作需要指定引導操作的名稱及其在OSS上的執行指令碼位置,並根據需要指定指令碼的參數。在執行引導操作時,各個節點將下載您指定的OSS指令碼,並進行直接執行或附加選擇性參數後執行。以下為引導操作樣本:
樣本1
您可以在指令碼中指定需要從OSS下載的檔案。例如,添加以下指令碼,將oss://<yourBucket>/<myFile>.tar.gz檔案下載到本地,並解壓到/<yourDir>目錄下。
重要OSS地址有內網地址、外網地址和VPC網路地址之分。如果使用傳統網路,則需要指定內網地址,例如杭州是oss-cn-hangzhou-internal.aliyuncs.com。如果使用VPC網路,則需要指定VPC內網可訪問的網域名稱,例如杭州是vpc100-oss-cn-hangzhou.aliyuncs.com。
資料湖(DataLake)、即時資料流(DataFlow)、資料分析(OLAP)、資料服務(DataServing)和自訂情境的叢集
#!/bin/bash ossutil64 cp oss://<yourBucket>/<myFile>.tar.gz ./ -e oss-cn-hangzhou-internal.aliyuncs.com -i <yourAccessKeyId> -k <yourAccessKeySecret> mkdir -p /<yourDir> tar -zxvf <myFile>.tar.gz -C /<yourDir>舊版資料湖(Hadoop)叢集
#!/bin/bash osscmd --id=<yourAccessKeyId> --key=<yourAccessKeySecret> --host=oss-cn-hangzhou-internal.aliyuncs.com get oss://<yourBucket>/<myFile>.tar.gz ./ mkdir -p /<yourDir> tar -zxvf <myFile>.tar.gz -C /<yourDir>
樣本2
您可以通過Yum安裝額外的系統軟體包,例如安裝ld-linux.so.2。
#!/bin/bash yum install -y ld-linux.so.2