本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 Amazon EMR叢集記錄和偵錯
在您規劃叢集時,要決定的一件事便是您要提供多少偵錯支援。在您第一次開發您的資料處理應用程式時,我們建議在叢集上測試該應用程式,處理小型但具有代表性的資料子集。當您這樣做時,您可能會想要利用 Amazon EMR提供的所有偵錯工具,例如將日誌檔案封存至 Amazon S3。
當您完成開發,並將您的資料處理應用程式投入全面生產時,您可以選擇縮減偵錯。如此一來可以節省在 Amazon S3 中儲存日誌檔案封存的成本,並減少叢集上的處理負載,因為它不再需要將狀態寫入至 Amazon S3。當然,做為取捨,如果出現問題,您可以用來調查問題的工具便少了些。
預設日誌檔案
依預設,每個叢集都會在主節點上寫入日誌檔案。這些會寫入至 /mnt/var/log/
目錄。您可以使用 連線到主要節點SSH來存取它們,如 中所述使用 連線至 Amazon EMR叢集主節點 SSH。Amazon EMR會收集 Amazon EMR 精靈和其他 Amazon EMR 程序所產生的特定系統和應用程式日誌,以確保有效的服務操作。
注意
如果您使用 Amazon 6.8.0 版或更早EMR版本,日誌檔案會在叢集終止期間儲存至 Amazon S3,因此在主要節點終止時,您無法存取日誌檔案。Amazon EMR會在叢集縮減期間將 6.9.0 版及更新版本封存日誌傳送至 Amazon S3,因此即使在節點終止之後,叢集上產生的日誌檔案仍會保留。
您不需要啟用任何功能即可在主節點上寫入日誌檔案。這是 Amazon EMR和 Hadoop 的預設行為。
一個叢集會產生多種類型的日誌檔,包括:
-
步驟日誌:這些日誌是由 Amazon EMR服務產生,其中包含有關叢集和每個步驟結果的資訊。日誌檔案儲存在主節點上的
/mnt/var/log/hadoop/steps/
目錄中。每個步驟都將其結果記錄在一個單獨編號的子目錄中:第一個步驟為/mnt/var/log/hadoop/steps/s-
,第二個步驟為stepId1
//mnt/var/log/hadoop/steps/s-
,以此類推。13 個字元的步驟識別符 (例如 stepId1、stepId2) 對叢集而言是唯一的。stepId2
/ -
Hadoop 和YARN元件日誌 — 例如 MapReduce,與 Apache YARN和 相關聯的元件日誌,包含在 中的個別資料夾中
/mnt/var/log
。/mnt/var/log
下的 Hadoop 元件日誌檔案位置如下:hadoop-hdfs,hadoop-mapreduce,hadoop-httpfs 與 hadoop-yarn。hadoop-state-pusher 目錄適用於 Hadoop 狀態推送程式程序的輸出。 -
引導操作日誌 – 如果您的作業使用引導操作,這些動作的結果都會加以記錄。日誌檔案儲存在主節點上的 /mnt/var/log/bootstrap-actions/ 中。每個引導操作都將其結果記錄在一個單獨編號的子目錄中:第一個引導操做為
/mnt/var/log/bootstrap-actions/1/
,第二個引導操做為/mnt/var/log/bootstrap-actions/2/
,以此類推。 -
執行個體狀態日誌 — 這些日誌提供有關節點的 、CPU記憶體狀態和垃圾收集器執行緒的資訊。日誌檔案儲存在主節點上的
/mnt/var/log/instance-state/
中。
將日誌檔案封存至 Amazon S3
注意
您目前不能以 yarn logs
公用程式使用日誌彙總至 Amazon S3。
Amazon EMR會在叢集縮減期間將 6.9.0 版及更新版本封存日誌傳送至 Amazon S3,因此即使在節點終止之後,叢集上產生的日誌檔案仍會保留。此行為會自動啟用,因此您無需執行任何操作即可開啟。對於 Amazon 6.8.0 版及更早EMR版本,您可以設定叢集,以定期將存放在主節點上的日誌檔案封存至 Amazon S3。這可確保日誌檔案在叢集終止 (無論是透過正常關閉還是由於錯誤關閉) 後仍可使用。Amazon 會以 5 分鐘的間隔將日誌檔案EMR封存至 Amazon S3。
若要將日誌檔案封存至 Amazon S3 for Amazon 6.8.0 及更早EMR版本,您必須在啟動叢集時啟用此功能。您可以使用主控台、 CLI或 來執行此操作API。在預設情況下,使用主控台啟動的叢集便已啟用了日誌封存。對於使用 CLI或 啟動的叢集API,必須手動啟用記錄至 Amazon S3。
使用 AWS KMS客戶受管金鑰加密存放在 Amazon S3 中的日誌檔案
使用 Amazon 5.30.0 版及更新EMR版本 (Amazon EMR 6.0.0 除外),您可以使用客戶受管金鑰加密存放在 Amazon S3 AWS KMS 中的日誌檔案。若要在主控台中啟用此選項,請依照將日誌檔案封存至 Amazon S3中的步驟執行。您的 Amazon EC2執行個體設定檔和 Amazon EMR角色必須符合下列先決條件:
-
用於叢集的 Amazon EC2執行個體設定檔必須具有使用 的許可
kms:GenerateDataKey
。 -
用於叢集的 Amazon EMR角色必須具有使用 的許可
kms:DescribeKey
。 -
Amazon EC2執行個體設定檔和 Amazon EMR角色必須新增至指定 AWS KMS客戶受管金鑰的金鑰使用者清單,如下列步驟所示:
-
在 https://console.aws.amazon.com/kms
開啟 AWS Key Management Service (AWS KMS) 主控台。 -
若要變更 AWS 區域,請使用頁面右上角的區域選擇器。
-
選取要修改之KMS金鑰的別名。
-
在 Key Users (金鑰使用者) 下的金鑰詳細資訊頁面上,選擇 Add (新增)。
-
在新增金鑰使用者對話方塊中,選取您的 Amazon EC2執行個體設定檔和 Amazon EMR角色。
-
選擇新增。
-
如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的 IAM Amazon 使用的服務角色EMR,以及使用金鑰政策。
使用 AWS CLI在 Amazon S3 中彙總日誌
注意
您目前不能以 yarn logs
公用程式使用日誌彙總。您僅能使用此程序支援的彙總。
日誌彙總 (Hadoop 2.x) 會將來自個別應用程式的所有容器日誌編譯為單一檔案。若要使用 啟用對 Amazon S3 的日誌彙總 AWS CLI,您可以在叢集啟動時使用引導動作來啟用日誌彙總,並指定儲存貯體來存放日誌。
-
若要啟用日誌彙總,請建立下列稱為
myConfig.json
的組態檔案,其中包含下列項目:[ { "Classification": "yarn-site", "Properties": { "yarn.log-aggregation-enable": "true", "yarn.log-aggregation.retain-seconds": "-1", "yarn.nodemanager.remote-app-log-dir": "s3:\/\/
DOC-EXAMPLE-BUCKET
\/logs" } } ]輸入下列命令並取代
您的EC2金鑰對名稱。您還可以將任何紅色文字取代為您自己的組態。myKey
aws emr create-cluster --name "
Test cluster
" \ --release-labelemr-7.3.0
\ --applications Name=Hadoop
\ --use-default-roles \ --ec2-attributes KeyName=myKey
\ --instance-typem5.xlarge
\ --instance-count3
\ --configurations file://./myConfig.json如果您在未使用
--instance-groups
參數的情況下指定執行個體計數,即會啟動單一主節點,且剩餘執行個體會以核心節點的形式啟動。所有節點都將使用命令中指定的執行個體類型。注意
如果您先前尚未建立預設EMR服務角色和EC2執行個體設定檔,請在執行
create-cluster
子命令之前執行aws emr create-default-roles
以建立它們。
如需在 中使用 Amazon EMR命令的詳細資訊 AWS CLI,請參閱AWS CLI 命令參考 。
日誌位置
下列清單包含所有日誌類型及其在 Amazon S3 中的位置。您可以使用這些來疑難排解 Amazon EMR問題。
- 步驟日誌
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/steps/<step-id>
/ - 應用程式記錄
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/containers/此位置包括容器
stderr
和stdout
、directory.info
、prelaunch.out
及launch_container.sh
日誌。 - 資源管理員日誌
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<leader-instance-id>
/applications/hadoop-yarn/ - Hadoop HDFS
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<all-instance-id>
/applications/hadoop-hdfs/此位置包含 NameNode DataNode、 和 YARN TimelineServer日誌。
- 節點管理員日誌
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<all-instance-id>
/applications/hadoop-yarn/ - 執行個體狀態日誌
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<all-instance-id>
/daemons/instance-state/ - Amazon EMR佈建日誌
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<leader-instance-id>
/provision-node/* - Hive 日誌
-
s3://
DOC-EXAMPLE-LOG-BUCKET
/<cluster-id>
/node/<leader-instance-id>
/applications/hive/*-
若要尋找叢集上的 Hive 日誌,請移除星號 (
*
) 並將/var/log/hive/
附加至上面的連結。 -
若要尋找 HiveServer2 個日誌,請移除星號 (
*
) 並附加var/log/hive/hiveserver2.log
到上述連結。 -
若要尋找 HiveCLI 日誌,請移除星號 (
*
) 並附加/var/log/hive/user/hadoop/hive.log
到上述連結。 -
若要尋找 Hive Metastore Server 日誌,請移除星號 (
*
) 並將/var/log/hive/user/hive/hive.log
附加至上面的連結。
如果您的故障是在 Tez 應用程式的主要或任務節點中,請提供適當 Hadoop 容器的日誌。
-