Dr.Elephant启动过程问题汇总

在首次启动Dr.Elephant时,因为配置不当或者环境因素可能会导致启动失败。当启动失败后,我们可以从Dr.Elephant的日志文件(默认的启动日志是dr.log)中查看启动过程日志,找到Error和Exception,定位问题所在。

下面,是我总结的自己以及大家在启动过程中遇到的一些问题,如果大家也遇到了这些问题,希望可以帮助到你们。

问题一

问题描述

日志中记录ERROR:“Specified key was too long; max key length is 767 bytes [ERROR:1071, SQLSTATE:42000]”, “Database 'default' is in an inconsistent state!”

解决办法

以上两个提示如果都出现,那么原因是:在Dr.Elephant往MySQL的表中创索引时,索引过长导致的,关于这个问题的详细描述,可以查看我的另一篇文章“MySQL索引长度受限怎么办?”。这个问题在Dr.Elephant刚开源时出现的,以后的版本中可能会修复这个问题。问题的原因是:Dr.Elephant的建表语句有一些问题,例如在Dr.Elephant源码文件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);
列flow_exec_id、job_def_id和flow_def_id的类型是VARCHAR(800),在这三个列上各自建索引是,索引长度都是3*800=2400,远超过了MySQL对单列索引长度的限制767,所以抛出异常导致启动失败。大家可以查看https://github.com/linkedin/dr-elephant/issues/31 中我和LinkedIn大神akshayrai关于这个问题的沟通,可以了解的更详细一些以及解决办法。具体解决办法是将上面的三个SQL语句修改为:

create index yarn_app_result_i4 on yarn_app_result (flow_exec_id(100));
create index yarn_app_result_i5 on yarn_app_result (job_def_id(100));
create index yarn_app_result_i6 on yarn_app_result (flow_def_id(100));
限制每个索引的长度。就不会再抛出异常了。

还有一点需要注意,如果没有提示“Specified key was too long; max key length is 767 bytes [ERROR:1071, SQLSTATE:42000]”, 而只有“Database 'default' is in an inconsistent state!”。这个时候,很可能是DB的状态确实有问题。比如,可能忘记了创建使用到的数据库,可能数据库连接突然中断等等。需要我们详细的验证数据库的问题。

问题二

问题描述

Dr.Elephant启动正常,但是无法收集到任务数据。具体表现为,hadoop平台已经运行过很多任务,Dr.Elephant正常启动后,通过浏览器访问host+port可以打开Dr.Elephant UI页面,但是没有任何任务信息。数据库中表也是空的。

解决办法

  1. 确保编译配置文件compile.conf中Hadoop平台版本号和工作中的Hadoop版本号一致
  2. 确保Hadoop平台的配置文件目录、内容无误
润林遇到了这个问题,经过排查,发现原因是集群上有两个版本的Hadoop,使用了错误的Hadoop版本和配置文件导致的这个问题。


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值