參考:
hadoop有不同版本之分,寫這篇文章的時候已經有版本3了,但是主要還是以版本二為主,1 2 的主要不同是在mapreduce部分
尤其是資源管理部分由原來的tasktracker jobtracker轉為了yarn,而計算部分沒變。另hdfs也沒怎麼變,作為乙個新手,試著記錄一下自己的理解吧。
整個hadoop的框架是先用hdfs儲存資料,上面加上yarn用於資源管理,在上面用mapreduce進行計算。
hdfs分為namenode 和n多個datanode,(一般每個節點放乙個datanode)前者負責記錄資訊,後者負責儲存實際的資料,yarn分為sourcemanager 和nodemanager,前者負責整體的資源排程,每個節點的nodemanager負責本節點的計算啊,結果啊,資源等資訊。
mapreduce中的shuffle和sort分析:當客戶向mapreduce框架提交乙個計算作業時,會首先把計算作業拆分成若干個map.分配到不同的節點上去執行,每個map結束產生輸出的時候先寫到記憶體(並做一些預排序),到了一定數量之後spill到磁碟(spill執行緒在寫到此盤前會進行二次排序,首先按照所屬的partition(eg:在wordcount例子中,把a-g分為p1,h-n為p2),然後在p中按照key排序)如果有combiner(map節點上的小reduce先能合併的就合併)的話在這個基礎上進行,然後輸出乙個索引檔案和資料檔案。,因為乙個map節點會spill好多次,會有好多個spill檔案,所以完成最後一次spill之後要合併(partition),歸併成乙個索引檔案和資料檔案。然後壓縮(減小寫入磁碟的速度),然後把檔案寫到本節點的磁碟上(刪除之前臨時的spill檔案),這樣map節點工作完成。
以上就是hadoop的處理過程,簡要的包含了hdfs儲存的方式,yarn資源管理的方式和mapreduce的處理過程。
得出結論:每個節點的map操作完成後不寫入結果到hdfs而是寫到相應結果的磁碟,之後在對應的reduce之後才寫入hdfs。
盜個圖:來自上方引用的兩篇之一。
hadoop map reduce 階段筆記
shuffle and sort mr 框架保證 每個 reducer 的輸入都是按照 key 鍵排過序的。shuffle 將map輸出結果送到reducer和排序的功能。1 map 每個map task將結果輸出到環形記憶體緩衝區,當到達一定閾值,則啟動乙個後台程序將快取中的資料 1 按照 red...
Hadoop MapReduce 效能優化
我們時常談論說到mapreduce時,我們都會說它是離線計算框架,磁碟io開銷大,job執行比較慢等等。這一篇部落格,南國系統回顧下mr程式執行慢的原因,以及如何優化mr程式。我們都知道mapreduce是離線計算框架,不同於spark記憶體計算框架模型。乙個標準的mr程式由map方法和reduce...
九 hadoop mapreduce分割槽
一 什麼時候分割槽?1 分割槽的實現 通過繼承partitioner類,實現getpartition方法。public int getpartition key key,value value,int reducetasknumber map結束後得到的每個key value都呼叫該方法,並把key...