天天看點

Hadoop學習筆記--DistributedCache

mapreduce api的不同版本對于實作DistributedCache略有差異。

1.DistributedCache.addCacheFile(new URI("檔案在HDFS中的位置"), conf);

這裡需要注意:首先,conf指Configuration;其次,這句話必須寫在Job job=new Job(conf,"作業名")之前!!

2.Path[] files=DistributedCache.getLocalCacheFiles(context.getConfiguration());

獲得此Configuration的所有緩存檔案本地位址,我們不需要管本地位址是什麼,拿來用就行了。(最後解釋原理)

這裡有個大坑:getLocalCacheFiles傳回的是本地副本的位址,而getCacheFiles傳回的是HDFS檔案位址,是以普通Java I/O是讀不到的!

多說一句,舊版api使用JobConf獲得緩存檔案。

3.使用各個檔案的位址讀寫檔案即可,即基本java I/O

Hadoop學習筆記--DistributedCache

DistributedCache原理:

所謂緩存,就是将HDFS上的檔案下載下傳備份到各個節點供本地使用,也是以,修改本地檔案是沒有意義的(它隻是一個副本)。

繼續閱讀