Cloud Profiler

Cloud Profiler 會持續收集及回報應用程式的 CPU 用量和記憶體分配資訊。

需求條件:

  • Profiler 僅支援 Dataproc Hadoop 和 Spark 工作類型 (Spark、PySpark、SparkSql 和 SparkR)。

  • 工作必須執行超過 3 分鐘,Profiler 才能收集資料並上傳至專案。

Dataproc 會辨識 cloud.profiler.enable 和其他 cloud.profiler.* 屬性 (請參閱「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. 若使用自訂 VM 服務帳戶,請將 Cloud Profiler 代理程式角色授予自訂 VM 服務帳戶。這個角色包含必要的 Profiler 服務權限。

gcloud

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

提交 Dataproc 工作並設定 Profiler 選項

  1. 提交 Dataproc Spark 或 Hadoop 工作,並使用下列一或多個 Profiler 選項:
    選項 說明 必要/選用 預設 附註
    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 需進行剖析的 Map 任務數值範圍(例如:若最多 100 個,則指定「0-100」) number range 選用 0-10000 僅適用於 Hadoop MapReduce 工作
    mapreduce.task.profile.reduces 需進行剖析的 reducer 任務數值範圍 (例如:若最多 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

查看剖析檔

在 Google Cloud 控制台的「Profiler」中查看剖析檔。

後續步驟