Google Cloud Logging中的Dataproc Spark作业输出

问题描述 投票:16回答:2

有没有办法将Dataproc Spark作业的输出发送到Google Cloud日志记录? As explained in the Dataproc docs来自作业驱动程序的输出(Spark作业的主控)可在控制台中的Dataproc-> Jobs下使用。我希望在Cloud Logging中记录日志有两个原因:

  1. 我想看看执行者的日志。通常,主日志会在没有进一步细节的情况下说“执行器丢失”,并且获得有关执行程序的更多信息将非常有用。
  2. Cloud Logging具有很好的过滤和搜索功能

目前,Cloud Logging中显示的Dataproc唯一输出是来自yarn-yarn-nodemanager- *和container _ * .stderr的日志项。我的应用程序代码的输出显示在Dataproc-> Jobs中,但不显示在Cloud Logging中,它只是Spark master的输出,而不是执行程序的输出。

apache-spark google-cloud-dataproc google-cloud-logging
2个回答
7
投票

tl;博士

现在不支持本机,但将在Cloud Dataproc的未来版本中本机支持。也就是说,在此期间有一个手动解决方法。

解决方法

Cloud Dataproc群集使用fluentd收集日志并将其转发到Cloud Logging。流利的配置是您看到转发的一些日志而不是其他日志的原因。因此,简单的解决方法(直到Cloud Dataproc支持Cloud Logging中的作业详细信息)是修改flientd配置。群集上流利的配置文件位于:

/etc/google-fluentd/google-fluentd.conf

有两件事情可以收集最简单的细节:

  1. 根据您的需求添加新的fluentd plugin
  2. 将新文件添加到收集的现有文件列表中(行56包含我的群集上的文件)

编辑配置后,您需要重新启动google-fluentd服务:

/etc/init.d/google-fluentd restart

最后,根据您的需要,您可能需要也可能不需要在群集上的所有节点上执行此操作。根据您的使用案例,听起来您可能只是更改主节点并进行设置。


1
投票

您可以使用dataproc initialization actions for stackdriver

gcloud dataproc clusters create <CLUSTER_NAME> \
    --initialization-actions gs://<GCS_BUCKET>/stackdriver.sh \
    --scopes https://www.googleapis.com/auth/monitoring.write
© www.soinside.com 2019 - 2024. All rights reserved.