本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
採用 Amazon EMR 的舊版 AMI 來自訂叢集和應用程式組態
Amazon EMR 發行版本 4.0.0 推出一個簡易方法,可讓您使用組態分類來設定應用程式。如需詳細資訊,請參閱設定應用程式。使用 AMI 版本時,您使用引導操作與所傳遞的引數來設定應用程式。例如,configure-hadoop
和 configure-daemons
引導操作會設定 Hadoop 和特定於 YARN 的環境屬性 (例如 --namenode-heap-size
)。在較新版本中,這些會使用 hadoop-env
和 yarn-env
組態分類來加以設定。有關執行常見的組態的引導操作,請參閱 Github 上的 emr-bootstrap-actions 儲存庫
下表會將引導操作映射至較新 Amazon EMR 發行版本中的組態分類。
受影響的應用程式檔案名稱 | 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 |
受影響的應用程式檔案名稱 | 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 |
受影響的應用程式檔案名稱 | 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/
目錄。例如,如果您已安裝 Hive,目錄會是 application
/home/hadoop/hive
。在 Amazon EMR 4.0.0 版和更高版本中,應用程式成品是安裝在 /usr/lib/
目錄中。使用 AMI 版本時,可在各種位置找到日誌檔。下表列出位置。application
常駐程式或應用程式 | 目錄位置 |
---|---|
instance-state | node/instance-id /instance-state/ |
hadoop-hdfs-namenode | daemons/instance-id /hadoop-hadoop-namenode.log |
hadoop-hdfs-datanode | daemons/instance-id /hadoop-hadoop-datanode.log |
hadoop-yarn (ResourceManager) | daemons/instance-id /yarn-hadoop-resourcemanager |
hadoop-yarn (代理伺服器) | daemons/instance-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-version3.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"
]