Dr.Elephant 部署启动详细流程

最近尝试在测试环境安装部署了Dr.Elephant,花了不少时间,碰到一些问题。借助于官方文档和LinedIn akshayrai大神的帮助,最终成功启动Dr.Elephant。鉴于国内还没有类似的文章详细介绍Dr.Elephant的部署启动的实践,现将自己的一些经验分享给大家,欢迎一起讨论。

我的首次安装是在分布式Hadoop集群上完成的,没有尝试本地安装Dr.Elephant,所以下面的安装步骤和经验也都是针对集群部署启动而言的。首先,我会对文档中要求的准备工作已经部署启动过程进行一个汇总,然后再说关于遇到问题的解决办法。

准备工作

编译代码,生成部署需要的包

1. 本地安装play框架,在环境变量PATH添加play命令路径。play对Java版本要求,版本必须是Java 8以上。

2. 修改源码中编译时用到的配置文件,app-conf/compile.conf,将hadoop_version和spark_version修改成对应的版本。(如果不修改,是否会遇到问题,我没有尝试)。

3. 运行源码中编译命令./compile.sh [./app-conf/compile.conf],请将中括号中路径修改为相应文件的路径。编译过程会下载很多需要用到的jar包和文件,请耐心等待。我前两次编译都因为部分文件下载失败而导致编译失败。如果有问题,继续尝试编译,已经下载过的文件会自动跳过,就不用再次下载了。

4. 编译完成后,会有SUCCESS的提示。这时可以看到在源码文件夹中,多了一个目录dist,进入这个目录可以看到,里面有一个zip包dr-elephant*.zip,解压缩这个zip包,生成一个文件夹dr-elephant*。记住,这个文件夹需要被分发到需要部署Dr.Elephant的机器上,下面会用到它。

5. 源码中的app-conf文件夹也会在后面分发到需要部署Dr.Elephant的机器上

编译生成可执行文件,在本地即可完成。是不需要在本地安装Hadoop平台的。

集群环境要求

1. 确保Yarn资源管理器的正常运行以及历史任务服务的正常运行,对于使用Yarn管理Hadoop平台的集群环境来说,一般这个条件都能满足

2. 部署启动一个MySQL服务,MySQL的版本必须是5.5+。对MySQL没有特殊配置,分配好对这个DB有读写权限的账号即可。在MySQL中创建一个db名称drelephant(这个名称可以是任意的,后面可以看到,和elephant.conf配置文件中db名称一致即可)

3.将准备工作中提到的需要用到的app-conf文件夹也拷贝到需要部署的机器上某个目录,假设这个目录是/a/app-conf/。修改app-conf文件夹中的文件elephant.conf文件,添加

jvm_props=" -Devolutionplugin=enabled -DapplyEvolutions.default=true"

并修改这个文件中的db_url、db_user、db_name和db_password配置参数,改为我们要使用的MySQL的连接参数。

4. 在这个机器上配置环境变量ELEPHANT_CONF_DIR,让这个环境变量指向从源码中拷贝过来的app-conf文件夹。其实这步不是必须的,后面可以看到,如果不设置这个变量ELEPHANT_CONF_DIR,在启动Dr.Elephant时,在命令行参数中第一个参数添加这个本地目录也是可以的。

部署启动

1. 在Hadoop集群中选择一台机器作为Dr.Elephant的部署机器,在这个机器上选择一个有权限访问HDFS的账号,作为Dr.Elephant的启动账号

2. 将前面步骤中提到的编译后生成的dist/dr-elephant*文件拷贝到这个机器上

3.
进入bin目录,执行./start.sh [/a/app-conf]启动。如果没有执行“集群环境要求”中的第4步,这里需要手动输入/a/app-conf这个目录作为命令行参数

4. 启动后,验证是否执行成功。如果命令行输出提示“Dr.Elephant started”并不能证明它已经成功启动。可以按照以下步骤逐步验证:(1)ps
aux | grep elephant,查看是否有这个进程,如果有,那么说明启动成功;(2)查看默认的log,dr.log,在安装包的首层目录下,如果日志中没有明显的异常抛出,说明启动正常;(3)登录用到的MySQL,进入使用的db,查看是否有表play_evolutions、yarn_app_heuristic_result、yarn_app_heuristic_result_details以及yarn_app_result,如果有这些表也说明启动正常;(4)浏览器请求"host:8080"(这个host是部署Dr.Elephant的机器的host),看看是否能看到Dr.Elephant
UI的首页,如果可以,说明启动成功

如果你的安装过程出现什么问题,请首先查看我的这边博客Dr.Elephant常见问题来进行问题排查。

在我的另一篇博客“Dr.Elephant启动问题汇总”中,会总结一些Dr.Elephant在部署启动过程中遇到的一些问题,如果有需要可以点击查看。

欢迎大家一起交流Dr.Elephant相关的问题~

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

时间: 2024-08-29 09:12:24

Dr.Elephant 部署启动详细流程的相关文章

在Mac上关于tomcat服务器的安装、配置、启动、部署web详细流程

之前在Mac上通过安装mamp来搭建PHP环境服务器,但是对于java来说,目前还是没有找到类似mamp这样强大的软件来构建及管理java环境服务器,所以目前也是通过命令行来进行tomcat服务器的安装和启动,简要的总结一下在Mac上进行tomcat服务器安装的步骤. 第一步,给Mac安装jdk环境.   直接百度”jdk for Mac“,找到其中一个版本进行安装就可以了,安装完成后,打开终端,输入“java”或“javac”,如果出现java命令的使用说明,那么说明你的Mac上的jdk环境已

Dr.Elephant启动过程问题汇总

在首次启动Dr.Elephant时,因为配置不当或者环境因素可能会导致启动失败.当启动失败后,我们可以从Dr.Elephant的日志文件(默认的启动日志是dr.log)中查看启动过程日志,找到Error和Exception,定位问题所在. 下面,是我总结的自己以及大家在启动过程中遇到的一些问题,如果大家也遇到了这些问题,希望可以帮助到你们. 问题一 问题描述 日志中记录ERROR:"Specified key was too long; max key length is 767 bytes [

企业内部部署一套完整的DNS详细流程

企业内部部署一套完整的DNS详细流程 ? 1) 环境说明 ? 1. 共需要7台主机,各自的角色如下: A. 192.168.36.6(OS6):test B. 192.168.36.7(OS7):localdns C. 192.168.36.17(OS7):rootdns D. 192.168.36.27(OS7):comdns E. 192.168.36.37(OS7):master F. 192.168.36.47(OS7):slave G. 192.168.36.57(OS7):www 2

Hadoop任务优化建议 - 【Dr.Elephant系列文章-6】

使用Dr.Elephant来分析我们的任务,可以知道有哪些地方可以进行优化. 加速你的任务流程 对于特定的任务,最好有特定的参数配置.对于很多的应用场景来说,默认的任务配置并不能保证每个任务都有最好的性能.尽管对这些任务进行调优会花费一些时间,但是这些调优带来的性能提升是非常可观的. 有几个任务参数需要特别注意:mapper数量,reducer数量,io.*的配置,内存使用设置以及生成的文件数量.对这几个参数进行配置,让参数更适合当前的任务,可以极大的提升任务的执行性能. Apache的官网中H

Dr.Elephant启发式算法指南 - 【Dr.Elephant系列文章-5】

Map-Reduce Mapper数据倾斜 数据进入到Mapper作业中后,有可能会发生数据的倾斜,Mapper数据倾斜启发式算法(mapper data skew heuristic)能够判定这种情况是否存在.启发式算法会将所有的Mapper分成两部分,其中一部分的所有作业(task)的平均数据量会大于另一部分的平均数据量. 例如:第一部分有900个Mapper作业,每个Mapper作业平均数据量为7MB,而另一份包含1200个Mapper作业,且每个Mapper作业的平均数据量是500MB.

Dr.Elephant用户指南 - 【Dr.Elephant系列文章-2】

这篇文章介绍怎么样使用Dr.Elephant来进行任务分析. UI首页 Dr.Elephant启动后,首页如下: 集群统计信息 首页的灰色部分包含了最新的集群信息.这部分列出了最近24小时分析过的任务数量.可以进行优化的任务数量以及亟待优化的任务数量. 最新任务统计 这一部分列出了最近一段时间分析的任务. 搜索页 首页点击"Search"进入搜索页面,在这个页面,我们可以通过不同的搜索项来搜索任务: 任务ID:输入任务的ID,可以搜索一个特定的任务或者任务流.返回任务详情页面. 任务流

15-流程操作(查询和删除部署信息和流程定义信息)

效果如下: 查询部署表 部署对象Deployment也是接口,它的四个方法刚好对应着部署表act_re_deployment的四个字段 查询流程定义列表 假如这个流程图画错了,我不想使用这个流程了,把它删除掉,那就删除部署信息 删除部署信息 流程部署表act_re_deployment里面ID_为1的记录被删除了,并且流程定义表act_re_procdef里面外键DEPLOYMENT_ID_为1的记录也被删除了,因为有外键约束嘛,不可能只删除流程部署表的信息 现在看是没有问题,我来制造一个问题,

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 No

Dr.Elephant Rest API -【Dr.Elephant系列文章-7】

有的情况下,用户可能不能访问Dr.Elephant的UI界面,但是需要和Dr.Elephant进行交互来获得Dr.Elephant的一些分析结果.Dr.Elephant提供了Rest API来满足用户的这个需求. 根据ID获得应用信息 根据任务的ID,可以获得任务的详细信息以及启发式算法的分析结果. URI http://<dr-elephant-host:port>/rest/job 请求参数 parameter description id The app or job id to sea