Spark 应用程序日志 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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 – 设置此选项以存档到 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 sidecar 容器上设置资源限制的配置密钥。

    • memoryLimit(可选)– 内存限制。根据自身需求进行调整。默认值为 250Mi。

    • cpuLimit – CPU 限制。根据自身需求进行调整。默认值为 500m。

  • containerLogRotationConfiguration(可选)– 控制容器日志轮换行为。该功能默认已启用。

    • rotationSize(必需)– 指定日志轮换的文件大小。可行值的范围从 2KB 到 2GB 不等。rotationSize 参数的数字单位部分以整数形式传递。由于不支持十进制值,您可以指定 1.5GB 的轮换大小,例如值 1500MB。默认值为 2GB。

    • maxFilesToKeep(必需)– 指定轮换后要在容器中保留的最大文件数。最小值为 1。最大值为 50。默认值为 10。

配置 monitoringConfiguration 后,您应该能够在 Amazon S3 存储桶和/或 CloudWatch 上查看 Spark 应用程序驱动程序和执行程序日志。对于 Amazon S3 存储桶,需要等待 2 分钟才能刷新第一个日志文件。例如,在 Amazon S3 中,存储桶路径如下所示:

Amazon S3 > 存储桶 > 存储桶名称 > Spark 应用程序名称 - UUID > 容器组名称 > stderr.gz

或:

Amazon S3 > 存储桶 > 存储桶名称 > Spark 应用程序名称 - UUID > 容器组名称 > stdout.gz

在 CloudWatch 中,路径如下所示:

CloudWatch > 日志组 > 日志组名称 > Spark 应用程序名称 - UUID/ 容器组名称/stderr

或:

CloudWatch > 日志组 > 日志组名称 > Spark 应用程序名称 - UUID/ 容器组名称/stdout