spark UI详解
清楚的理解spark UI 的各个阶段有助于进行调优和分析定位问题
如何访问:默认ip:8088,在程序启动时也可看到日志中的UI访问地址
1:UI界面
导航栏部分主要分为7大部分
1:job级别的任务执行记录,可看到具体的executor和task执行时间
2:所有stage,stage是按照宽依赖来区分的,因此粒度上要比job更细一些,
划分依据详见:stage的划分
3 :storage页面,我们所做的cache persist等操作,都会在这里看到,可以看出来应用目前使用了多少缓存
4: 代表environment页面,里面展示了当前spark所依赖的环境,比如jdk,lib等等
5 :代表executors页面,这里可以看到执行者申请使用的内存以及shuffle中input和output等数据
6 :streaming所有执行的job,可以看到是否有数据积压,执行时间
7 :这是应用的名字,代码中如果使用setAppName,就会显示在这里
1.1:job详解
主要分为,任务统计区,Active Jobs,Completed Jobs
1:信息统计
User: root 任务提交的用户
Total Uptime: 72.6 h 程序总运行时间
Scheduling Mode: FIFO 调度器
2:Active Jobs:正在运行的job
3:Completed Jobs:已经完成的job
1:job分析
可查看event timeline查看详细的使用时间,进行job的执行时间分析,进行瓶颈判断
点击dexcribe中的蓝色可查看具体的stage执行详情
2:job的stage
数据倾斜判断:执行时间的min,max看是否差距较大
下方的stdout可以查看任务的运行日志
3:event timeline理解
一个task对应一个时间线,
绿色executor conputing time:任务计算耗时,应该占用大部分时间,若个别时间很长会导致进入不到下一个任务的执行,影响整体的处理时间。若整体时间都长说明分区太少整体数据量大,可以考虑增加分区数提高并行处理能力
Scheduler Delay:调度用时
1.2:stage
所有的stage汇总,随意点击一个和job的stage中显示是一样的
1.3:storage
1.4:environment
当前spark程序所依赖的环境,比如jdk,lib。所提供额其他配置参数等等
1.5:executors
总executor数,可查看该页面的gc时间,判断所分配的资源是否足够,若报红基本就是资源不够用。也可看各个executor运行状态等
1.6:streaming
可查看是否有数据积压,结合job的timelines进行问题定位
整体的处理时间保持在虚线以下即可
2:程序日志
streaming程序日志保存在hdfs上,可下载查看:
默认路径/tmp/logs/root/logs
查看:hadoop fs -ls /tmp/logs/root/logs
下载:hadoop fs -get /tmp/logs/root/logs
root为提交的用户,该路径下就是所有的提程序的日志。