2013-07-25 23 views
0

我正在運行Cascading(實際上是Scalding)將分佈式緩存用於依賴瓶子的hadoop作業。級聯+ libjars = ClassNotFoundException。有時

它工作正常

拳時(意味着類路徑設置正確),但隨後開始與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

This message似乎意味着Cascading具有分佈式緩存罐的一些內部處理。你可以擺脫這種光?

編輯:我使用的級聯在Hadoop 1.0.3

回答

0

您正在使用哪個的Hadoop版本2.1.6? 0.20.2中的分佈式緩存存在一些問題。你可以嘗試切換到更新的版本?

+0

剛剛編輯:在Hadoop 1.0.3上級聯2.1.6 –

0

Chris K Wensel,郵件列表上的Cascading responded的作者表示Cascading不會對DistributedCache做任何事情。

我看得更遠,這是我的代碼中的問題 - 我沒有正確地將這些文件添加到DistributedCache。