oozie 4.1.0 louncher失败,找不到oozielauncherinputformat$emptysplit

46scxncf  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(325)

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

b0zn9rqh1#

你检查过节点了吗?如果类在受尊重的位置上是否可用,因为如果类找不到异常就会出现,只有当受尊重的类不可用,或者有一些重复的jar被oozie同时读取。
您可以手动更新解压oozie共享lib文件夹中提到的位置与oozie用户,这些将工作。
您还需要传递参数call oozie.use.system.libpath=true,每次oozie启动时,这些参数都会通知oozie从dfs共享位置读取相同的内容。

eulz3vhy

eulz3vhy2#

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>

hdp2.2就是这样,显然是单独提供的外部配置文件的一个bug。默认启用sharelibservice!

相关问题