Sparklint调研
目录
概述
这个项目是之前的同事推荐看的,周末看了下,写篇文章总结下,本文主要解读一下 README,然后本地跑起来看看,最后分析一下具体实现。
Sparklint是什么
Sparklint 提供了一个优雅的 Web UI 来观察 Spark 任务的运行状态和性能。具体包括了:
- Spark 任务生命周期的一些统计指标,例如空闲时间,平均 CPU 使用,数据的本地性情况等等
- Executor 的 Task 分配情况
- FAIR 调度组的 VCore 使用情况可视化
- 任务本地性
- 发现可以持久化优化性能的 RDD
这个项目主要是希望通过抓取这些指标来报告 Spark 任务的性能瓶颈,和对 Spark 的一些重要指标进行实时的监控。
Sparklint demo
关于这个项目的使用,请仔细阅读其文档,主要是 Spark 版本等问题。
这个项目比较骚的地方在于,除了可以在实时分析,也可以基于日志问题做离线分析,启动项目之后,Web UI 是这样的。
关于如何打开 EventLog 的配置,就不在此赘述了,需要的同学可以自行查找资料。我本地运行环境可以参考以下。
|
|
命令行运行了一个 local 任务,并且把 EventLog 保存到 /tmp/directory
路径下。
实时观察,可以看到按照官网方法,运行的时候跑出来是这样的,可以实时观察图中各指标的情况。
实现分析
笔者分析一般喜欢 debug 整个程序,在 sbt 项目中,一般有个 assembly 插件,其中可以在 build.sbt 文件中加入 test in assembly := {}
,这样在断点 debug 的时候就可以跳过所有的测试用例。
也可以一个个测试用例跑一下,看看主要的程序代码逻辑是怎么走的。
总结
很多公司都会针对 SparkEventListener 做点事情。需要对 Spark 消息机制比较熟悉。
警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。