採用 Amazon EMR 的舊版 AMI 來自訂叢集和應用程式組態 - Amazon EMR

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

採用 Amazon EMR 的舊版 AMI 來自訂叢集和應用程式組態

Amazon EMR 發行版本 4.0.0 推出一個簡易方法,可讓您使用組態分類來設定應用程式。如需詳細資訊,請參閱 設定應用程式。使用 AMI 版本時,您使用引導操作與所傳遞的引數來設定應用程式。例如,configure-hadoopconfigure-daemons 引導操作會設定 Hadoop 和特定於 YARN 的環境屬性 (例如 --namenode-heap-size)。在較新版本中,這些會使用 hadoop-envyarn-env 組態分類來加以設定。如需執行通用設定的啟動程序動作,請參閱 Gi emr-bootstrap-actions thub 上的存放庫。

下表會將引導操作映射至較新 Amazon EMR 發行版本中的組態分類。

Hadoop
受影響的應用程式檔案名稱 AMI 版本引導操作 組態分類
core-site.xml configure-hadoop -c core-site
log4j.properties configure-hadoop -l hadoop-log4j
hdfs-site.xml configure-hadoop -s hdfs-site
N/A hdfs-encryption-zones
mapred-site.xml configure-hadoop -m mapred-site
yarn-site.xml configure-hadoop -y yarn-site
httpfs-site.xml configure-hadoop -t httpfs-site
capacity-scheduler.xml configure-hadoop -z capacity-scheduler
yarn-env.sh configure-daemons --resourcemanager-opts yarn-env
Hive
受影響的應用程式檔案名稱 AMI 版本引導操作 組態分類
hive-env.sh N/A hive-env
hive-site.xml hive-script --install-hive-site ${MY_HIVE_SITE_FILE} hive-site
hive-exec-log4j.properties hive-exec-log4j
hive-log4j.properties hive-log4j
EMRFS
受影響的應用程式檔案名稱 AMI 版本引導操作 組態分類
emrfs-site.xml configure-hadoop -e emrfs-site
N/A s3get -s s3://custom-provider.jar -d /usr/share/aws/emr/auxlib/ emrfs-site (使用新設定 fs.s3.cse.encryptionMaterialsProvider.uri)

如需所有分類的清單,請參閱 設定應用程式

應用程式環境變數

使用 AMI 版本時,會一同使用 hadoop-user-env.sh 指令碼與 configure-daemons 引導操作來設定 Hadoop 環境。指令碼包含下列動作:

#!/bin/bash export HADOOP_USER_CLASSPATH_FIRST=true; echo "HADOOP_CLASSPATH=/path/to/my.jar" >> /home/hadoop/conf/hadoop-user-env.sh

在 Amazon EMR 版本 4.x 中,您會使用 hadoop-env 組態分類進行相同動作,如下所示:

[       {          "Classification":"hadoop-env",          "Properties":{          },          "Configurations":[             {                "Classification":"export",                "Properties":{                   "HADOOP_USER_CLASSPATH_FIRST":"true",                   "HADOOP_CLASSPATH":"/path/to/my.jar"                }             }          ]       }    ]

另一個例子是,使用 configure-daemons 和傳遞 --namenode-heap-size=2048--namenode-opts=-XX:GCTimeRatio=19 等同於以下組態分類。

[       {          "Classification":"hadoop-env",          "Properties":{          },          "Configurations":[             {                "Classification":"export",                "Properties":{                   "HADOOP_DATANODE_HEAPSIZE": "2048", "HADOOP_NAMENODE_OPTS": "-XX:GCTimeRatio=19"                }             }          ]       }    ]

不再在 /home/hadoop/.bashrc 中定義其他應用程式環境變數。反之,主要是在 /etc/default 檔案中根據元件或應用程式來設定這些變數,例如 /etc/default/hadoop。應用程式 RPM 安裝之 /usr/bin/ 中的包裝函式指令碼也可能會設定額外的環境變數,再參與實際 bin 指令碼。

服務連接埠

使用 AMI 版本時,有些服務會使用自訂連接埠。

連接埠設定的變更
設定 AMI 版本 3.x 開放原始碼預設
fs.default.name hdfs://emrDeterminedIP:9000 預設值 (hdfs://emrDeterminedIP:8020)
dfs.datanode.address 0.0.0.0:9200 預設值 (0.0.0.0:50010)
dfs.datanode.http.address 0.0.0.0:9102 預設值 (0.0.0.0:50075)
dfs.datanode.https.address 0.0.0.0:9402 預設值 (0.0.0.0:50475)
dfs.datanode.ipc.address 0.0.0.0:9201 預設值 (0.0.0.0:50020)
dfs.http.address 0.0.0.0:9101 預設值 (0.0.0.0:50070)
dfs.https.address 0.0.0.0:9202 預設值 (0.0.0.0:50470)
dfs.secondary.http.address 0.0.0.0:9104 預設值 (0.0.0.0:50090)
yarn.nodemanager.address 0.0.0.0:9103 預設值 (${yarn.nodemanager.hostname}:0)
yarn.nodemanager.localizer.address 0.0.0.0:9033 預設值 (${yarn.nodemanager.hostname}:8040)
yarn.nodemanager.webapp.address 0.0.0.0:9035 預設值 (${yarn.nodemanager.hostname}:8042)
yarn.resourcemanager.address emrDeterminedIP:9022 預設值 (${yarn.resourcemanager.hostname}:8032)
yarn.resourcemanager.admin.address emrDeterminedIP:9025 預設值 (${yarn.resourcemanager.hostname}:8033)
yarn.resourcemanager.resource-tracker.address emrDeterminedIP:9023 預設值 (${yarn.resourcemanager.hostname}:8031)
yarn.resourcemanager.scheduler.address emrDeterminedIP:9024 預設值 (${yarn.resourcemanager.hostname}:8030)
yarn.resourcemanager.webapp.address 0.0.0.0:9026 預設值 (${yarn.resourcemanager.hostname}:8088)
yarn.web-proxy.address emrDeterminedIP:9046 預設值 (無值)
yarn.resourcemanager.hostname 0.0.0.0 (預設) emrDeterminedIP
注意

emrDeterminedIP 是 Amazon EMR 所產生的 IP 地址。

使用者

使用 AMI 版本時,使用者在 hadoop 會執行所有程序並擁有所有檔案。在 Amazon EMR 發行版本 4.0.0 和更高版本中,使用者存在於應用程式和元件層級。

安裝順序、安裝成品,以及日誌檔案位置

使用 AMI 版本時,應用程式成品及其組態目錄是安裝在 /home/hadoop/application 目錄。例如,如果您已安裝 Hive,目錄會是 /home/hadoop/hive。在 Amazon EMR 4.0.0 版和更高版本中,應用程式成品是安裝在 /usr/lib/application 目錄中。使用 AMI 版本時,可在各種位置找到日誌檔。下表列出位置。

Amazon S3 上的日誌位置變更
常駐程式或應用程式 目錄位置
instance-state node/instance-id/instance-state/
hadoop-hdfs-namenode 守護進程/實例標識/.log hadoop-hadoop-namenode
hadoop-hdfs-datanode 守護進程/實例標識/.log hadoop-hadoop-datanode
紗 () ResourceManager 守護進程/實例 ID/yarn-hadoop-resourcemanager
hadoop-yarn (代理伺服器) 守護進程/實例 ID/yarn-hadoop-proxyserver
mapred-historyserver daemons/instance-id/
httpfs daemons/instance-id/httpfs.log
hive-server node/instance-id/hive-server/hive-server.log
hive-metastore node/instance-id/apps/hive.log
Hive CLI node/instance-id/apps/hive.log
YARN 應用程式使用者日誌和容器日誌 task-attempts/
Mahout N/A
Pig N/A
spark-historyserver
mapreduce 任務歷史記錄檔 jobs/

命令執行器

使用 AMI 版本時,不會將許多指令碼或程式 (例如 /home/hadoop/contrib/streaming/hadoop-streaming.jar) 放置在 shell 登入路徑環境,因此當您使用 JAR 檔案 (例如 command-runner.jar) 或 script-runner.jar 來執行指令碼時,會需要指定完整路徑。command-runner.jar 就位於 AMI,所以不需要知道完整 URI,因為就跟 script-runner.jar 案例一樣。

複寫係數

複寫係數可讓您設定啟動 Hadoop JVM 的時間。您可以為每個任務啟動新 Hadoop JVM,其會提供更佳的隔離,或者您可以在任務之間共用 JVM,來降低架構開銷。如果您處理的是許多小檔案,多次重複使用 JVM 來分攤啟動的成本的做法相當合理。不過,如果每個任務需要很長的時間或處理大量資料,您可能會選擇不重複使用 JVM,以確保所有記憶體可供後續任務使用。使用 AMI 版本時,您可以使用 configure-hadoop 引導操作來設定 mapred.job.reuse.jvm.num.tasks 屬性以自訂複寫係數。

以下範例示範為無限 JVM 重複使用設定 JVM 重複使用因子。

注意

包含 Linux 行接續字元 (\) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows,請將其移除或取代為插入符號 (^)。

aws emr create-cluster --name "Test cluster" --ami-version 3.11.0 \ --applications Name=Hue Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m3.xlarge \ InstanceGroupType=CORE,InstanceCount=2,InstanceType=m3.xlarge \ --bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hadoop,\ Name="Configuring infinite JVM reuse",Args=["-m","mapred.job.reuse.jvm.num.tasks=-1"]