我有一個Hadoop 0.20.2羣集。Hadoop DistributedCache類路徑
我想用DistributedCache的工作代碼分發到所有節點。我不明白addFileToClassPath()
和addArchiveToClassPath()
之間的區別。從邏輯上講,前者似乎是用於單個類文件,後者用於jar。但就在的javadoc,他們有這樣的例子代碼:
DistributedCache.addFileToClassPath(new Path("/myapp/mylib.jar"), job);
你爲什麼要這麼做?當你用'hadoop jar ......'提交作業時,它會自動發送'.jar'文件。 – 2012-02-14 08:18:33
@orangeoctopus - 在我們的例子中,這將會非常低效。我有很多庫的依賴,所以這個jar會很大。每次我開始工作時,我都不想把整個事情通過網絡發送給每個從屬節點。 – 2012-02-14 12:15:57
分佈式緩存也將這樣做。它不會永久地推出該文件,它是一個緩存,所以它會隨着時間的推移而被刷新。通常情況下,人們通過在所有節點上安裝庫並將其添加到類路徑中來實現此目的,而無需Hadoop API的幫助。在製作中,人們爲此使用了像Puppet這樣的東西。 – 2012-02-14 16:16:36