我们已经将基础设施从hdp 2.0升级到hdp 2.2,这意味着从hadoop 2.2.0升级到2.6.0,oozie从4.0.0升级到4.1.0。我们使用简单的身份验证等。当作业提交时,oozie启动器失败,出现以下情况:
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配置,发现这些类包含在上传到/user/${user.name}/share/lib的HDFS的oozie-share/lib中:
<property>
<name>oozie.service.WorkflowAppService.system.libpath</name>
<value>/user/${user.name}/share/lib</value>
</property>
其中${user.name}是运行oozie服务器的用户,例如oozie。由于某些原因,这些库不会传播到mapreduce.application.classpath,因此也不会传播到ClassNotFoundException。
尝试将以下属性更改为true:
<property>
<name>use.system.libpath.for.mapreduce.and.pig.jobs</name>
<value>true</value>
</property>
但没有区别。我不确定我在的安装说明中遗漏了什么
任何提示都将不胜感激。
Thx
更新:发现有一个在oozie 4.1.0上安装共享库的新过程,它允许在不重新启动服务器或等待所有运行作业完成的情况下升级库。描述可以在这里找到。然而,我仍然面临以下问题,因为命令仍然返回null:
[oozie@virtual oozie]$ oozie admin -shareliblist
null
您是否检查了节点,如果该类在相关位置是否可用,因为如果找不到该类,则会出现异常,只有当相关类不可用,或者Oozie正在同时读取一些重复的Jar时。
您可以手动更新Oozie用户提及位置中的Unzip Oozie共享库文件夹,这些都会起作用。
此外,您需要通过参数调用oozie.use.system.libpath=true,它们将通知oozie每次、无论何时从DFS共享位置读取相同的内容。
Hortonworks Hadoop配套文件包含oozie-site.xml属性oozie.services,但缺少启用ShareLibService的条目。这导致新的共享库功能无法工作,因为端点没有注册。若要修复此问题,请将org.apache.oozie.service.ShareLibService条目添加到oozie.services列表中。小心,因为服务不是独立的,所以订单很重要!
<property>
<name>oozie.services</name>
<value>
...
org.apache.oozie.service.JobsCncurrencyService,
org.apache.oozie.service.ShareLibService
</property>
HDP 2.2就是这种情况,显然是单独提供的外部配置文件的缺陷。默认情况下已启用ShareLibService!