Hadoop MapReduce程序使用第三方jar的解决方案

开发MR程序时,常常须要使用第三方jar包,如何让MR程序正确找到第三方jar包就是一个重要的问题。ide

通常经常使用的解决方法有以下几个oop

  • 把第三方包放至集群全部节点上

把第三方jar包预先放置到集群中,能够减少MR程序包的大小,比较经常使用。通常是放到hadoop各个server的JRE lib目录下,或者把包路径添加至CLASSPATH环境变量,或者MR运行时使用 -libjars参数把jar包包含进来。因为没有一一进行测试,这些方法不敢确认都是能够的,或者不一样条件下才能够。可是每次添加jar都要在全部集群节点上添加,太麻烦。测试

  • 使用Maven打包,把全部包打到一块儿

当前咱们使用的是Maven打包,把全部第三方包和MR程序打包在一块儿。因为项目包含了全部MR,引用的包也不少,致使打出来的包有50M,太大了,其实每一个MR须要的只是其中一部分包。idea

  • 轻量打包,只打当前MR须要的jar包

后来发现hadoop 可能自动引用lib文件夹下面的jar包,这样,针对单个MR程序,能够建立一个lib文件夹,把须要的jar包放至其中,并在打包时把lib目录打进mr包中便可。idea中不须要在项目中建立,只在打包配置中配置便可,以下:server

相关文章
相关标签/搜索