Spark计算框架的元素之间关系:
Spark UI监控界面如何观察各元素的状态?
Spark的概念非常多, 看懂监控页面才能方便定位性能问题, 下面主要是著名样例 workcount的执行监控结果样例:
-
1 代表job页面
在里面可以看到当前应用分析出来的所有Job,以及所有的excutors中action的执行时间。
第一部分event timeline
展开后,可以看到executor创建的时间点,以及某个action触发的算子任务,执行的时间。通过这个时间图,可以快速的发现应用的执行瓶颈,触发了多少个action类型算子。
第二部分的图表,显示了触发action类型算子的job名字,它通常是某个count,collect等操作。在spark中rdd的计算分为两类,一类是transform转换操作,一类是action操作,只有action类型算子操作才会触发真正的rdd计算。collect at test2.java:27
描述了action类型算子的名字和所在的行号,这里的行号是精准匹配到代码的,所以通过它可以直接定位到任务所属的代码,这在调试分析的时候是非常有帮助的。
Duration
显示了该action类型算子的耗时,通过它也可以对代码进行专门的优化。
最后的进度条,显示了该任务失败和成功的次数,如果有失败的就需要引起注意
-
2 代表stage页面
在里面可以看到应用的所有stage,stage是按照宽依赖来区分的,因此粒度上要比job更细一些
stage页面的使用基本上跟job类似,不过多了一个DAG图,点击每个stage 的details会出现
可以看到每个stage中的算子信息和调用顺序
-
3 代表storage页面
所做的cache persist等操作,都会在这里看到,可以看出来应用目前使用了多少缓存
点击进去可以看到具体在每个机器上,使用的block的情况
-
4 代表environment页面
里面展示了当前spark所依赖的环境,比如jdk,lib等等静态配置信息(图略)
-
5 代表executors页面
这里可以看到执行者申请使用的内存以及shuffle中input和output等数据
一方面通过它可以看出来每个excutor是否发生了数据倾斜;
另一方面可以具体分析目前的应用是否产生了大量的shuffle,是否可以通过数据的本地性或者减小数据的传输来减少shuffle的数据量。
-
6 这是应用的名字
代码中如果使用setAppName,就会显示在这里
-
7 是job的主页面
没有评论