Dataproc 的 Persistent History Server

概览

删除 Dataproc 集群后,用户通常希望查看作业历史记录文件以便诊断问题或达到其他目的。Dataproc Persistent History Server (PHS) 提供了一个界面,供您查看在活跃或已删除的 Dataproc 集群上运行的作业的作业历史记录。

Persistent History Server 在单节点 Dataproc 集群上运行,在 Cloud Storage 中存储和访问作业历史记录文件,并且支持 MapReduce、Spark 和 Pig 作业。Dataproc 映像版本 1.4-debian10 及更高版本均支持此功能。

设置作业集群

您可以在创建 Dataproc 作业集群时指定以下标志和集群属性,该集群将用来存储由 Persistent History Server 集群访问和显示的作业日志。

  • --enable-component-gateway必需标志。必须使用此标志来启用组件网关
  • dataproc:job.history.to-gcs.enabled必需的集群属性。此属性必须设置为“true”才能在 Cloud Storage 中启用作业历史记录存储。
  • spark:spark.history.fs.logDirectoryspark:spark.eventLog.dir可选集群属性。这些标志分别指定写入 Spark 作业历史记录和事件日志的位置。如果使用了这两个标志,则必须同时设置这两个标志并指向同一存储分区中的目录。
    示例属性
    spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history,
    spark:spark.eventLog.dir=gs://bucket-name/directory-name/spark-job-history
    
  • mapred:mapreduce.jobhistory.intermediate-done-dirmapred:mapreduce.jobhistory.done-dir可选集群属性。这些标志分别指定用于写入中间和最终 MapReduce 作业历史记录文件的 Cloud Storage 位置。如果使用了这两个标志,则必须同时设置这两个标志并指向同一存储分区中的目录。中间 mapreduce.jobhistory.intermediate-done-dir 位置是临时存储。MapReduce 作业完成后,中间文件将移至 mapreduce.jobhistory.done-dir 位置。
    示例属性
    mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory-name/mapreduce-job-history/done,
    mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done
    
  1. 运行 gcloud dataproc clusters create 命令以创建作业集群。必须使用映像 1.4-debian10 或更高版本创建集群。注意:为了便于阅读,--property 标志值位于单独的行中;运行该命令时,必须为一行指定所有以英文逗号分隔的 --property 标志值
    gcloud dataproc clusters create cluster-name \
        --region=region \
        --image-version=1.4-debian10 \
        --enable-component-gateway \
        --properties='dataproc:job.history.to-gcs.enabled=true,
    spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history,
    spark:spark.eventLog.dir=gs://bucket-name/directory/spark-job-history,
    mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory/mapreduce-job-history/done,
    mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done'
    

您可以运行以下简化命令,让 Dataproc 设置作业历史记录文件的 Cloud Storage 位置。

gcloud dataproc clusters create cluster-name \
    --region=region \
    --image-version=1.4-debian10 \
    --enable-component-gateway \
    --properties='dataproc:job.history.to-gcs.enabled=true'

如果您使用上面所示的简化命令,则作业历史记录文件将保存在 Dataproc 临时存储分区中的默认目录下:/spark-job-history/mapreduce-job-history/done/mapreduce-job-history/intermediate-donegcloud dataproc clusters describe cluster-name --region=region 命令的输出中列出了临时存储分区 Cloud Storage 位置。集群的 /etc/spark/conf/spark-defaults.conf/etc/hadoop/conf/mapred-site.xml 文件中还列出了作业历史记录文件的 Cloud Storage 位置

通过 SSH 连接到作业集群主节点后的示例:

cat /etc/spark/conf/spark-defaults.conf
...
spark.history.fs.logDirectory=gs://temp-bucket/spark-job-history
spark.eventLog.dir=gs://temp-bucket/spark-job-history
cat /etc/hadoop/conf/mapred-site.xml
...
<property>
  <name>mapreduce.jobhistory.done-dir</name>
  <value>gs://temp-bucket/mapreduce-job-history/done</value>
</property>
<property>
  <name>mapreduce.jobhistory.intermediate-done-dir</name>
  <value>gs://temp-bucket/mapreduce-job-history/done_intermediate</value>
</property>

设置 Persistent History Server

您可以在创建 PHS 单节点集群时指定以下标志和集群属性

  • --enable-component-gateway必需标志。必须使用此标志来启用组件网关
  • spark:spark.history.fs.logDirectory用于启用永久性 Spark 作业历史记录的强制性集群属性。此属性用于指定 PHS 将访问作业集群编写的 Spark 作业历史记录日志的 Cloud Storage 存储分区和目录(请参阅设置作业集群)。您无需指定特定的存储分区目录,而是使用星号作为通配符(例如 gs://bucket-name/*/spark-job-history),以允许 PHS 服务器匹配所指定存储分区中由不同作业集群写入的多个目录(但请参阅效率注意事项:使用路径中间通配符
  • mapred:mapreduce.jobhistory.read-only.dir-pattern用于启用永久性 MapReduce 作业历史记录的强制性集群属性。此属性用于指定 PHS 将访问作业集群编写的 MapReduce 作业历史记录日志的 Cloud Storage 存储分区目录(请参阅设置作业集群)。您无需指定特定的存储分区目录,而是使用星号作为通配符(例如 gs://bucket-name/*/mapreduce-job-history/done),以允许 PHS 服务器匹配所指定存储分区中由不同作业集群写入的多个目录(但请参阅效率注意事项:使用路径中间通配符
  1. 运行 gcloud dataproc clusters create 命令以创建单节点 Dataproc PHS 集群。
    gcloud dataproc clusters create cluster-name \
        --single-node \
        --region=region \
        --image-version=1.4-debian10 \
        --enable-component-gateway \
        --properties='spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history,mapred:mapreduce.jobhistory.read-only.dir-pattern=gs://bucket-name/*/mapreduce-job-history/done'
    

查看作业历史记录文件

  1. 在 Cloud Console 中,转到 PHS 单节点集群详情页面,然后点击“Web 界面”标签页。

  2. 点击“MapReduce 作业历史记录”或“Spark History Server”即可查看 MapReduce 和 Spark 的作业历史记录界面。

    示例:

    以下屏幕截图展示了 PHS 历史记录服务器界面,其中显示了在设置作业集群的 spark.history.fs.logDirectoryspark:spark.eventLog.dir 以及 PHS 集群的 spark.history.fs.logDirectory 位置之后,在 job-cluster-1 和 job-cluster-2 上运行的 Spark 作业的链接:

    job-cluster-1 gs://example-cloud-storage-bucket/job-cluster-1/spark-job-history
    job-cluster-2 gs://example-cloud-storage-bucket/job-cluster-2/spark-job-history
    phs-cluster gs://example-cloud-storage-bucket/*/spark-job-history