View a markdown version of this page

Spark 應用程式日誌 - Amazon EMR

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

Spark 應用程式日誌

可採用以下方法定義此設定。

apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-pi namespace: namespace spec: type: Scala mode: cluster imagePullPolicy: Always mainClass: org.apache.spark.examples.SparkPi mainApplicationFile: "local:///usr/lib/spark/examples/jars/spark-examples.jar" sparkVersion: "3.3.1" emrReleaseLabel: emr_release_label executionRoleArn: job_execution_role_arn restartPolicy: type: Never volumes: - name: "test-volume" hostPath: path: "/tmp" type: Directory driver: cores: 1 coreLimit: "1200m" memory: "512m" labels: version: 3.3.1 volumeMounts: - name: "test-volume" mountPath: "/tmp" executor: cores: 1 instances: 1 memory: "512m" labels: version: 3.3.1 volumeMounts: - name: "test-volume" mountPath: "/tmp" monitoringConfiguration: image: "log_agent_image" s3MonitoringConfiguration: logUri: "S3_bucket_uri" cloudWatchMonitoringConfiguration: logGroupName: "log_group_name" logStreamNamePrefix: "log_stream_prefix" sideCarResources: limits: cpuLimit: "500m" memoryLimit: "250Mi" containerLogRotationConfiguration: rotationSize: "2GB" maxFilesToKeep: "10"

以下是 monitoringConfiguration 下的可用組態選項。

  • 映像 (選用) – 日誌代理程式映像 URL。如果未提供,則由 emrReleaseLabel 擷取。

  • s3MonitoringConfiguration – 將此選項設定為封存至 Amazon S3。

    • logUri (必要) – 您要存放日誌的 Amazon S3 儲存貯體路徑。第一個範例顯示未啟用日誌輪換:

      s3://${logUri}/${APPLICATION NAME}-${APPLICATION UID}/${POD NAME}/stdout.gz s3://${logUri}/${APPLICATION NAME}-${APPLICATION UID}/${POD NAME}/stderr.gz

      日誌輪換預設為啟用。您可以同時使用輪換的檔案 (具有遞增索引) 和目前的檔案 (沒有日期戳記的檔案)。

      s3://${logUri}/${APPLICATION NAME}-${APPLICATION UID}/${POD NAME}/stdout_YYYYMMDD_index.gz s3://${logUri}/${APPLICATION NAME}-${APPLICATION UID}/${POD NAME}/stderr_YYYYMMDD_index.gz
  • cloudWatchMonitoringConfiguration – 要設定轉送的組態金鑰Amazon CloudWatch。

    • logGroupName (必要) – 您要傳送日誌的 Cloudwatch 日誌群組名稱。如果群組不存在,則會自動建立該群組。

    • logStreamNamePrefix (選用) – 您要將日誌傳送到其中的日誌串流名稱。預設值為空字串。CloudWatch 的格式如下所示:

      ${logStreamNamePrefix}/${APPLICATION NAME}-${APPLICATION UID}/${POD NAME}/stdout ${logStreamNamePrefix}/${APPLICATION NAME}-${APPLICATION UID}/${POD NAME}/stderr
  • sideCarResources (選用) – 設定已啟動 Fluentd 附屬容器資源限制的組態金鑰。

    • memoryLimit (選用) – 記憶體限制。根據需要進行調整。預設值為 250Mi。

    • cpuLimit – CPU 限制。根據需要進行調整。預設值為 500 公尺。

  • containerLogRotationConfiguration (選用) – 控制容器日誌輪換行為。依預設會啟用此功能。

    • rotationSize (必要) – 指定日誌輪換的檔案大小。可能的值範圍為 2KB 至 2GB。rotationSize 參數的數值單位部分會以整數形式傳遞。由於不支援小數值,因此可以使用值 1500MB 來指定 1.5GB 的輪換大小。預設值為 2GB。

    • maxFilesToKeep (必要) – 指定輪換發生後要在容器中保留的檔案數量上限。最小值為 1。最大值為 50。預設為 10。

設定 monitoringConfiguration 之後,您應該能夠檢查 Amazon S3 儲存貯體或 CloudWatch 或兩者上的 Spark 應用程式驅動程式和執行器日誌。對於 Amazon S3 儲存貯體,您需要等待 2 分鐘才能排清第一個日誌檔案。例如,在 Amazon S3 中,儲存貯體路徑如下所示:

Amazon S3 > 儲存貯體 > 儲存貯體名稱 > Spark 應用程式名稱 - UUID > Pod 名稱 > stderr.gz

或者:

Amazon S3 > 儲存貯體 > 儲存貯體名稱 > Spark 應用程式名稱 - UUID > Pod 名稱 > stdout.gz

在 CloudWatch 中,路徑如下所示:

CloudWatch > 日誌群組 > 日誌群組名稱 > Spark 應用程式名稱 - UUID/Pod 名稱/stderr

或者:

CloudWatch > 日誌群組 > 日誌群組名稱 > Spark 應用程式名稱 - UUID/Pod 名稱/stdout