日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Google MapReduce到底解决什么问题?

發布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Google MapReduce到底解决什么问题? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第二篇,Google MapReduce架構啟示(上)。

很多時候,定義清楚問題比解決問題更難。

?

什么是MapReduce?

它不是一個產品,而是一種解決問題的思路,它有多個工程實現,Google在論文中也給出了它自己的工程架構實現。

?

MapReduce這個編程模型解決什么問題?

能夠用分治法解決的問題,例如:

  • 網頁抓取

  • 日志處理

  • 索引倒排

  • 查詢請求匯總

畫外音:能夠發現,現實中有許多基于分治的應用需求。

?

為什么是Google,發明了這個模型?

Google網頁抓取,分析,倒排的多個應用場景,當時的技術體系,解決不了Google大數據量高并發量的需求,Google被迫進行技術創新,思考出了這個模型。

畫外音:誰痛誰想辦法。

?

為什么MapReduce對“能夠用分治法解決的問題”特別有效?

分治法,是將一個大規模的問題,分解成多個小規模的問題(分),多個小規模問題解決,再統籌小問題的解(合),就能夠解決大規模的問題。

畫外音:分治法詳見《分治法與減治法》。

?

Google MapReduce為什么能夠成功?

Google為了方便用戶使用系統,提供給了用戶很少的接口,去解決復雜的問題。
(1)?Map函數接口:處理一個基于key/value(后簡稱kv)的成對(pair)數據集合,同時也輸出基于kv的數據集合;
(2)?Reduce函數接口:用來合并Map輸出的kv數據集合;

畫外音:MapReduce系統架構,能在大規模普通PC集群上實現并行處理,和GFS等典型的互聯網架構類似。


用戶僅僅關注少量接口,不用關心并行、容錯、數據分布、負載均衡等細節,又能夠解決很多實際的問題,還有這等好事!

?

能不能舉一個例子,說明下MapReduce的Map函數與Reduce函數是如何解決實際問題的?

?

舉例:假設要統計大量文檔中單詞出現的個數。

?

Map

輸入KV:pair(文檔名稱,文檔內容)

輸出KV:pair(單詞,1)

畫外音:一個單詞出現一次,就輸出一個1。

?

Reduce

輸入KV:pair(單詞,1)

輸入KV:pair(單詞,總計數)

?

以下是一段偽代碼,
Map(list<pair($doc_name, $doc_content)>){

? ? foreach(pair in list)

? ? ? ? foreach($word in $doc_content)

? ? ? ? ? ? echo pair($word, 1); // 輸出list<k,v>

}

畫外音:如果有多個Map進程,輸入可以是一個pair,不是一個list。

?

Reduce(list<pair($word, $count)>){// 大量(單詞,1)

? ? map<string,int> result;

? ? foreach(pair in list)

? ? ? ? result[$word] += $count;

?

? ? foreach($keyin result)

? ? ? ? echo pair($key, result[$key]); // 輸出list<k,v>

}

畫外音:即使有多個Reduce進程,輸入也是list<pair>,因為它的輸入是Map的輸出。

?

最早在單機的體系下計算,輸入數據量巨大的時候,處理很慢。如何能夠在短時間內完成處理,很容易想到的思路是,將這些計算分布在成百上千的主機上,但此時,會遇到各種復雜的問題,例如:

  • 并行計算

  • 數據分發

  • 錯誤處理

  • 集群通訊

這些綜合到一起,就成為了一個困難的問題,這也是Google MapReduce工程架構要解決的問題,也就是下一章將要分享的問題,敬請期待。

總結

以上是生活随笔為你收集整理的Google MapReduce到底解决什么问题?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。