作者:余枫
1
问题现象
升级CDH6.1至CDH6.2的过程中,当升级过程执行到安装Oozie共享库时,在成功创建Oozie ShareLib根目录之后上载Oozei共享库的过程中报错了,报错信息如下:
代码语言:javascript复制异常提示:“java.lang.ClassNotFoundException:org.cloudera.log4j.redactor.RedactorAppender”找不到类。
2
问题分析
异常日志信息显示” org.cloudera.log4j.redactor.RedactorAppender”类找不到,通过安装Oozie共享库脚本“/opt/cloudera/cm-agent/service/oozie/oozie.sh”找到,安装Oozie共享库是启动了一个Java进程操作的,代码片段如下:
那启动Java进程则需要加载一些java依赖包,通过如下脚本片段可以找到:
主要加载了${OOZIE_HOME}下的libtools和libext两个目录下的依赖包。
由于上述异常抛出找不到类,那可能是由于缺少jar包导致,通过对比${OOZIE_HOME}下的lib和libtools目录下的*log*.jar相关的jar包时,发现
在${OOZIE_HOME}/libtools目录下查看包含log的jar包
在${OOZIE_HOME}/lib,同样是存放的jar包的目录下查看包含log的jar包
通过对上述两个目录下列出log相关jar包对比发现,lib目录下比libtools目录下多了logredactor-2.0.7.jar这个jar包,通过查看该jar包发现,里面有报错时缺少的那个类RedactorAppender
3
问题解决
经过上述问题分析后,在${OOZIE_HOME}/libtools创建logredactor-2.0.7.jar包的软连
代码语言:javascript复制cd /opt/cloudera/parcels/CDH/lib/oozie/libtools
ln -s logredactor-2.0.7.jar ../../../jars/logredactor-2.0.7.jar
再去重新执行安装oozie共享库命令,命令成功执行,问题解决
4
总结
1.通过分析安装Oozie共享库脚本,找到安装Oozie共享库的最终方式
2.定位出使用java进程进行Oozie共享库的安装,与找不到类异常结合最终定位出缺少jar包导致