Dr.Elephant简介 - 【Dr.Elephant系列文章-1】


Dr.Elephant被定位成一个对Hadoop和Spark任务进行性能监控和调优的工具,它能够自动收集Hadoop平台所有的度量标准,并对收集的数据进行分析,并将分析结果以一种简单且易于理解的形式展示出来。Dr.Elephant的设计目的是通过它对任务的分析结果指导Hadoop/Spark开发者对其任务进行便捷的优化,从而提高开发者的效率以及Hadoop集群的使用效率。在Dr.Elephant中定义了一系列的启发式算法(Heuristics),这些算法提供了对Hadoop/Spark任务进行性能分析的功能,这些启发式算法都是基于一定的Hadoop/Spark任务调优规则而设计的,而且这些启发式算法被设计成插件式的、可配置的,我们可以很方便的在Dr.Elephant中添加自定义的启发式算法。通过对任务进行分析,启发式算法会给我们一些优化建议,基于此,我们可以对任务进行调优,从而使任务的运行更加高效。

为什么要使用Dr.Elephant?

针对Hadoop平台优化的工具有很多,有开源的也有收费的工具。但是,大部分工具的用途是简化Hadoop集群的部署和管理,很少有工具能帮助Hadoop开发者优化他们的任务流程。虽然有一些可用的工具是面向这个领域的,但是,他们要不就是不够受用户欢迎,要不就是在扩展性上做的不好,不能很好的支持快速发展的Hadoop框架。Dr.Elephant能够支持Hadoop平台的各种框架,而且对于新框架也有很好的扩展性。比如最近比较火的Spark框架,Dr.Elephant能很好的支持它,这是Dr.Elephant具有高扩展性的体现,对于任何新的Hadoop框架,我们可以配置和使用自定义的启发式算法,从而对新框架的性能进行分析。Dr.Elephant的强大功能能帮助Hadoop/Spark使用者理解他们任务流的内部机制,从而帮助他们轻松的优化这些任务。

核心功能点

  • 启发式算法是基于规则的,且是插件式、可配置的,具有良好扩展性,能分析各种各样的框架
  • 创造性的和Azkaban调度器集成,并且支持任意一种Hadoop任务调度器,例如Oozie
  • 能自动统计所有历史任务的性能
  • 能实现Job级别的任务流性能比较
  • 对Hadoop和Spark任务能进行性能诊断
  • 具有良好的扩展性,能支持新种类的任务、应用和调度器
  • 提供REST API,用户能够通过API获取所有信息

入门指南

用户指南:点击进入

开发者指南:点击进入

管理者指南:点击进入

任务优化建议:点击进入

Dr.Elephant工作原理

Dr.Elephant定期从Hadoop平台的YARN资源管理中心获取近期所有的任务,这些任务既包含成功的任务,也包含哪些失败的任务。每个任务的元数据,例如任务计数器、配置信息以及运行信息都可以从Hadoop平台的历史任务服务端获取到。一旦获取到了任务的元数据,Dr.Elephant就基于这些元数据运行启发式算法,然后会产生一份该启发式算法对该任务性能的诊断报告。根据每个任务的执行情况,这份报告会为该任务标记一个待优化的严重性级别。严重性级别一共分为五级,报告会对该任务产生一个级别的定位,并通过级别来表明该任务中存在的性能问题的严重程度。

Dr.Elephant的一个应用场景

在LinkedIn,Hadoop平台的开发者使用Dr.Elephant来做很多事情。比如,监控每个任务在集群上性能,或者用来分析理解为什么某个任务执行性能较差以及怎么样去优化它们,还可以用来比较任务的多次运行情况等等。在LinkedIn,Dr.Elephant已经成为一个标准,只有被Dr.Elephant检查合格的任务才可以放到生产环境上执行。

任务优化分析示例

在Dr.Elephant的UI上,包含了近期所有的任务,以及这些任务的分析数据


一旦一个任务执行完成,Dr.Elephant就会将它的分析信息加载到UI中。用户也可以在UI的搜索页来搜索某个任务。搜索任务时,可以通过job id、任务的执行url(当用任务调度器调度任务时,是可以获取到执行url的)、任务的发起者、任务的结束时间、任务类型来进行任务搜索,甚至可以通过任务分析报告中的等级来进行任务搜索。


搜索页中展示的搜索结果从高层面对任务的性能进行分析,通过使用不同的颜色代表不同的严重性等级,来表示任务和启发式算法的综合情况。当UI中某个任务的颜色标记为红色时,表明这个任务的性能问题很严重,亟待优化;当任务的颜色标记为绿色时,表明这个任务的运行效率很高。

在UI中点击每个任务块,可以得到每个任务的完整诊断报告。在诊断报告中,每个启发式算法都会对该任务生成一个详细的分析。点击每个链接可以看到每个启发式算法对应的分析结果,这个结果提供了针对该任务在该启发式算法上的优化建议。








作者简介:屈世超,对高并发系统设计开发感兴趣,现专注于大数据开发工作。曾任职小米科技公司服务端后台开发工程师,现担任EverString数据平台组高级开发工程师。

Dr.Elephant简介 - 【Dr.Elephant系列文章-1】_第1张图片

你可能感兴趣的:(大数据开发,Dr.Elephant,Hadoop,Spark,Hadoop性能分析,Spark性能优化)