无法在 Yarn 集群模式下运行 Talend 作业

时间:2021-02-25 09:09:36

标签: apache-spark talend

我使用的是带有 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 部署模式不同。从 Linux 边缘节点执行时,具有“客户端”模式的作业工作正常,但来自同一父作业的“集群”模式未运行。

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

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

请提出建议。

1 个答案:

答案 0 :(得分:0)

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

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