天天看點

Hadoop的分布式緩存

一 背景

在執行MapReduce時,可能Mapper之間需要共享一些資訊,如果資訊量不大,可以将其從HDFS加載到記憶體中,這就是Hadoop分布式緩存機制。

二 分布式緩存的簡單應用

例如,統計一個文本的單詞在另外一個全量文本中是否存在,如果存在統計單詞的數量,下面是Map階段,将全量文本加載到分布式緩存中。

Hadoop的分布式緩存

三 如何使用DistributedCathe

第1步:在main方法中加載共享檔案的HDFS路徑,路徑可以是目錄也可以是檔案。可以在路徑末尾追加“#”+别名,在Map階段可以使用該别名。 編碼如下:

Hadoop的分布式緩存

第2步:在Mapper類或Reducer的setup方法中,用輸入流擷取分布式緩存中的檔案。 編碼如下:

Hadoop的分布式緩存

四 補充

加載到記憶體發生在Job執行之前,每個從節點各自都緩存一份相同的共享資料。如果共享資料太大,可以将共享資料分批緩存,重複執行作業。

繼續閱讀