暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kylin tool Bug

data之道 2017-08-14
279

一、背景

之前有篇文章介绍过kylin,Kylin快速入门及深入理,感兴趣的可以看下。我们线上kylin突然有天服务器磁盘告警,每天的日志文件40多个G,一直输出"....Failed to fetch http response ....."这样的消息,具体日志输出类“org.apache.kylin.tool.JobTaskCounterExtractor”,考虑到最近在WEB UI上下载过日志,初步认定该操作触发了kylin bug

二、重现

    既然推测是bug,那首先要重现这个bug,才能进一步定位问题,重现也很简单:

    1、重启kylin,重启后kylin.log没有输出任何异常信息

    2、WEB UI上点击下载诊断日志,看到kylin.log一直在输之前的那种消息

    通过这两步已能肯定了之前的推测

三、问题定位

    1、查看下载日志的后台进程

   下载诊断日志的操作其实是在后台执行diag.sh脚本,脚本内执行JobDiagnosisInfoCLI类,用于生成日志文件。已经知道了具体的类,下一步就是看类的实现,定位问题

    2、下载并导入kylin 1.5.4版本的源码,分析JobDiagnosisInfoCLI类的调用情况,最终定位到JobTaskCounterExtractor.getHttpResponse方法

    3、可以清晰看到问题产生的两个原因:

        1、生成的JobHistory URL不正确:http://${yarnUrl}/ws/v1/history/mapreduce/jobs,这个地址是不存在的

        2、在where循环中通过HTTP请求JobHistory,只要访问失败(不管是错误的URL还是Job log已经删除),都会再次请求,这样就一直打印异常信息

四、Bug修复

    对以上两个原因都要修复 :

    1、修改获取JobHistory URL的代码,改成正确的地址

    2、修复HTTP请求逻辑,如果url请求失败,重试多次后就放弃


    3、打包kylin tool项目,编译后的jar包放到$KYLIN_HOME/tool

    4、相对不是很成熟的项目,很容易出现bug,出现后要一步一步定位、解决

文章转载自data之道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论