我们已经将基础设施从hdp2.0升级到hdp2.2,这意味着从hadoop2.2.0升级到2.6.0,oozie从4.0.0升级到4.1.0。我们使用的是简单的身份验证等。当提交作业时,oozie launcher失败,原因如下:
2015-02-04 09:56:33,364 WARN [main] org.apache.hadoop.mapred.YarnChild: Exception running child : java.io.IOException: Split class org.apache.oozie.action.hadoop.OozieLauncherInputFormat$EmptySplit not found
at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:363)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:423)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.OozieLauncherInputFormat$EmptySplit not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1982)
at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:361)
... 7 more
2015-02-04 09:56:33,373 INFO [main] org.apache.hadoop.mapred.Task: Runnning cleanup for the task
发现这些类包含在根据oozie-site.xml配置上载到hdfs to/user/${user.name}/share/lib的oozie-share/lib中:
<property>
<name>oozie.service.WorkflowAppService.system.libpath</name>
<value>/user/${user.name}/share/lib</value>
</property>
其中${user.name}是运行oozie服务器的用户,例如oozie。由于某些原因,这些lib不会传播到mapreduce.application.classpath,因此classnotfoundexception。
试图将以下属性更改为true:
<property>
<name>use.system.libpath.for.mapreduce.and.pig.jobs</name>
<value>true</value>
</property>
但没有区别。我不确定我在这里的安装说明中遗漏了什么
任何暗示都将不胜感激。
谢谢
更新:发现在oozie 4.1.0上安装sharelibs有一个新的过程,该过程允许升级libs,而无需重新启动服务器或等待所有正在运行的作业完成。描述可以在这里找到。但是,由于命令仍然返回null,我仍然面临以下问题:
[oozie@virtual oozie]$ oozie admin -shareliblist
null
2条答案
按热度按时间b0zn9rqh1#
你检查过节点了吗?如果类在受尊重的位置上是否可用,因为如果类找不到异常就会出现,只有当受尊重的类不可用,或者有一些重复的jar被oozie同时读取。
您可以手动更新解压oozie共享lib文件夹中提到的位置与oozie用户,这些将工作。
您还需要传递参数call oozie.use.system.libpath=true,每次oozie启动时,这些参数都会通知oozie从dfs共享位置读取相同的内容。
eulz3vhy2#
hortonworks hadoop伴随文件包含oozie-site.xml属性oozie.services,缺少启用sharelibservice的条目。这导致新的共享库功能无法工作,因为端点未注册。要修复此问题,请将org.apache.oozie.service.sharelibservice条目添加到oozie.services列表。小心,因为服务不是独立的,所以订单很重要!
hdp2.2就是这样,显然是单独提供的外部配置文件的一个bug。默认启用sharelibservice!