Dr.Elephant
设置
请按照快速安装说明操作here.
先决条件
Play/Activator
Hadoop/Spark on Yarn
为了在本地部署Dr.Elephant
测试,你需要安装Hadoop(version 2.x)
或者Spark(Yarn mode, version > 1.4.0)
,以及资源管理服务和历史作业服务(可以用伪分布式)。关于伪分布式模式在YARN上运行MapReduce作业相关说明可以在这里找到。
如果还没设置环境变量,可以导入HADOOP_HOME
变量
|
|
将hadoop的home目录添加到系统变量下,因为Dr.Elephant
会调用到hadoop的某些类库
|
|
确保历史作业服务器正常运行,因为Dr.Elephant
需要依赖他运行
|
|
数据库
Dr.Elephant
需要一个数据库来存储相关祖业信息和分析结果数据
本地配置并启动一个mysql
。可以从以下链接获取最新版的mysql
:https://www.mysql.com/downloads/。`Dr.Elephant`支持`mysql 5.5+以上的版本,有啥问题可以去Alex (wget.null@gmail.com) 的Google小组讨论。
创建一个名为
drelephant`的库。
|
|
可以在Dr.Elephant
的配置文件app-conf/elephant.conf
中配置数据库的url、数据库名称、用户名和密码。
使用其他数据库
目前,Dr.Elephant
默认是支持MySQL
数据库。但我们可以在evolution files
中看到DDL声明。如果想配置其他的数据库,可以参考这里进行配置。
测试Dr.Elephant
你可以通过调用编译脚本来测试,脚本会进行所有单元测试。
项目结构
|
|
启发式算法
Dr.Elephant
已经为MapReduce和Spark集成了一系列的启发式算法。有关这些算法的详细信息,请参阅启发式算法指南。这些算法都是可插拔式的模块,可以很简单的配置好。
添加新的启发式算法
- 你可以添加自定义的算法到
Dr.Elephant
中。 - 创建新的启发式算法,并完成测试
- 为自定义的启发式算法创建一个新的
view
页,例如helpMapperSpill.scala.html
- 在
HeuristicConf.xml
文件中添加该启发式算法的详情 HeuristicConf.xml
文件应该包含下列内容:- applicationtype:应用程序类型,是MapReduce还是spark
- heuristicname:算法名称
- classname:类名全称
- viewname:view页全称
- hadoopversions:该算法匹配的hadoop版本号
- 运行
Dr.Elephant
,他应该包含你新添加的算法了
HeuristicConf.xml
文件示例
|
|
配置启发式算法
如果你想要覆盖启发式算法中用到的关于严重性指标的的阈值,你可以在HeuristicConf.xml
文件中指定其值,例子如下。
配置严重性阈值
|
|
调度器
如今,Dr.Elephant
支持3种工作流调度器。他们是Azkaban
,Airflow
和Oozie
。默认情况下,这些调度器都是可用的,除了Airflow
和Oozie
需要一些配置外,一般都是开箱即用。
调度器配置
调度器和他们所有的参数都在app-conf
目录下的SchedulerConf.xml
文件中配置。
通过下面的示例SchedulerConf.xml
文件,了解调度器相应的配置和属性。
|
|
贡献新的调度器
为了充分利用Dr. Elephant
的全部功能,需要提供以下4个ID
- 作业定义ID:整个作业流程中定义的唯一ID。通过过滤这个ID可以查询所有历史作业
- 作业执行ID:作业执行的唯一ID
- 工作流定义ID:独立于任何执行的对整个流程的唯一ID
- 工作流执行ID:特定流程执行的唯一ID
Dr. Elephant
希望通过上述ID能与任何调度器对接。没有这些ID,Dr. Elephant
无法为Azkaban
提供集成。例如,如果没有提供作业定义Id,那么Dr. Elephant
将无法捕获作业的历史数据。同样,如果没有提供Flow定义Id,则无法捕获工作流的历史记录。如果没有上述所有链接,Dr. Elephant
只能在执行过程中(Mapreduce作业级别)显示作业的性能数据。
除了上述的4个ID之外,Dr. Elephant
还需要一个可选的工作名称和4个可选链接,这些链接将帮助用户轻松的从Dr. Elephant
跳转到相应的作业应用程序。
请注意,这不会影响Dr. Elephant
的功能。
- Flow Definition Url
- Flow Execution Url
- Job Definition Url
- Job Execution Url
打分器
在Dr.Elephant
中,通过启发式算法来分析运行完成的任务,会得到一个打分。这个分数的计算方法比较简单,可以通过将待优化等级的值乘以作业(task)数量。
|
|
我们定义下列打分类型:
- 作业得分:所有作业的待优化等级数值之和
- 任务得分:该任务中所有的作业分数之和
- 任务流得分:该任务流中所有的任务分数之和