本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在您規劃叢集時,要決定的一件事便是您要提供多少偵錯支援。在您第一次開發您的資料處理應用程式時,我們建議在叢集上測試該應用程式,處理小型但具有代表性的資料子集。當您執行此操作時,您可能會想要利用所有 Amazon EMR 提供的偵錯工具 (例如存檔日誌檔案) 給 Amazon S3。
當您完成開發,並將您的資料處理應用程式投入全面生產時,您可以選擇縮減偵錯。如此一來可以節省在 Amazon S3 中儲存日誌檔案封存的成本,並減少叢集上的處理負載,因為它不再需要將狀態寫入至 Amazon S3。當然,做為取捨,如果出現問題,您可以用來調查問題的工具便少了些。
預設日誌檔案
依預設,每個叢集都會在主節點上寫入日誌檔案。這些會寫入至 /mnt/var/log/
目錄。您可以使用 SSH 來連接到主節點以存取它們,如 使用 SSH 連線至 Amazon EMR 叢集主節點 所述。Amazon EMR 會收集 Amazon EMR 協助程式和其他 Amazon EMR 程序所產生的特定系統和應用程式日誌,以確保有效的服務操作。
注意
如果您使用 Amazon EMR 6.8.0 版或更早版本,則會在叢集終止期間將日誌檔案儲存至 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 元件日誌 – 例如,與 Apache YARN 和 MapReduce 關聯的元件日誌包含在
/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 EMR 6.8.0 版及更早版本,您可以設定叢集以定期將儲存在主節點上的日誌檔案封存至 Amazon S3。這可確保日誌檔案在叢集終止 (無論是透過正常關閉還是由於錯誤關閉) 後仍可使用。Amazon EMR 會以 5 分鐘為間隔將日誌檔案封存至 Amazon S3。
若要將 Amazon EMR 6.8.0 版及更早版本的日誌檔案封存至 Amazon S3,當您啟動叢集時必須啟用此功能。您可以使用主控台、CLI 或 API 來執行這項作業。在預設情況下,使用主控台啟動的叢集便已啟用了日誌封存。對於使用 CLI 或 API 啟動的叢集,則必須手動啟用對 Amazon S3 的日誌記錄。
使用新主控台將日誌檔案封存至 Amazon S3
-
登入 AWS Management Console,然後開啟 Amazon EMR 主控台,網址為 https://https://https:/https://console.aws.amazon.com/emr
://www.microsoft.com。 -
在左側導覽窗格中的 EC2 上的 EMR 下,選擇叢集,然後選擇建立叢集。
-
在叢集日誌下,選取將叢集特定日誌發布至 Amazon S3 核取方塊。
-
在 Amazon S3 位置欄位中,鍵入 (或瀏覽至) Amazon S3 路徑來儲存您的日誌。如果您鍵入的資料夾名稱並不存在於儲存貯體,Amazon S3 會建立該資料夾。
當您設定此值時,Amazon EMR 會將叢集中的 EC2 執行個體日誌檔案複製到 Amazon S3。這可避免日誌檔案在叢集結束且 EC2 終止託管叢集的執行個體時遺失。這些日誌對於故障排除非常實用。如需詳細資訊,請參閱檢視日誌檔案。
-
選擇性地選取加密叢集特定的日誌核取方塊。然後,從清單中選擇 AWS KMS 金鑰、輸入金鑰 ARN,或建立新的金鑰。僅 Amazon EMR 5.30.0 版及更新版本提供此選項,但 6.0.0 版不提供。若要使用此選項,請將 EC2 執行個體描述檔和 Amazon EMR 角色 AWS KMS 的許可新增至 。如需詳細資訊,請參閱使用 AWS KMS 客戶受管金鑰加密儲存在 Amazon S3 中的日誌檔案。
-
選擇適用於您的叢集的任何其他選項。
-
若要啟動您的叢集,請選擇建立叢集。
使用 AWS KMS 客戶受管金鑰加密儲存在 Amazon S3 中的日誌檔案
使用 Amazon EMR 5.30.0 版和更新版本 (Amazon EMR 6.0.0 除外),您可以使用 AWS KMS 客戶受管金鑰加密存放在 Amazon S3 中的日誌檔案。若要在主控台中啟用此選項,請依照將日誌檔案封存至 Amazon S3中的步驟執行。您的 Amazon EC2 執行個體設定檔和 Amazon EMR 角色必須符合下列先決條件:
-
用於叢集的 Amazon EC2 執行個體設定檔必須具有使用
kms:GenerateDataKey
的許可。 -
用於叢集的 Amazon EMR 角色必須具有使用
kms:DescribeKey
的許可。 -
必須將 Amazon EC2 執行個體描述檔和 Amazon EMR 角色新增至指定 AWS KMS 客戶受管金鑰的金鑰使用者清單,如下列步驟所示:
-
開啟 AWS Key Management Service (AWS KMS) 主控台,網址為 https://console.aws.amazon.com/kms
://。 -
若要變更 AWS 區域,請使用頁面右上角的區域選擇器。
-
選取要修改的 KMS 金鑰別名。
-
在 Key Users (金鑰使用者) 下的金鑰詳細資訊頁面上,選擇 Add (新增)。
-
在新增金鑰使用者對話方塊中,選取您的 Amazon EC2 執行個體設定檔和 Amazon EMR 角色。
-
選擇新增。
-
如需詳細資訊,請參閱 Amazon EMR 使用的 IAM 服務角色,以及 AWS Key Management Service 開發人員指南中的使用金鑰政策。
使用 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.8.0
\ --applications Name=Hadoop
\ --use-default-roles \ --ec2-attributes KeyName=myKey
\ --instance-typem5.xlarge
\ --instance-count3
\ --configurations file://./myConfig.json如果您在未使用
--instance-groups
參數的情況下指定執行個體計數,即會啟動單一主節點,且剩餘執行個體會以核心節點的形式啟動。所有節點都將使用命令中指定的執行個體類型。注意
如果您先前尚未建立預設 EMR 服務角色和 EC2 執行個體設定檔,請先執行
aws emr create-default-roles
來建立這些設定檔,然後再執行create-cluster
子命令。
如需在 中使用 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 容器的日誌。
-