oozie 4.1.0 louncher失败,OozieLauncherInputFormat $ EmptySplit未找到

时间:2015-02-04 14:59:34

标签: hadoop oozie hortonworks-data-platform

我们已将基础设施从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

2 个答案:

答案 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共享位置读取相同内容。