Hadoop应用引用第三方jar的几种方式

Hadoop应用引用第三方jar的几种方式,第1张

1、把引用的jar包放到项目的libs文件夹

2、展开libs下jar包的的右键菜单, build path -- add to build path

这样,在生成项目的时候就会自动引用libs下的jar包

方案1:把所有的第三方jar和自己的class打成一个大的jar包,这种方案显然笨拙,而且更新升级比较繁琐。方案2:在你的project里面建立一个lib文件夹,然后把所有的第三方jar包放到里面去,Hadoop会自动加载lib依赖里面的jar。注意最后一段:

主要有4个方式:

1、把引用的所有的第三方jar包打到一个jar包内,形成一个超大包。

优点:简单,执行相对比较简单

缺点:一些版本升级较为麻烦,需要重新升级包

例如在maven可以添加以下配置项:

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-shade-plugin</artifactId>

<version>2.4.2</version>

<configuration>

<shadedArtifactAttached>false</shadedArtifactAttached>

<outputFile>${project.build.directory}/shaded/examples-${project.version}-shaded.jar</outputFile>

</configuration>

<executions>

<execution>

<phase>package</phase>

<goals>

<goal>shade</goal>

</goals>

</execution>

</executions>

</plugin>

2、把引用到所有第三方包放到Hadoop的lib目录下

优点:执行运行即可。

缺点:需要重新启动集群,不容易维护

不推荐

3、把引用到所有第三方包放到集群中固定的一台机器上,使用libjars命令加载第三方jar

优点:只需要维护hadoop集群中的一台机器上的lib库,易于系统的维护;

缺点:只能在存放jar的机器上去执行hadoop jar 命令执行程序,且执行命令较复杂;

个人对这种方式还可以接受,不过并不是我最喜欢的方式。

在这里,我进行了测试,WordCount的代码不变,打成WordCount_libjarscmd.jar,注意在打包的过程中不要选择lib中的jar文件,然后把OperateHDFS.jar放到集群中的一台机器上面,执行的命令如下所示:

hadoop jar WordCount_libjarscmd.jar com.hadoop.examples.WordCount -libjars OperateHDFS.jar input libjarscmdoutput

4、把jar包放在HDFS或者OSS上,动态加载第三方jar包

优点:程序可以方便的在集群上的任何一个节点运行,且执行命令的机器没有限制;

执行命令:

jar ossref://yourBucket/yourPath/wordcoun


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11390101.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存