mapreduce程序中用户jar应用的java优先级

e5nszbig  于 2021-05-31  发布在  Hadoop
关注(0)|答案(0)|浏览(156)

我编写了一个map reduce程序,其中包含外部jar文件。e、 最新版本的g jackson databind,jackson annotations,jackson core,avro,common lang等。构建一个fat(uber)jar,将所有依赖项打包到一个jar中。这是为了避免与hadoop类路径中的jar冲突。如果我尝试用最新版本运行map reduce程序,但它没有选择jar文件的版本。我将上面的jar放在一个文件夹中,并在yarn-site.xml中更改了类路径条目的前缀
修改的yarn-site.xml

<property>
   <name>mapreduce.application.classpath</name>
   <value>/opt/myjars/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
<property>

我可以看到下面用于覆盖默认hadoopjar的属性。

mapreduce.task.classpath.user.precedence
mapreduce.task.classpath.first
mapreduce.job.user.classpath.first

如果外部jar中有主版本升级或向后兼容中断,上述一个可能会导致问题?
建议采用哪种方法(通过使用属性覆盖默认jar,或者通过放置所有jar并在类路径中引用来创建文件夹)?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题