收录自:http://blog.csdn.net/qsc0624/article/details/51258955
--------------------------
这篇文章介绍怎么样使用Dr.Elephant来进行任务分析。
UI首页
Dr.Elephant启动后,首页如下:
集群统计信息
首页的灰色部分包含了最新的集群信息。这部分列出了最近24小时分析过的任务数量、可以进行优化的任务数量以及亟待优化的任务数量。
最新任务统计
这一部分列出了最近一段时间分析的任务。
搜索页
首页点击“Search”进入搜索页面,在这个页面,我们可以通过不同的搜索项来搜索任务:
- 任务ID:输入任务的ID,可以搜索一个特定的任务或者任务流。返回任务详情页面。
- 任务流执行ID/URL:使用任务流的执行ID或者URL(例如Azkaban的任务流),可以搜索到被这个任务流触发的所有任务。
- 用户名:提交任务的用户名
- 任务类型:搜索特定类型的所有任务
- 待优化等级:每个任务被Dr.Elephant诊断完以后,就会生成一份详细的诊断报告,其中就包括该任务的待优化等级。我们可以基于待优化等级搜索任务。例如,我们在待优化等级输入框中输入“severe(严重)”,搜索结果就会包含至少被一个启发式算法诊断为“severe”的所有任务。在该例子中,搜索时还可以同时指定启发式算法,那么搜索结果就只包含被该启发式算法诊断为“severe”的所有任务。
- 任务结束日期:我们也可以使用任务结束时间作为搜索条件。在“from”和“to”这两个输入框中,可以分别设定起始时间和结束时间。这个时间段是一个左闭右开的区间 ([from, to)),包含from这个时间点,但不包含to这个时间点。
这些所有的搜索条件都可以组合使用。例如,我们可以指定“用户名”为“user1”,同时,指定“待优化等级”为“critical(危急)”,点击搜索,会返回所有的user1提交的任务中待优化等级为“critical”的任务。
任务详情
在UI中点击一个任务,可以进入任务详情页面。
任务信息
- 任务追踪链接(Jobtracker):这个链接指向任务的追踪页面。在这个页面上,可以看到任务的详细信息、日志、map和reduce的task信息。
- 任务执行链接(Job execution):这个链接指向任务在调度器中的执行页面。例如,在Azkaban调度器上,指向这个任务的执行链接。
- 任务定义(Job definition):这个链接指向任务在调度器中的定义页面。例如,在Azkaban调度器上,指向这个任务的属性页面。
- 任务流执行链接(Flow execution):这个链接指向整个任务流的执行页面。例如,在Azkaban调度器上,指向这个任务流的执行页面。
- 任务流定义(Flow definition):同前面的任务定义(Job definition),这个链接指向任务流的定义页面。
- 任务历史(Job history):这个链接指向任务历史页面。下面有对任务历史页的详细介绍。
- 任务流历史(Flow history):这个链接指向任务流历史页。下面有对任务流历史页的详细介绍。
启发式算法诊断报告
当一个任务被Dr.Elephant分析时,Dr.Elephant会运行所有的启发式算法来分析这个任务。每个启发式算法都会对该任务计算出一个待优化等级,这个等级可能会是“无(none)”、“中等(moderate)”、“严重(severe)”或者“危急(critical)”。在每个任务的详细分析页面,都会展示它的待优化等级以及其他分析结果。如果任务的待优化等级不是“无(none)”时,表明某些启发式算法的诊断结果认为这个任务需要优化,同时也会提供相应的链接(帮助页面)来阐述该启发式算法提出的优化建议。任务的开发者可以通过这个链接来帮助自己优化任务。
任务比较
在Dr.Elephant UI的首页,点击Compare进入任务比较页面。在任务比较页面,我们可以在任务级别比较任意两次的任务流执行情况。当我们比较两次任务流的执行时,相同的任务会做出比较并在顶部展示。其他的不同的任务,会按照任务流的顺序依次在下面展示。
历史任务页面
在历史任务页面,展示了每个特定任务近期所有执行情况的比较。
搜索框
我们可以在历史任务页面的搜索框中输入任务的ID或者URL来搜索特定的任务。点击搜索,就会得到该任务的历史执行情况的展示。在前面提到的任务详情页面中,也有链接可以跳转到该任务的历史执行情况页面。这个页面中展示的折线图代表了该任务在历史上每次执行性能的一个打分。
执行性能打分图
执行性能打分图是一个折线图。X轴代表时间,Y轴代表分数。当我们将鼠标停留在折线图中的某个点上时,会看到有弹框弹出。弹框中列出了该任务在本次执行中造成性能问题的Top 3的阶段。执行性能的分数是通过一个简单的公式计算出来的,越低的分数表明该任务执行性能越好。
启发式算法对任务执行分析的扁平状展示
在性能打分折线图的下方,可以看到该任务在近期每次执行的扁平状展示。第一列是每次执行的时间,点击每个时间,都能跳转到任务在调度器中的执行详情页面。接下来的每一列都代表了任务执行的一个阶段。在图表中任务执行的每一阶段,都包含了若干种颜色的圆点。不同的颜色代表了启发式算法分析产生的待优化等级。当我们将鼠标停留在某个任意颜色的圆点上时,会弹出一个弹框展示该启发式算法对该任务的若干优化建议。
历史任务流页面
在历史任务流页面,展示了每个特定任务流近期所有执行情况的比较。
搜索框
我们可以在历史任务流页面的搜索框中输入任务流的ID或者URL来搜索特定的任务。点击搜索,就会得到该任务流的历史执行情况的展示。
执行性能打分图
执行性能打分图是一个折线图。X轴代表时间,Y轴代表分数。当我们将鼠标停留在折线图中的某个点上时,会看到有弹框弹出。弹框中列出了该任务流在本次执行中造成性能问题的Top 3的阶段。执行性能的分数是通过一个简单的公式计算出来的,越低的分数表明该任务流执行性能越好。
启发式算法对任务执行分析的扁平状展示
在性能打分折线图的下方,可以看到该任务流在近期每次执行的扁平状展示。第一列是每次执行的时间,点击每个时间,都能跳转到任务流在调度器中的执行详情页面。接下来的每一列都代表了任务流执行中的一个任务。在图表中的每个任务阶段,都包含了若干种颜色的圆点。当我们将鼠标停留在某个任意颜色的圆点上时,会弹出一个弹框展示所有的启发式算法,以及这些算法对该任务的待优化等级的分析结果。
帮助
在Dr.Elephant UI首页点击“Help”可以跳转到帮助页面。还可以通过其他方式跳转到帮助页面,比如通过点击UI中任务详情页的“explain”链接(当启发式算法诊断结果为moderate、severe或者critical时出现这个链接)。在帮助页面,可以看到所有的启发式算法的介绍,以及这些启发式算法给出的优化建议。点击某个特定的启发式算法,可以看到该启发式算法得出的详细优化建议。上面图片中,展示了Mapper memory启发式算法给出的优化建议。
待优化等级
待优化等级代表了该任务的性能,表明了该任务在性能上需要优化的迫切程度。我们通过参数可以配置每个启发式算法的一些阈值,启发式算法给每个任务的诊断分析,都会得出一个待优化等级。待优化等级共有5个,下面按照待优化的迫切性降序排序给出:CRITICAL > SEVERE > MODERATE > LOW > NONE
Severity | Color | Description |
CRITICAL |
| 这个任务迫切需要被优化 |
SEVERE |
| 这个任务有很大的可优化的空间 |
MODERATE |
| 这个任务有进一步的可优化空间 |
LOW |
| 这个任务有很小的可优化的空间 |
NONE |
| 这个任务很安全,没有可优化空间 |
作者简介:屈世超,现专注于大数据。曾任职小米科技公司服务端后台开发工程师,现担任EverString数据平台组高级开发工程师。