統(tǒng)計詞頻 為什么做? 比如每日十大主題
1。 單機(jī)HashMap + for 循環(huán)
2。 多臺機(jī)器for循環(huán) 很多人可能忘了做并行匯總
3。 多臺機(jī)器Map + Reduce 就是說匯總的時候也是多臺機(jī)器一起處理(Reduce 合的過程)
幾個步驟 :
Input, 設(shè)定好輸入文件
Split, 系統(tǒng)幫我們盡量均分到每臺機(jī)器
map, 實(shí)現(xiàn)代碼
傳輸整理, 系統(tǒng)幫你整理 (Partition Sort , Fetch + Merge Sort)
Reduce,實(shí)現(xiàn)代碼
Output, 設(shè)定輸出
leetcode map reduce 題
Reduce的輸入就是Map的輸出
Map Reduce的函數(shù)的輸入輸出
Map輸入 : key :文章存儲地址, Value: 文章內(nèi)容
Reduce輸入: key : map輸出的 key, value : map輸出的value
機(jī)器管理形式
map reduce的 機(jī)器采用什么樣的管理形式 ? peer to peer 還是master to slave
這里常用master slave
map reduce 的輸出一定理key和value的形式
https://www.lintcode.com/problem/word-count-map-reduce/description
其他問題
多少臺機(jī)器?
Map多少臺, Reduce多少臺。
機(jī)器越多越好?
啟動機(jī)器的時間也變長了。
key的數(shù)目就是key的上限。
遇到i, you, the 怎么辦?
設(shè)為stop words
傳輸整理
1。排好序 (不需要哈希表了)
2。 分類 (每臺機(jī)器處理的單詞較少)
內(nèi)排序 vs 外排序
Merge k sorted list.
用map reduce實(shí)現(xiàn)inverted index
倒排索引 lintcode上有道題