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

oozie 4.1.0 louncher fail with OozieLauncherInputFormat$EmptySplit not found

我们已将基础设施从 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.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-[=35发现这个类包含在上传到HDFS的oozieshare/lib到/user/${user.name}/share/lib =]配置:

<property>
  <name>oozie.service.WorkflowAppService.system.libpath</name>
  <value>/user/${user.name}/share/lib</value>
</property>

其中 ${user.name} 是 oozie 服务器所在的用户 运行 例如奥齐。出于某种原因,这些库不会传播到 mapreduce.application.classpath,因此不会传播到 ClassNotFoundException。

试图将以下 属性 更改为 true:

   <property>
    <name>use.system.libpath.for.mapreduce.and.pig.jobs</name>
    <value>true</value>
  </property>

但没有区别。我不确定安装说明中缺少什么 here

如有任何提示,我们将不胜感激。

感谢

更新: 发现有一个在 oozie 4.1.0 上安装 sharelibs 的新程序,它允许升级库而无需重新启动服务器或等待所有 运行 作业完成。可以找到描述 here。但是我仍然面临以下问题,因为命令仍然 returns null:

[oozie@virtual oozie]$ oozie admin -shareliblist
null

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 !

您是否检查过节点 class 在受尊重的位置是否可用,因为如果 class 未找到异常就会出现,只有当受尊重的 class 是不可用,或者 Oozie 同时正在读取一些重复的 Jar。

您可以在 Mention Location with Oozie User 中手动更新 Unzip Oozie 共享库文件夹,这些都可以。

你还需要传递参数调用 oozie.use.system.libpath = true ,这些将通知 Oozie 每次从 DFS 共享位置读取相同内容,每当 Oozie Stars.