本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
儲存日誌
若要在 EMR Serverless 上監控您的任務進度並疑難排解任務失敗,您可以選擇 EMR Serverless 儲存和提供應用程式日誌的方式。當您提交任務執行時,您可以將受管儲存、Amazon S3 和 Amazon 指定 CloudWatch 為記錄選項。
透過 CloudWatch,您可以指定要使用的日誌類型和日誌位置,或接受預設類型和位置。如需 CloudWatch 日誌的詳細資訊,請參閱 使用 Amazon 記錄無EMR伺服器 CloudWatch。使用受管儲存和 S3 記錄時,下表顯示如果您選擇受管儲存體 、Amazon S3 儲存貯體 或兩者,您可以預期的日誌位置和 UI 可用性。
選項 | 事件日誌 | 容器日誌 | 應用程式使用者介面 |
---|---|---|---|
受管儲存 |
存放在受管儲存體中 |
存放在受管儲存體中 |
支援 |
受管儲存體和 S3 儲存貯體 |
存放在兩個位置 |
存放在 S3 儲存貯體 |
支援 |
Amazon S3 儲存貯體 |
存放在 S3 儲存貯體 |
存放在 S3 儲存貯體 |
不支援1 |
1 建議您保持選取受管儲存選項。否則,您無法使用內建應用程式 UIs。
使用 受管儲存體記錄 for EMR Serverless
根據預設,EMRServerless 會將應用程式日誌安全地存放在 Amazon EMR受管儲存體中,最長 30 天。
注意
如果您關閉預設選項,Amazon EMR無法代表您疑難排解任務。
若要從 EMR Studio 關閉此選項,請在提交任務頁面的其他設定區段取消選取允許 AWS 保留日誌 30 天核取方塊。
若要從 關閉此選項 AWS CLI,請在提交任務執行時使用 managedPersistenceMonitoringConfiguration
組態。
{ "monitoringConfiguration": { "managedPersistenceMonitoringConfiguration": { "enabled": false } } }
使用 Amazon S3 儲存貯體記錄無EMR伺服器
在任務將日誌資料傳送至 Amazon S3 之前,您必須在任務執行期角色的許可政策中包含下列許可。
將 取代為記錄儲存貯體的名稱。amzn-s3-demo-logging-bucket
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::
amzn-s3-demo-logging-bucket
/*" ] } ] }
若要設定 Amazon S3 儲存貯體以儲存來自 的日誌 AWS CLI,請在開始任務執行時使用 s3MonitoringConfiguration
組態。若要這麼做,請在組態--configuration-overrides
中提供下列項目。
{ "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://
amzn-s3-demo-logging-bucket
/logs/" } } }
對於未啟用重試的批次任務,EMRServerless 會將日誌傳送至下列路徑:
'/applications/<applicationId>/jobs/<jobId>'
EMR 無伺服器 7.1.0 版和更新版本支援串流任務和批次任務的重試嘗試。如果您在啟用重試時執行任務,EMRServerless 會自動將嘗試次數新增至日誌路徑字首,以便您更妥善地區分和追蹤日誌。
'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/'
使用 Amazon 記錄無EMR伺服器 CloudWatch
當您將任務提交至 EMR Serverless 應用程式時,您可以選擇 Amazon CloudWatch 作為儲存應用程式日誌的選項。這可讓您使用 CloudWatch Logs Insights 和 Live Tail 等 CloudWatch 日誌分析功能。您也可以將日誌從 串流 CloudWatch 到其他系統,例如 OpenSearch 以進行進一步分析。
EMR Serverless 提供驅動程式日誌的即時記錄。您可以使用 CloudWatch 即時尾部功能或透過 CloudWatch CLI尾部命令即時檢視日誌。
根據預設, CloudWatch 記錄會針對無EMR伺服器停用。若要啟用它,請參閱 中的組態AWS CLI。
注意
Amazon 會即時 CloudWatch 發佈日誌,因此從工作者身上產生更多資源。如果您選擇低工作者容量,可能會對任務執行時間造成的影響增加。如果您啟用 CloudWatch 記錄,我們建議您選擇更大的工作者容量。如果 的每秒交易 (TPS) 速率太低,日誌發佈也可能會限流PutLogEvents
。 CloudWatch 限流組態對所有 服務都是全域的,包括無EMR伺服器。如需詳細資訊,請參閱如何在 re:post 上判斷 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。
如果您未指定選用值,則 會使用預設日誌串流 /aws/emr-serverless
將日誌 CloudWatch 發佈至預設日誌群組 /applications/
。applicationId
/jobs/jobId
/worker-type
EMR 無伺服器 7.1.0 版和更新版本支援串流任務和批次任務的重試嘗試。如果您為任務啟用重試,EMRServerless 會自動將嘗試次數新增至日誌路徑字首,以便您更妥善地區分和追蹤日誌。
'/applications/
<applicationId>
/jobs/<jobId>
/attempts/<attemptNumber>
/worker-type'
下列顯示使用 EMR Serverless 預設設定開啟 Amazon CloudWatch 日誌記錄所需的最低組態:
{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true } } }
下列範例顯示您在開啟 Amazon CloudWatch logging for EMR Serverless 時可以指定的所有必要和選用組態。支援的 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 } } } }
根據預設,EMRServerless 只會將驅動程式 stdout 和 stderr 日誌發佈至 CloudWatch。如果您想要其他日誌,則可以使用 logTypes
欄位指定容器角色和對應的日誌類型。
下列清單顯示您可以為logTypes
組態指定的支援工作者類型:
- Spark
-
-
SPARK_DRIVER : ["STDERR", "STDOUT"]
-
SPARK_EXECUTOR : ["STDERR", "STDOUT"]
-
- Hive
-
-
HIVE_DRIVER : ["STDERR", "STDOUT", "HIVE_LOG", "TEZ_AM"]
-
TEZ_TASK : ["STDERR", "STDOUT", "SYSTEM_LOGS"]
-