引導操作的作用是在叢集啟動 Hadoop 前執行您自訂的指令碼,以便安裝您需要的第三方軟體,或者修改叢集運行環境。

引導操作的作用

通過引導操作,您可以安裝很多目前叢集尚未支援的東西到您的叢集上,例如:

  • 使用 yum 安裝已經提供的軟體。
  • 直接下載公網上的一些公開的軟體。
  • 讀取 OSS 中您的自有資料。
  • 安裝並運行一個服務,例如 Flink 或者 Impala,但需要編寫的指令碼會複雜些。

強烈建議您先用隨用隨付的叢集來進行引導操作的測試,測試都正確以後再建立訂用帳戶的叢集。

如何使用

  1. 登入阿里雲 E-MapReduce 控制台叢集列表
  2. 在上方選擇所在的地區(Region),所建立叢集將會在對應的 Region 內。
  3. 單擊建立叢集,即會進入建立叢集的操作介面。
  4. 在建立叢集的基本資料頁面,單擊添加引導操作,進入其操作介面。
  5. 填寫添加引導操作介面上的配置項,完成添加。

您最多可以添加 16 個引導操作,它們會按照您指定的順序在叢集初始化時執行。預設會使用 root 賬戶執行您指定的指令碼,您可以在指令碼中使用 su hadoop 切換到 Hadoop 賬戶。

引導操作可能會執行失敗。為方便您的使用,引導操作失敗並不會影響叢集的建立。叢集建立成功後,您可以在叢集詳情頁叢集資訊列內的引導/軟體配置查看是否有異常發生。如果有異常,您可以登入到各個節點上查看作業記錄,作業記錄在 /var/log/bootstrap-actions 目錄下。

引導操作類型

引導操作有兩種,一種是自訂引導操作,另一種是運行條件引導操作。兩者的主要區別是運行條件引導操作只會在滿足條件的節點上運行您的指定操作。

自訂引導操作

自訂引導操作需要指定引導操作名稱和執行指令碼在 OSS 中的位置,根據需要指定選擇性參數。叢集初始化時各個節點會下載您指定的 OSS 指令碼,直接執行或者附加上選擇性參數執行。

您可以在指令碼中指定從 OSS 下載需要的檔案,下面的例子會將 oss://yourbucket/myfile.tar.gz 這個檔案下載到本地,並解壓到 /yourdir 目錄下:
#!/bin/bash
osscmd --id=<yourid> --key=<yourkey> --host=oss-cn-hangzhou-internal.aliyuncs.com get oss://<yourbucket>/<myfile>.tar.gz ./<myfile>.tar.gz
mkdir -p /<yourdir>
tar -zxvf <myfile>.tar.gz -C /<yourdir>

osscmd 已預先安裝在節點上,可以直接調用來下載檔案。

注意 OSS 地址 host 有內網地址、外網地址和 VPC 網路地址之分。如果用傳統網路,需要指定內網地址,杭州是 oss-cn-hangzhou-internal.aliyuncs.com。如果用 VPC 網路,要指定 VPC 內網可訪問的網域名稱,杭州是 vpc100-oss-cn-hangzhou.aliyuncs.com。
引導操作也可以通過 yum 安裝額外的系統軟體包,下面的例子會安裝 ld-linux.so.2:
#!/bin/bash
yum install -y ld-linux.so.2

運行條件引導操作

運行條件引導操作的執行指令碼是預定義的不需要您額外指定,您只需要指定名稱和選擇性參數。運行條件引導操作必須提供選擇性參數,選擇性參數需要包括運行條件和操作命令,以空格間隔。運行條件支援 instance.isMaster=true/false,指定只在 master 或者在非 master 節點上運行。以下樣本為運行條件引導操作下面的選擇性參數指定只在 master 節點上建立目錄:
instance.isMaster=true mkdir -p /tmp/abc

如果需要指定多個操作命令,您可以用分號“;”分割多個語句,例如:instance.isMaster=true mkdir -p /tmp/abc;mkdir -p /tmp/def