分享

求助如何在mapreduce过程中加载外部第三方jar包?

wei865082101 发表于 2015-6-15 10:56:26 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 40667
我把mapreduce分开打包,map是一个单独的包,然后其他的在另一个jar包里,这样以后更换map程序可以不修改其他部分,但是我发现mapduce过程中总是加载不上第三方外部jar,几乎我能想得都试了,都不行,求助高手来解答!!

不要说放在hadoop配置的classpath里边,第一貌似得重启集群,第二我如果节点多这样更新jar不得累死。
然后命令行参数 -libjars  这个加载jar包后不能再当前的job中直接使用,所以也是无效。
求大神解决! 或者能找到源码里job如何加载jar的方法!!

已有(4)人评论

跳转到指定楼层
tntzbzc 发表于 2015-6-15 11:50:42
还是从原理入手。
Java运行,如果需要第三方jar包
在提交job的时候,运行job,这时候需要分发代码,也就是可能每个客户端都需要这个代码。
但是客户端没有jar包,是运行不了的。
所以要么楼主制作成 webservice或则远程调用rpc.
否则累死也需要把jar都放到每个环境中
回复

使用道具 举报

wei865082101 发表于 2015-6-16 09:55:50
回复

使用道具 举报

evababy 发表于 2015-6-16 18:05:45
第三方依赖弱的JAR我是直接用MAVEN打到JAR里面的,跟程序一起走。
回复

使用道具 举报

wei865082101 发表于 2015-6-17 09:40:44
evababy 发表于 2015-6-16 18:05
第三方依赖弱的JAR我是直接用MAVEN打到JAR里面的,跟程序一起走。

已解决,分布式缓存的方法:DistributedCache.addArchiveToClassPath(new Path(path + "#" + symlink), conf);

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条