开发MR程序时,常常须要使用第三方jar包,如何让MR程序正确找到第三方jar包就是一个重要的问题。ide
通常经常使用的解决方法有以下几个oop
把第三方jar包预先放置到集群中,能够减少MR程序包的大小,比较经常使用。通常是放到hadoop各个server的JRE lib目录下,或者把包路径添加至CLASSPATH环境变量,或者MR运行时使用 -libjars参数把jar包包含进来。因为没有一一进行测试,这些方法不敢确认都是能够的,或者不一样条件下才能够。可是每次添加jar都要在全部集群节点上添加,太麻烦。测试
当前咱们使用的是Maven打包,把全部第三方包和MR程序打包在一块儿。因为项目包含了全部MR,引用的包也不少,致使打出来的包有50M,太大了,其实每一个MR须要的只是其中一部分包。idea
后来发现hadoop 可能自动引用lib文件夹下面的jar包,这样,针对单个MR程序,能够建立一个lib文件夹,把须要的jar包放至其中,并在打包时把lib目录打进mr包中便可。idea中不须要在项目中建立,只在打包配置中配置便可,以下:server