我試圖從實現Tool接口的應用程序啓動map reduce作業。 該應用程序幾乎沒有其他的東西就像地圖縮減作業的先決條件。將jar添加到啓動map的代碼的類路徑reduce作業
該類使用一些第三方庫,我怎麼那些罐子添加到類路徑,同時使用命令運行的jar:Hadoop的罐子< myjar這一> [參數]
從這個Cloudera's post我試圖設置HADOOP_CLASSPATH env var到第三方jar,但它沒有解決。 上面提到的第三方jar只是由啓動作業的類而不是Mapper/Reducer類所要求的。所以我不需要把它們放到分佈式緩存中。
當我將$ HADOOP_HOME/lib下需要的這些第三方jar複製時,它可以工作,但我需要更清晰的解決方案。
非常感謝。注:我知道把所有的第三方jar放在my-map-reduce-job.jar jar的lib目錄中是可行的,但我沒有這個自由,jar是用Maven創建的,我想要這些第三方罐子在my-map-reduce-job.jar之外
這就是當您嘗試調用mapred時。不是嗎?或者甚至當你嘗試hadoop fs -ls時你會得到例外? – SMA
我沒有得到任何hadoop -fs命令的異常,我得到 線程「main」java.lang.NoClassDefFoundError中的異常對於在第三方jar中的類而言,是 。 謝謝 – Niks
是的,這意味着您的每個映射進程都需要第三方jar。因此,如果您有多節點羣集,則需要將這些jar分發到其他計算機上 – SMA