0

我正在运行将 DistributedCache 用于依赖 jar 的 Cascading(实际上是 Scalding)hadoop 作业。

第一次它工作正常(意味着类路径设置正确)但随后它开始失败并出现 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)
    ...

有没有其他人在分布式缓存中使用级联和罐子取得成功

此消息似乎暗示 Cascading 对分布式缓存 jar 进行了一些内部处理。你能对此有所了解吗?

编辑:我在 Hadoop 1.0.3 上使用 Cascading 2.1.6

4

2 回答 2

0

Cascading 的作者Chris K Wensel在邮件列表中回复说 Cascading 对 DistributedCache 没有任何作用。

我进一步查看,这是我的代码中的一个问题——我没有正确地将这些文件添加到 DistributedCache。

于 2013-07-26T13:50:59.260 回答
0

你用的是哪个版本的hadoop?0.20.2 中的分布式缓存存在一些问题。你可以尝试切换到较新的版本吗?

于 2013-07-25T16:36:16.993 回答