對MapReduce的一點理解

2021-09-01 09:29:42 字數 2196 閱讀 2646

mapreduce是乙個程式設計模型,和處理,產生大資料集的相關實現.使用者指定乙個map函式處理乙個key/value對,從而產生中間的key/value對集.然後再指定乙個reduce函式合併所有的具有相同中間key的中間value.下面將列舉許多可以用這個模型來表示的現實世界的工作.

以這種方式寫的程式能自動的在大規模的普通機器上實現並行化.這個執行時系統關心這些細節:分割輸入資料,在機群上的排程,機器的錯誤處理,管理機器之間必要的通訊.這樣就可以讓那些沒有並行分布式處理系統經驗的程式設計師利用大量分布式系統的資源.

我們的mapreduce實現執行在規模可以靈活調整的由普通機器組成的機群上,乙個典型的mapreduce計算處理幾千臺機器上的以tb計算的資料.程式設計師發現這個系統非常好用:已經實現了數以百計的mapreduce程式,每天在google的機群上都有1000多個mapreduce程式在執行.

mapreduce

初次接受到mapreduce,看了google mapreduce 中文版,完全不知所云,對於它的概念或許連門道都沒摸到,後來查閱資料,偶然間看到了婁巖的《大資料技術概論(從虛幻走向真實的資料世界》,書中寫道:

這裡是「mapreduce處理資料的兩個核心階段是map(對映)和reduce(化簡)。簡單來說,map負責將資料打散,reduce負責將資料進行聚集。」「,,,,,,我們利用mapreduce解決乙個有趣的撲克牌問題,即統計54張撲克牌中有多少張黑桃,最直觀的做法:自己在54張撲克牌中一張一張的數出有13張黑桃。而mapreduce的做法及步驟如下:

(1)給在座的所有牌友(比如4個人)盡可能的平均分配這54張牌;

(2)讓每個牌友數自己手中的牌有幾張是黑桃,比如老張是3張,老李是5張,老王是1張,老蔣是4張,然後每個牌友把黑桃的數目匯報給你;

(3)你把所有牌友的黑桃數目加起來,得到最後的結論—一共13張黑桃。

這個例子告訴我們,mapreduce的兩個主要功能map和reduce。

(1)map:把統計黑桃數目的任務分配給每個牌友分別計數。

(2)reduce:每個牌友不需要把黑桃牌遞給你,而是讓他們把各自的黑桃數目告訴你。

本來還有一些迷糊,但看到這個形象的比喻,頓時頭腦清晰了很多,總算明白了mapreduce的概念了,至於下面介紹的,一臉懵逼。不過我在網上還是找到了很多it大佬的分析,至少不是那麼不知所云了。在我了解到的知識裡,mapreduce是乙個軟體框架,乙個抽象的模型,可以在其中編寫一些軟體,更重要的是擅長處理海量的資料,而且很可靠,主要是採用了分布式計算。mapreduce離不開分布式計算,所謂分布式計算是一門電腦科學,它研究如何把乙個需要非常巨大的計算能力才能解決的問題分成許多小的部分,然後把這些部分分配給許多計算機進行處理,最後把這些計算結果綜合起來得到最終的結果。在上文說到過map和reduce作用。簡單點來說,map就是把收集來的資料打散,而reduce就是把打散的資料中得到所需要的結果進行彙總。

至於google mapreduce一文中的程式設計模型,,原文所說,,,

mapreduce 程式設計模型的原理是:利用乙個輸入 key/value pair 集合來產生乙個輸出的 key/value pair 集合。mapreduce 庫的使用者用兩個函式表達這個計算:map 和 reduce。 使用者自定義的 map 函式接受乙個輸入的 key/value pair 值,然後產生乙個中間 key/value pair 值的集合。mapreduce 庫把所有具有相同中間 key 值 i 的中間 value 值集合在一起後傳遞給 reduce 函式。 使用者自定義的 reduce 函式接受乙個中間 key 的值 i 和相關的乙個 value 值的集合。reduce 函式合併這些value 值,形成乙個較小的 value 值的集合。一般的,每次 reduce 函式呼叫只產生 0 或 1 個輸出 value 值。通常我們通過乙個迭代器把中間 value 值提供給 reduce 函式,這樣我們就可以處理無法全部放入記憶體中的大量的 value 值的集合。

好像就是這麼一回事,,,,不是現在我能理解的。想更詳細地了解認識mapreduce可以看看鏈結。

mapreduce更詳細的介紹

其他的我還沒有理解,,,更別說再介紹了,,,

mapreduce程式設計模型已經在google成功的用在不同的目的.我總結了一下,首先,mapreduce進行了封裝處理,,使得其資料庫易於使用;其次,它的應用很廣泛;最後,google 實現了在數千個計算機集群上部署執行mapreduce。種種原因讓google成功了。

對 threadfence的一點理解

一直沒搞清楚,cuda 2.2版增加的 threadfence到底有何作用,直到今天看到sdk 3.0手冊 中的下面例子才恍然大悟.中文為我的理解,嘿嘿 乙個求和的例子 device unsigned int count 0 統計有幾個block結束的變數 shared bool islastblo...

對GBDT的一點理解

gbdt由一系列的回歸樹組成,如下圖所示 樹的深度未必都要一樣,下圖僅為示意圖 gbdt原理 針對每乙個類別訓練一系列的回歸樹,再累加每個類別回歸樹的 值得到針對每個類別的最終的 值。單獨拿乙個類別來說,訓練的過程中假設需要 的值為f xi 實際的值為yi 有loss function l yi,f...

對block的一點理解

對block的理解 block宣告的寫法 property strong,nonatomic void block void property copy,nonatomic void block void block的本質 就是oc的物件,內部也有isa指標,block是封裝了函式呼叫以及函式呼叫環...