Cloud Profiler

Cloud Profiler 会持续收集和报告应用的 CPU 使用率和内存分配信息。

要求:

  • Profiler 仅支持 Dataproc Hadoop 和 Spark 作业类型(Spark、PySpark、SparkSql 和 SparkR)。

  • 作业必须运行超过 3 分钟,Profiler 才能收集数据并将其上传到您的项目中。

Dataproc 会识别 cloud.profiler.enable 和其他 cloud.profiler.* 属性(请参阅 Profiler 选项),然后将相关的性能剖析器 JVM 选项附加到以下配置:

  • Spark:spark.driver.extraJavaOptionsspark.executor.extraJavaOptions
  • MapReduce:mapreduce.task.profile 和其他 mapreduce.task.profile.* 属性

启用分析

完成以下步骤以在 Dataproc Spark 和 Hadoop 作业上启用和使用 Profiler。

  1. 启用 Profiler

  2. 创建 Dataproc 集群,并将服务账号范围设置为 monitoring 以允许集群与 Profiler 服务通信。

  3. 如果您使用的是自定义虚拟机服务账号,请向自定义虚拟机服务账号授予 Cloud Profiler Agent 角色。这个 角色包含所需的性能分析器服务权限。

gcloud

gcloud dataproc clusters create cluster-name \
    --scopes=cloud-platform \
    --region=region \
    other args ...

使用 Profiler 选项提交 Dataproc 作业

  1. 使用以下一个或多个 Profiler 选项提交 Dataproc Spark 或 Hadoop 作业
    选项 说明 必需/可选 默认 备注
    cloud.profiler.enable 启用对作业的分析 truefalse 必需 false
    cloud.profiler.name 用于在 Profiler 服务上创建配置文件的名称 profile-name 可选 Dataproc 作业 UUID
    cloud.profiler.service.version 用户提供的字符串,用于识别和区分 Profiler 结果。 Profiler Service Version 可选 Dataproc 作业 UUID
    mapreduce.task.profile.maps 要分析的映射任务的数量范围(例如,如果最多 100 个,请指定“0-100”) number range 可选 0-10000 仅适用于 Hadoop mapreduce 作业
    mapreduce.task.profile.reduces 要分析的缩减器任务的数量范围(例如,如果最多 100 个,请指定“0-100”) number range 可选 0-10000 仅适用于 Hadoop mapreduce 作业

PySpark 示例

Google Cloud CLI

启用了分析的 PySpark 作业提交示例:

gcloud dataproc jobs submit pyspark python-job-file \
    --cluster=cluster-name \
    --region=region \
    --properties=cloud.profiler.enable=true,cloud.profiler.name=profiler_name,cloud.profiler.service.version=version \
    --  job args

将创建两个配置文件:

  1. profiler_name-driver,用于分析 Spark 驱动程序任务
  2. profiler_name-executor,用于分析 Spark 执行程序任务

例如,如果 profiler_name 是“spark_word_count_job”,则会创建 spark_word_count_job-driverspark_word_count_job-executor 配置文件。

Hadoop 示例

gcloud CLI

启用了分析的 Hadoop (teragen mapreduce) 作业提交示例:

gcloud dataproc jobs submit hadoop \
    --cluster=cluster-name \
    --region=region \
    --jar=jar-file \
    --properties=cloud.profiler.enable=true,cloud.profiler.name=profiler_name,cloud.profiler.service.version=version \
    --  teragen 100000 gs://bucket-name

查看配置文件

通过以下工具查看 Profiler 中的配置文件: Google Cloud 控制台

后续步骤