我们已将基础设施从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配置,发现这些类包含在oozie share / lib上传到HDFS到/user/${user.name}/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>
但没有区别。我不确定我在安装说明here
中缺少什么任何暗示都会受到赞赏。
THX
更新: 发现有一个在oozie 4.1.0上安装sharelibs的新程序,它允许升级lib而无需重新启动服务器或等待所有正在运行的作业完成。可以找到说明here。但是我仍然面临以下问题,因为命令仍然返回null:
[oozie@virtual oozie]$ oozie admin -shareliblist
null
答案 0 :(得分:0)
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!
答案 1 :(得分:0)
你是否检查了节点,如果类在可用的位置是否可用,因为如果找不到类的异常将会到来,只有当受尊重的类不可用时,或者有一些重复的Jar正在被重新通过Oozie在同一时间。
您可以使用Oozie用户在Mention Location中手动更新Unzip Oozie共享库文件夹,这些文件将有效。
你还需要通过游行电话 oozie.use.system.libpath = true ,每次Oozie Stars时,这些都会告知Oozie从DFS共享位置读取相同内容。