我使用的是带有mapr6.0发行版和sprak2.2的tos7.1。
流程:主作业->bigdata spark作业1[Yarn模式:客户端]主作业->bigdata spark作业2[Yarn模式:集群]
job1和job2都是相同的,只是部署模式不同。当从linux边缘节点执行时,具有“client”模式的作业工作正常,但是来自同一父作业的“cluster”模式没有运行。
下面是来自集群模式的应用程序日志的错误:线程“main”java.lang.noclassdeffounderror中的异常:routines/system/api/talendjob。
从error&other的联机帮助来看,很明显有些库在构建期间没有被导出。但是,如果是这样的话,作业就不应该以“客户机”模式运行。
请建议。
1条答案
按热度按时间siotufzp1#
talend在../lib/目录中创建routines.jar。这个routines.jar为调用spark驱动程序所需的接口提供了强制定义,spark驱动程序上下文无法从调用talend的边缘节点找到这个jar。
简单的解决方案是将这个jar作为额外的必需jar传递,如果需要,还可以传递其他jar。我已经将这个jar与其他所需的hive/zookeeper所需jar捆绑在一起,并转移到hdfs。这个hdfs路径是作为Yarn存档jar的额外spark属性提供的。