【问题标题】:Missing Metrics for Apache Beam Pipeline (via SparkRunner / Dataproc)Apache Beam 管道缺少指标(通过 SparkRunner / Dataproc)
【发布时间】:2021-01-19 09:02:06
【问题描述】:

我目前正在通过 Spark Runner 将一些指标添加到在 Google Dataproc 上运行的现有管道中,并且我正在尝试确定如何访问这些指标并最终将它们公开给 Stackdriver(用于下游在 Grafana 仪表板中)。

指标本身相当简单(一系列计数器),并且是这样定义的(并在整个管道中的 DoFns 中访问):

object Metrics {
   val exampleMetric: Counter = Metrics.counter(ExamplePipeline::class.qualifiedName, "count")

   // Others omitted for brevity
}

此指标(和其他指标)在整个管道过程中在各种 DoFn 调用中递增,并且多个单元测试确认管道中的 MetricQueryResults 对象在通过 DirectRunner 执行后正确填充。

这里的主要问题是,我在 Dataproc 或 GCP 中公开的任何相关 UI(YARN ResourceManager、Spark History Server、YARN 应用程序时间线等)中没有看到这些指标正在发出的迹象强>。我已经尝试在日志和其他任何我可以搜索的地方进行搜索,但我没有看到这些自定义指标的任何迹象(或者实际上任何通常从 Spark 和/或 Stackdriver 发出的指标)。

工作配置

Spark 作业本身是通过脚本中的以下命令配置的(假设已将相应的 .jar 文件复制到 GCP 中的正确存储桶中:

gcloud dataproc jobs submit spark --jar $bucket/deployment/example-pipeline.jar \
       --project $project_name \
       --cluster $cluster_name \
       --region $region  \
       --id pipeline-$timestamp \
       --driver-log-levels $lots_of_things_here \
       --properties=spark.dynamicAllocation.enabled=false \
       --labels="type"="example-pipeline","namespace"="$namespace" \
       --async \
       -- \
         --runner=SparkRunner \
         --streaming

集群配置

集群本身似乎启用了我能想到的所有与指标相关的属性,例如:

dataproc:dataproc.logging.stackdriver.enable=true
dataproc:dataproc.logging.stackdriver.job.driver.enable=true
dataproc:dataproc.monitoring.stackdriver.enable=true
dataproc:spark.submit.deployMode=cluster
spark:spark.eventLog.dir=hdfs:///var/log/spark/apps
spark:spark.eventLog.enabled=true
yarn:yarn.log-aggregation-enable=true
yarn:yarn.log-aggregation.retain-seconds=-1

这些只是集群上的一些属性,但还有无数其他属性,因此如果其中一个似乎缺失或不正确(因为它与指标故事有关),请随时询问。

问题

  • 这些指标似乎不是从 Spark(或 Stackdriver)自动发出或可见的,是否在集群/作业级别缺少一些配置?或者类似MetricsOptions 接口的东西?
  • 一旦我们实际发出了指标,我会假设 Stackdriver 有一种机制来处理从 DataProc 使用这些指标(这听起来就像 dataproc:dataproc.monitoring.stackdriver.enable=true 会处理的那样)。是这样吗?

我不得不想象这是一个相当常见的用例(用于 Spark / Dataproc / Beam),但我不确定缺少配置难题的哪些部分,并且与此过程相关的文档/文章似乎相当稀少。

提前致谢!

【问题讨论】:

    标签: apache-spark google-cloud-platform apache-beam google-cloud-dataproc google-cloud-stackdriver


    【解决方案1】:

    很遗憾,截至今天,Dataproc 没有用于 Spark 系统和自定义指标的 StackDriver 集成。

    可以通过配置 /etc/spark/conf/metrics.properties(您可以从 /etc/spark/conf/metrics.properties.template 复制)或通过集群/作业属性来启用 Spark 系统指标。在doc 中查看更多信息。最好的情况是,您可以在集群中以 CSV 文件或 HTTP 服务的形式提供这些指标,但目前还没有与 StackDriver 集成。

    对于 Spark 自定义指标,您可能需要实现自己的源,例如 question,然后它可以在集群中作为系统指标提供,如上所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      • 2018-11-05
      • 2021-11-25
      • 2018-01-05
      相关资源
      最近更新 更多