本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
儲存記錄
若要監控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 節流
使用記錄所需的權限 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"]
-