2012-07-15 59 views
0

可以說我寫了一個WordCount示例,然後在eclipse項目中包含一個外部jar文件,如MyJar.jar。現在,如果我導出整個字計數項目作爲word.jar文件,然後鍵入Hadoop上的外部/ jar文件存儲在哪裏?

$> hadoop jar word.jar WordCount input output 

據我所知,作業執行和word.jar將有一個包含MyJar.jar文件lib目錄。現在,當HDFS上的這個jar文件MyJar文件將被存儲在作業正在運行時調用這個jar文件的方法?

回答

5

中的bin/hadoop的腳本實際上你解壓縮文件work.jar到本地文件系統上的文件夾TMP。

作業客戶端處理在HDFS的工作文件夾在您的原罐,所有的lib罐子和其他作業文件(如job.xml,分佈式緩存文件等)上傳到的創建。

當你的工作羣集節點上運行,這些文件被複制回落到該節點的本地文件系統上的tmp目錄作業目錄。出於效率的原因,這些文件只能複製一次,而不是在該節點上運行的每個映射任務。

+0

這很有道理。但是,你怎麼解釋這一點:在作業ID命名的 目錄中的客戶端複製到運行作業所需的資源,包括就業JAR文件,配置 文件,並計算輸入分割,信息給JobTracker的文件系統。作業JAR將複製一個高複製因子(由mapred.submit.replication屬性控制,默認值爲 10)。 這一段沒有太大意義。首先,因爲它表示客戶將evrything複製到jobtracker的fs,然後工作jar被高度複製。 – Razvan 2012-07-15 16:11:38

+0

作業跟蹤器FS,他們的意思是HDFS – 2012-07-15 20:05:25