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的状态确实有问题。比如,可能忘记了创建使用到的数据库,可能数据库连接突然中断等等。需要我们详细的验证数据库的问题。

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

时间: 2024-10-05 11:55:00

Dr.Elephant启动过程问题汇总的相关文章

Dr.Elephant 部署启动详细流程

最近尝试在测试环境安装部署了Dr.Elephant,花了不少时间,碰到一些问题.借助于官方文档和LinedIn akshayrai大神的帮助,最终成功启动Dr.Elephant.鉴于国内还没有类似的文章详细介绍Dr.Elephant的部署启动的实践,现将自己的一些经验分享给大家,欢迎一起讨论. 我的首次安装是在分布式Hadoop集群上完成的,没有尝试本地安装Dr.Elephant,所以下面的安装步骤和经验也都是针对集群部署启动而言的.首先,我会对文档中要求的准备工作已经部署启动过程进行一个汇总,

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

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

Spring Boot启动过程及回调接口汇总

Spring Boot启动过程及回调接口汇总 链接: https://www.itcodemonkey.com/article/1431.html 来自:chanjarster (Daniel Qian) 注:本文基于spring-boot 1.4.1.RELEASE, spring 4.3.3.RELEASE撰写. 启动顺序 Spring boot的启动代码一般是这样的: 1 2 3 4 5 6 @SpringBootApplication public class SampleApplica

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启发式算法指南 - 【Dr.Elephant系列文章-5】

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

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

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

tomcat启动过程报the JDBC Driver has been forcibly unregistered问题的修复过程

最近两天在整理关于flume的总结文档,没有启动过tomcat.昨天晚上部署启动,发现报了如题的错误,全文如下: 严重: The web application [/oa-deploy] registered the JBDC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a mem

<Dr.Elephant>

Why Dr.Elephant? Most of Hadoop optimization tools out there, but they are focused on simplifying the deploy and managment of Hadoop clusters. Very few tools are designed to help Hadoop users optimize their flows. Dr.Elephant supports Hadoop with a v

Linux启动过程笔记

Linux启动过程 1.启动流程(BIOS->MBR:Boot Code->引导GRUB->加载内核->执行init->runlevel) 2./boot/grub/下有多个文件   其中stage1为MBR镜像(512字节) stage2为引导程序 3./boot/grub/grub.conf为引导的配置文件 default=0#默认加载下边哪个系统 timeout=3#引导等待时间 splashimage=(hd0,1)/boot/grub/splash.xpm.gz#引