開發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