一、背景
之前有篇文章介绍过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,出现后要一步一步定位、解决




