分布式計算的思想 ------合久必分,分久必合(哈哈)
map reducce
input (輸入) output(輸出)
map端的含義:
注意:假設hdfs的block大小為64m,採用textinputformat,現有乙個目錄,下面兩個檔案
大小分為1m和120m,mapreduce處理這個目錄下的資料時,預設情況下,將啟動幾個map task?
答:3個
注意: block:hdfs中最小的資料儲存單位,預設是64m;split:mapreduce中最小的計算單元,預設與block一一對應。
兩者的對應關係是任意的,可有使用者控制。
首先,由mapreduce處理時先啟動相應數量的map task(我們由乙個叫做partitioner 的資料分組 決定了map task輸出的每條資料交給哪個reduce task處理)。
然後,combiner:可以看做local reduce 合併相同的key對應的value,通常與reducer邏輯一樣 ,好處是減少map task輸出 數量(磁碟io),見少reduce-map網路傳輸資料量(i網路io) 結果疊加 (map)
shuffle:shuffle描述著資料從map task輸出到reduce task輸入的這段過程 (
完整地從map task端拉取資料到reduce 端。
在跨節點拉取資料時,盡可能地減少對頻寬的不必要消耗。
減少磁碟io對task執行的影響。
)reduce的含義:
1.reduce會接收到不同map任務傳來的資料,並且每個map傳來的資料都是有序的。如果reduce端接受的資料量相當小,則直接儲存在記憶體中(緩衝區大小由mapred.job.shuffle.input.buffer.percent屬性控制,表示用作此用途的堆空間的百分比),如果資料量超過了該緩衝區大小的一定比例(由mapred.job.shuffle.merge.percent決定),則對資料合併後溢寫到磁碟中。
2.隨著溢寫檔案的增多,後台執行緒會將它們合併成乙個更大的有序的檔案,這樣做是為了給後面的合併節省時間。其實不管在map端還是reduce端,mapreduce都是反覆地執行排序,合併操作,現在終於明白了有些人為什麼會說:排序是hadoop的靈魂。
MapReduce工作原理
本文的目錄 1.mapreduce作業執行流程 2.map reduce任務中shuffle和排序的過程 mapreduce作業詳細的執行流程 流程分析 1.在客戶端啟動乙個作業。2.向jobtracker請求乙個job id。3.將執行作業所需要的資源檔案複製到hdfs上,包括mapreduce程...
map reduce工作原理
下面的圖來自南京大學計算機系黃宜華老師開設的mapreduce課程的課件,這裡稍作整理和 總結。本文旨在對接觸了mapreduce之後,但是對mapreduce的工作流程仍不是很清楚的人員,當然包括博主自己,希望與大家一起學習。mapreduce借鑑了函式式程式語言lisp中的思想,lisp lis...
MapReduce工作原理
map reduce框架的運作完全基於對,即資料的輸入是一批對,生成的結果也是一批對,只是有時候它們的型別不一樣而已。key和value的類由於需要支援被序列化 serialize 操作,所以它們必須要實現writable介面,而且key的類還必須實現writablecomparable介面,使得可...