ZARpelin上的Scalding在YARN

时间:2016-12-16 20:10:33

标签: yarn classnotfoundexception apache-zeppelin scalding

我在使用YARN时试图让Scalding在Zeppelin上工作。我按照文档here中的步骤构建解释器并设置类路径覆盖。当我在本地模式下运行时,代码正确执行。但是,当我通过YARN在我的集群上运行时,我的作业失败了:

Error: java.lang.ClassNotFoundException: cascading.CascadingException

Error: java.lang.ClassNotFoundException: cascading.tuple.TupleException

对我来说更奇怪的是我可以进入Zeppelin并执行:

import cascading.tuple.TupleException
import cascading.CascadingException

两者似乎都没有问题找到这些课程。只有当我尝试实际使用scalding(在YARN上)时,比如将数据加载到类型化的管道中并转储我得到的ClassNotFoundException。有关如何调试或修复内容的任何想法?

1 个答案:

答案 0 :(得分:1)

看起来级联jar不会分发到YARN群集。请将“zeppelin / interpreter / scalding / *”添加到scalding解释器的args.string属性中。

这是我们使用的args.string:

-libjars / home / zeppelin-user / zeppelin / interpreter / scalding / ,/ home / zeppelin-user / deploy-bundle-201608111417 / libs / -Dscalding.reducer.estimator.classes = com.twitter.scalding.reducer_estimation.InputSizeReducerEstimator -Delephantbird.use.combine.input.format = true -Delephantbird.combine.split.size = 134217728 --hdfs --repl

tmpjars包含分发到YARN群集的jar。您可以使用以下命令查看其内容:

%scalding 
mode.asInstanceOf[Hdfs].conf.get("tmpjars").split(",").foreach(println)