我希望有一个监控和警报系统(使用Datadog等工具),可以从我的Spark应用程序中获取数据和日志。事情是,为了避免每天启动,运行和杀死数百甚至数千个Job集群,最好重用现有集群进行类似的数据提取作业。
为了从Datadog中的Databricks和Spark获取指标,我尝试了以下方法:
1.在每个笔记本中更改SparkSession.builder.appName
:不起作用,因为在集群启动后无法更改它。默认情况下,它将始终是“Databricks Shell”
1.设置一个集群范围的标签,并在作业结束后取消设置->可能会导致标签之间的不匹配,当并发发生时。
1.以某种方式从Datadog获取数据块的作业/运行ID:我不知道如何做到这一点。
在我看来,这是可行的,因为同一个SparkSession上的每个spark作业都有我的Databricks作业/运行id的名称。我只需要了解如何在Datadog上识别它。
有什么想法?为了达到这个目标我可能会错过什么愚蠢的事情?
2条答案
按热度按时间ffx8fchx1#
这里有几点:
所以我建议使用单独的自动集群。如果你想重用节点,并且有更短的启动时间,你可以使用示例池。
如果你想监控资源使用情况等,我建议看看项目Overwatch,它能够从不同的来源收集数据,如集群日志,API等,然后建立统一的性能视图,成本等,其优点之一是,你可以属性成本,资源负载,它不是“经典的”实时监控工具,但已经被许多客户使用。
bybem2ql2#
我不确定我是否完全理解了你的用例,但是你可以使用简单的python代码来获取基于rest API的作业id。