另一個比較獨立的工具是KV Store,類似于Cassandra,HBase,MongoDB等等非常非常多的其他東西。他是什么意思呢,假如你有一堆鍵值,你就能通過某種方式快速獲得鍵值背后的一大堆數據。就好像你去銀行插入銀行卡就能取到錢一樣。
(hello, 12100次),(world,15214次)等等這樣的Pair(我這里把Map和Combine放在一起說以便簡化);這幾百臺機器各自都產生了如上的集合,然后又有幾百臺機器啟動Reduce處理。Reducer機器A將從Mapper機器收到所有以A開頭的統計結果,機器B將收到B開頭的詞匯統計結果(當然實際上不會真的以字母開頭做依據,而是用函數產生Hash值以避免數據串化。因為類似X開頭的詞肯定比其他要少得多,而你不希望數據處理各個機器的工作量相差懸殊)。然后這些Reducer將再次匯總,(hello,12100)+(hello,12311)+(hello,345881)= (hello,370292)。每個Reducer都如上處理,你就得到了整個文件的詞頻結果。
除此之外,還有一些更特制的系統/組件,比如Mahout是分布式機器學習庫,Protobuf是數據交換的編碼和庫,ZooKeeper是高一致性的分布存取協同系統,等等。
如何更高速的處理?