cascading+libjars=classnotfoundexception有时

kh212irz  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(306)

我正在运行层叠(实际上是滚烫的)hadoop作业,它将distributedcache用于依赖jar。
第一次它运行良好(意味着类路径设置正确),但随后它开始失败,并出现classnotfoundexception:

java.io.IOException: Split class cascading.tap.hadoop.io.MultiInputSplit not found
    at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:387)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:412)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at  org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
    at org.apache.hadoop.mapred.Child.main(Child.java:249)
Caused by: java.lang.ClassNotFoundException: cascading.tap.hadoop.io.MultiInputSplit
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:820)
    at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:385)
    ...

其他人在distributedcache中使用级联和jar成功了吗
此消息似乎暗示级联对分布式缓存jar有一些内部处理。你能解释一下吗?
编辑:我正在Hadoop1.0.3上使用级联2.1.6

ej83mcc0

ej83mcc01#

《层叠》的作者chrisk wensel在邮件列表中回应说,层叠对distributedcache没有任何作用。
我进一步看了看,代码中出现了一个问题——我没有正确地将这些文件添加到distributedcache中。

s3fp2yjn

s3fp2yjn2#

您使用的是哪个版本的hadoop?0.20.2中的分布式缓存存在一些问题。你能试着换个新版本吗?

相关问题