dr-elephant安装

本文采用dr.elephant-2.1.7版本介绍编译和安装流程

编译

  • 下载源代码并解压
    wget https://github.com/linkedin/dr-elephant/archive/v2.1.7.tar.gz
  • 下载activator并解压

    1
    2
    3
    4
    wget https://downloads.typesafe.com/typesafe-activator/1.3.12/typesafe-activator-1.3.12.zip
    # 解压后将activator的bin加入PATH
    export ACTIVATOR_HOME=/data/dr-elephant/activator-dist-1.3.12
    export PATH=$PATH:$ACTIVATOR_HOME/bin
  • 安装npm和bower

    1
    2
    yum install npm
    npm install -g bower
  • 用bower安装dr-elephant的web
    cd dr-elephant-2.1.7/web; bower install --allow-root; cd ..

  • 打开自动优化特性
    vi conf/AutoTuningConf.xml
    将autotuning.enabled配置为true
  • 安装python环境,需要2.6及以上,并通过pip安装inspired
    pip install inspyred
  • 安装mysql
    dr-elephant数据存储在mysql中,建议安装5.7+版本的mysql
  • 编译
    当前版2.1.7的sbt文件有个bug,版本是2.0.13的,需要在编译前搞成2.1.7

    1
    2
    vi dr-elephant-2.1.7/build.sbt
    ./compile.sh compile.conf
  • 获取编译后的安装包
    mv dist/dr-elephant-2.1.7.zip

自定义编译

由于当前版本的Dr.elephant默认的JDK是1.6,spark是1.4,和集群不能够完美兼容,需要修改相关依赖的版本。
修改sbt依赖配置,JDK版本在build.sbt,spark依赖在project/Dependencies,修改spark版本和jackson的版本。
需要注意的是,修改完spark版本后,会出现部分代码报错的情况,这个根据接口修改即可,没有太大问题。

安装

  • 配置环境变量
    配置hadoop和spark的环境

    1
    2
    3
    4
    export HADOOP_HOME=/usr/hdp/2.6.3.0-235/hadoop/
    export HADOOP_CONF_DIR=/etc/hadoop/2.6.3.0-235/0/
    export SPARK_HOME=/usr/hdp/2.6.3.0-235/spark/
    export SPARK_CONF_DIR=/etc/spark2/2.6.3.0-235/0/
  • 配置mysql
    vi app-conf/elephant.conf

    1
    2
    3
    4
    5
    # Database configuration
    db_url=localhost
    db_name=drelephant
    db_user=root
    db_password=""

    注意,需要手动去mysql中创建一个drelephant数据库

  • 配置
    第一次启动时,jvm相关参数为下面的.evolutionplugin=enabled 会自动创建数据库表和索引
    jvm_args="-Devolutionplugin=enabled -DapplyEvolutions.default=true -mem 1024 -J-Xloggc:$project_root../logs/elephant/dr-gc.date +’%Y%m%d%H%M’-J-XX:+PrintGCDetails"
    第二次启动,需要修改evolutionplugin=disabled, -DapplyEvolutions.default=false,否则数据库会被重置,丢失数据。
  • 启动dr-elephant
    ./bin/start.sh app-conf/
    启动日志在dr.log

问题记录

在启动的时候出现问题不能调用tez问题
可以通过配置先关闭对tez任务的抓取,打开抓数据的配置文件,注释掉tez的应用

1
2
3
4
5
vi app-conf/FetcherConf.xml
<fetcher>
<applicationtype>tez</applicationtype>
<classname>com.linkedin.drelephant.tez.fetchers.TezFetcher</classname>
</fetcher>

参考

dr-elephant官方安装资料

ulysses wechat
订阅+