您好,肖大哥就為大家解答關于MapReduce是什么計算框架,mapreduce是什么相信很多小伙伴還不知道,現在讓我們一起來看看吧!
1、概念"Map(映射)"和"Reduce(化簡)",和他們的主要思想,都是從函數式編程語言里借來的,還有從矢量編程語言里借來的特性。
2、他極大地方便了編程人員在不會分布式并行編程的情況下,將自己的程序運行在分布式系統上。
3、 當前的軟件實現是指定一個Map(映射)函數,用來把一組鍵值對映射成一組新的鍵值對,指定并發的Reduce(化簡)函數,用來保證所有映射的鍵值對中的每一個共享相同的鍵組。
4、 映射和化簡 簡單說來,一個映射函數就是對一些獨立元素組成的概念上的列表(例如,一個測試成績的列表)的每一個元素進行指定的操作(比如前面的例子里,有人發現所有學生的成績都被高估了一分,他可以定義一個“減一”的映射函數,用來修正這個錯誤。
5、)。
6、 事實上,每個元素都是被獨立操作的,而原始列表沒有被更改,因為這里創建了一個新的列表來保存新的答案。
7、這就是說,Map操作是可以高度并行的,這對高性能要求的應用以及并行計算領域的需求非常有用。
8、 而化簡操作指的是對一個列表的元素進行適當的合并(繼續看前面的例子,如果有人想知道班級的平均分該怎么做?他可以定義一個化簡函數,通過讓列表中的元素跟自己的相鄰的元素相加的方式把列表減半,如此遞歸運算直到列表只剩下一個元素,然后用這個元素除以人數,就得到了平均分。
9、)。
10、雖然他不如映射函數那么并行,但是因為化簡總是有一個簡單的答案,大規模的運算相對獨立,所以化簡函數在高度并行環境下也很有用。
11、編輯本段分布和可靠性 MapReduce通過把對數據集的大規模操作分發給網絡上的每個節點實現可靠性;每個節點會周期性的把完成的工作和狀態的更新報告回來。
12、如果一個節點保持沉默超過一個預設的時間間隔,主節點(類同Google File System中的主服務器)記錄下這個節點狀態為死亡,并把分配給這個節點的數據發到別的節點。
13、每個操作使用命名文件的原子操作以確保不會發生并行線程間的沖突;當文件被改名的時候,系統可能會把他們復制到任務名以外的另一個名字上去。
14、(避免副作用)。
15、 化簡操作工作方式很類似,但是由于化簡操作在并行能力較差,主節點會盡量把化簡操作調度在一個節點上,或者離需要操作的數據盡可能近的節點上了;這個特性可以滿足Google的需求,因為他們有足夠的帶寬,他們的內部網絡沒有那么多的機器。
16、 用途 在Google,MapReduce用在非常廣泛的應用程序中,包括“分布grep,分布排序,web連接圖反轉,每臺機器的詞矢量,web訪問日志分析,反向索引構建,文檔聚類,機器學習,基于統計的機器翻譯...”值得注意的是,MapReduce實現以后,它被用來重新生成Google的整個索引,并取代老的ad hoc程序去更新索引。
17、 MapReduce會生成大量的臨時文件,為了提高效率,它利用Google文件系統來管理和訪問這些文件。
本文就講到這里,希望大家會喜歡。