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

相關文章
相關標籤/搜索