2017-10-22 45 views
0

我的主火花项目对其他utils的依赖jars.So集组合的可能是这样的:加载依赖瓶(不同的版本不同的动作/职位相同罐子)与Oozie的火花行动

1. main_spark-1.0.jar will work with utils_spark-1.0.jar (some jobs use this set) 
2. main_spark-2.0.jar will work with utils_spark-2.0.jar (and some of the jobs use this set) 

的计算策略这为我工作,以处理这种情况下是通过与火花选择瓶当

oozie spark action job1 
<jar>main_spark-1.0.jar</jar> 
<spark-opt>--jars utils_spark-1.0.jar</spark-opt> 

oozie spark action job2 
<jar>main_spark-2.0.jar</jar> 
<spark-opt>--jars utils_spark-2.0.jar</spark-opt> 
我测试了两种不同的动作此配置和它的作品

。 我的问题是

  1. 它是如何不同,然后加载罐子在应用程序li​​b路径(oozie)?
  2. 如果两个作业/动作在相同的纱线群上并行运行,那么是否存在类加载器问题(同一个jar的多个版本)?

在我的理解中,这两个应用程序将运行在他们的spark上下文中,所以它应该没问题,但任何专家的建议?

+0

我建议将问题分解为两个,因为它会更容易回答。 –

+0

AFAIK Oozie通过标准的YARN机制发布JAR,以便它们在默认的CLASSPATH中定义。鉴于Spark通过执行程序启动序列中的Driver的自定义下载来发送JAR;它们被添加到自定义的Spark类加载器中。这导致不同种类的CLASSPATH预先问题... –

回答

1

如果这两个作业/动作在相同的纱线群上并行运行,那么是否有类加载器问题(同一个jar的多个版本)的可能性?

没有(或者至少它没有预料到,如果发生的话,我会认为它是一个错误)。

将一个Spark应用程序提交给YARN集群总是作为一个单独的驱动程序和执行程序集合结束,它们一起组成与其他Spark应用程序分离的环境。

相关问题