0

我正在使用带有 MapR 6.0 发行版和 sprak2.2 的 TOS 7.1。

流程:Master job -> BigData Spark job1 [yarn mode: client] Master job -> BigData spark job2 [yarn mode: cluster]

job1 & job2 都是一样的,只是 yarn deploy 模式不同。从 Linux 边缘节点执行时,具有“客户端”模式的作业工作正常,但来自同一父作业的“集群”模式未运行。

以下是集群模式的纱线应用程序日志中的错误:线程“主”java.lang.NoClassDefFoundError 中的异常:routines/system/api/TalendJob。

从错误和其他在线帮助来看,很明显一些库在构建过程中没有被导出。但是,如果是这样的话,作业甚至不应该在“客户端”模式下运行。

请建议。

4

1 回答 1

0

Talend 在 ../lib/ 目录中创建一个routines.jar。这个routines.jar 为调用spark driver 程序所需的接口提供了强制定义,并且spark driver context 无法从调用Talend 的Edge 节点中找到这个jar。

简单的解决方案是将此 jar 作为额外所需的纱线存档 jar 以及其他任何需要的东西传递。我已将此 jar 与其他所需的 hive/zookeeper 所需的 jar 捆绑在一起,并移至 hdfs。并且此 hdfs 路径作为 Yarn Archive jar 的附加 spark 属性提供。

于 2021-03-05T12:00:38.167 回答