Hadoop监控分析工具Dr.Elephant

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop监控分析工具Dr.Elephant相关的知识,希望对你有一定的参考价值。

公司基础架构这边想提取慢作业和获悉资源浪费的情况,所以装个dr elephant看看。LinkIn开源的系统,可以对基于yarn的mr和spark作业进行性能分析和调优建议。


DRE大部分基于java开发,spark监控部分使用scala开发,使用play堆栈式框架。这是一个类似Python里面Django的框架,基于java?scala?没太细了解,直接下来就能用,需要java1.8以上。


prerequest list:

Java 1.8

PlayFramework+activator

Nodejs+npm

scala+sbt


编译服务器是设立在美国硅谷的某云主机,之前为了bigtop已经装好了java,maven,ant,scala,sbt等编译工具,所以下载activator解压放到/usr/local并加入PATH即可。


然后从 github clone一份dr-elephant下来,打开compile.conf,修改hadoop和spark版本为当前使用版本,:wq保存退出,运行compile.sh进行编译,经过短暂的等待之后,因为美国服务器,下依赖快。会有个dist文件夹,里面会打包一个dr-elephant-2.0.x.zip,拷出来解压缩就可以用了。


DRE本身需要mysql 5.5以上支持,或者mariadb最新的10.1稳定版本亦可。这里会有一个问题,就是在DRE/conf/evolutions/default/1.sql里面的这三行:

create index yarn_app_result_i4 on yarn_app_result (flow_exec_id);
create index yarn_app_result_i5 on yarn_app_result (job_def_id);
create index yarn_app_result_i6 on yarn_app_result (flow_def_id);

由于在某些数据库情况下,索引长度会超过数据库本身的限制,所以,需要修改索引长度来避免无法启动的情况发生。

create index yarn_app_result_i4 on yarn_app_result (flow_exec_id(150));
create index yarn_app_result_i5 on yarn_app_result (job_def_id(150));
create index yarn_app_result_i6 on yarn_app_result (flow_def_id(150));

然后就应该没啥问题了。


到数据库里创建一个叫drelephant的数据库,并给出相关访问权限用户


接下来是需要配置DRE:

打开app-conf/elephant.conf

# Play application server port
# 启动dre后play框架监听的web端口
port=8080
# Database configuration
# 数据库主机,用户名密码库名
db_url=localhost
db_name=drelephant
db_user="root"
db_password=

其他默认即可,不需更改


然后是GeneralConf.xml

<configuration>
  <property>
    <name>drelephant.analysis.thread.count</name>
    <value>3</value>
    <description>Number of threads to analyze the completed jobs</description>
  </property>
  <property>
    <name>drelephant.analysis.fetch.interval</name>
    <value>60000</value>
    <description>Interval between fetches in milliseconds</description>
  </property>
  <property>
    <name>drelephant.analysis.retry.interval</name>
    <value>60000</value>
    <description>Interval between retries in milliseconds</description>
  </property>
  <property>
    <name>drelephant.application.search.match.partial</name>
    <value>true</value>
    <description>If this property is "false", search will only make exact matches</description>
  </property>
</configuration>

修改drelephant.analysis.thread.count,默认是3,建议修改到10,3的话从jobhistoryserver读取的速度太慢,高于10的话又读取的太快,会对jobhistoryserver造成很大压力。下面两个一个是读取的时间周期,一个是重试读取的间隔时间周期。


然后到bin下执行start.sh启动。And then, show smile to the yellow elephant。


装完看了一下这个东西,其实本身原理并不复杂,就是读取各种jmx,metrics,日志信息,自己写一个也不是没有可能。功能主要是把作业信息里的内容汇总放到一屏里面显示,省的在JHS的页面里一个一个点了。


技术分享


技术分享


That‘s it, so easy


本文出自 “实践检验真理” 博客,请务必保留此出处http://slaytanic.blog.51cto.com/2057708/1889037

以上是关于Hadoop监控分析工具Dr.Elephant的主要内容,如果未能解决你的问题,请参考以下文章

部署Ganglia监控Hadoop&Hbase

20145235李涛《网络对抗技术》- 恶意代码分析

Exp4 恶意代码分析

数据分析工具篇——spark计算原理

20145239杜文超《网络对抗技术》- 恶意代码分析

Java虚拟机详解------虚拟机监控和分析工具——可视化