儲存記錄 - Amazon EMR

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

儲存記錄

若要監控EMR無伺服器上的工作進度並對工作失敗進行疑難排解,您可以選擇EMR無伺服器儲存和提供應用程式記錄的方式。當您提交任務執行時,您可以指定受管儲存、Amazon S3 和 Amazon CloudWatch 做為記錄選項。

使用時 CloudWatch,您可以指定要使用的記錄類型和記錄位置,或接受預設類型和位置。如需 CloudWatch 記錄檔的詳細資訊,請參閱使用 Amazon 進行EMR無伺服器記錄 CloudWatch。使用受管儲存和 S3 記錄,下表顯示如果您選擇受管儲存Amazon S3 儲存貯體或兩者,可預期的日誌位置和 UI 可用性。

選項 事件記錄 容器日誌 應用程式 UI

受管理儲存

儲存在受管理的儲存

儲存在受管理的儲存

支援

受管儲存和 S3 儲存貯體

存儲在兩個地方

存放在 S3 儲存貯體

支援

Amazon S3 儲存貯體

存放在 S3 儲存貯體

存放在 S3 儲存貯體

不支援 1

1 我們建議您保持選取 [受管理的儲存] 選項。否則,您將無法使用內置應用程序UIs。

使用受管理儲存進行EMR無伺服器記錄

根據預設,EMR無伺服器會將應用程式日誌安全地存放在 Amazon EMR 受管儲存中,最多可保留 30 天。

注意

如果您關閉預設選項,Amazon 將EMR無法代表您對任務進行疑難排解。

若要從 EMR Studio 關閉此選項,請取消選取「允許」 AWS 在 [送出工作] 頁面的 [其他設定] 區段中,保留記錄檔 30 天核取方塊。

若要關閉此選項 AWS CLI,當您提交工作執行時,請使用managedPersistenceMonitoringConfiguration組態。

{ "monitoringConfiguration": { "managedPersistenceMonitoringConfiguration": { "enabled": false } } }

使用 Amazon S3 儲存貯體進行EMR無伺服器記錄

您必須在任務執行階段角色的許可政策中包含下列許可,才能將日誌資料傳送到 Amazon S3。DOC-EXAMPLE-BUCKET-LOGGING以記錄值區的名稱取代。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET-LOGGING/*" ] } ] }

若要設定 Amazon S3 儲存貯體以存放來自 AWS CLI,當您開始工作執行時,請使用s3MonitoringConfiguration組態。若要這麼做,請在組態--configuration-overrides中提供下列資訊。

{ "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://DOC-EXAMPLE-BUCKET-LOGGING/logs/" } } }

對於未啟用重試的批次工作,EMR無伺服器會將記錄檔傳送至下列路徑:

'/applications/<applicationId>/jobs/<jobId>'

EMR無伺服器版本 7.1.0 及更高版本支援串流工作和批次工作的重試嘗試。如果您在啟用重試的情況下執行工作,EMRServerless 會自動將嘗試編號新增至記錄檔路徑前置詞,以便您更好地區分和追蹤記錄。

'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/'

使用 Amazon 進行EMR無伺服器記錄 CloudWatch

將任務提交至EMR無伺服器應用程式時,您可以選擇 Amazon 作 CloudWatch為存放應用程式日誌的選項。這可讓您使用日 CloudWatch 誌分析功能,例如 CloudWatch 日誌洞察和即時尾巴。您也可以將日誌從流式傳輸 CloudWatch 到其他系統, OpenSearch 例如進一步分析。

EMR無伺服器提供驅動程式記錄的即時記錄。您可以使用實時尾部功能或通過 CloudWatch CLI尾部命令 CloudWatch 實時查看日誌。

EMR無伺服器的 CloudWatch 記錄預設為停用。若要啟用它,請參閱中的配置AWS CLI

注意

Amazon 會即時 CloudWatch 發佈日誌,因此會產生更多員工的資源。如果您選擇較低的背景工作者容量,對工作執行時間的影響可能會增加。如果您啟用 CloudWatch 記錄功能,建議您選擇較大的背景工作容量。如果每秒的交易 (TPS) 速率太低,則日誌發布也可能會限制。PutLogEvents CloudWatch 節流組態適用於所有服務 (包括EMR無伺服器)。如需詳細資訊,請參閱如何判斷記錄中的 CloudWatch 節流? 上 AWS 回复:帖子。

使用記錄所需的權限 CloudWatch

在您的任務可以傳送日誌資料到 Amazon 之前 CloudWatch,您必須在任務執行階段角色的許可政策中包含下列許可。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:AWS 區域:111122223333:*" ] }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:AWS 區域:111122223333:log-group:my-log-group-name:*" ] } ] }

AWS CLI

若要將 Amazon 設定 CloudWatch 為存放EMR無伺服器的日誌,請從 AWS CLI,當您開始工作執行時,請使用cloudWatchLoggingConfiguration組態。若要這麼做,請提供下列組態覆寫。您也可以選擇性地提供記錄群組名稱、記錄資料流前置詞名稱、記錄類型和加密金鑰ARN。

如果您未指定選擇性值,則會使用預設記錄資料流將記錄 CloudWatch 發佈至預設記錄群組/aws/emr-serverless/applications/applicationId/jobs/jobId/worker-type

EMR無伺服器版本 7.1.0 及更高版本支援串流工作和批次工作的重試嘗試。如果您啟用了工作的重試次數,EMRServerless 會自動將嘗試編號新增至記錄路徑前置詞,以便您更好地區分和追蹤記錄。

'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/worker-type'

以下顯示使用EMR無伺服器預設設定開啟 Amazon 日 CloudWatch 誌記錄所需的最低組態:

{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true } } }

下列範例顯示開啟EMR無伺服器的 Amazon CloudWatch 日誌記錄時,您可以指定的所有必要和選用組態。支援的logTypes值也列在此範例下方。

{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true, // Required "logGroupName": "Example_logGroup", // Optional "logStreamNamePrefix": "Example_logStream", // Optional "encryptionKeyArn": "key-arn", // Optional "logTypes": { "SPARK_DRIVER": ["stdout", "stderr"] //List of values } } } }

根據預設,EMR無伺服器只會將驅動程式標準輸出和 stderr 記錄發佈到。 CloudWatch如果您需要其他記錄檔,則可以使用logTypes欄位指定容器角色和對應的記錄類型。

下列清單顯示您可為logTypes組態指定的支援 Worker 類型:

Spark
  • SPARK_DRIVER : ["STDERR", "STDOUT"]

  • SPARK_EXECUTOR : ["STDERR", "STDOUT"]

Hive
  • HIVE_DRIVER : ["STDERR", "STDOUT", "HIVE_LOG", "TEZ_AM"]

  • TEZ_TASK : ["STDERR", "STDOUT", "SYSTEM_LOGS"]