有没有办法将Dataproc Spark作业的输出发送到Google Cloud日志记录?如Dataproc文档中所述,作业驱动程序(Spark作业的主控)的输出在控制台中的Dataproc-> Jobs下可用.我希望在Cloud Logging中记录日志有两个原因:
我想看看执行者的日志.通常,主日志会在没有进一步细节的情况下说"执行器丢失",并且获得有关执行程序的更多信息将非常有用.
Cloud Logging具有很好的过滤和搜索功能
目前,Cloud Logging中显示的Dataproc唯一输出是来自yarn-yarn-nodemanager-*和container _*.stderr的日志项.我的应用程序代码的输出显示在Dataproc-> Jobs中,但不显示在Cloud Logging中,它只是Spark master的输出,而不是执行程序的输出.
TL;博士
现在不支持本机,但将在Cloud Dataproc的未来版本中本机支持.也就是说,在此期间有一个手动解决方法.
解决方法
Cloud Dataproc群集使用流畅的方式收集日志并将其转发到Cloud Logging.流利的配置是您看到转发的一些日志而不是其他日志的原因.因此,简单的解决方法(直到Cloud Dataproc支持Cloud Logging中的作业详细信息)是修改flientd配置.群集上流利的配置文件位于:
/etc/google-fluentd/google-fluentd.conf
有两件事情可以收集最简单的细节:
根据您的需求添加一个新的流畅插件
将新文件添加到收集的现有文件列表中(行56
包含我的群集上的文件)
编辑配置后,您需要重新启动google-fluentd
服务:
/etc/init.d/google-fluentd restart
最后,根据您的需要,您可能需要也可能不需要在群集上的所有节点上执行此操作.根据您的使用案例,听起来您可能只是更改主节点并进行设置.