hadoop spark 總結

yarn  由,資源管理器rm,應用管理器am appMaster,節點管理器nm 組成!node

圖侵刪緩存

 

 

yarn 的設計,是爲了代替hadoop 1.x的jobtracker 集中式一對多的資源管理「資源管理,任務監控,任務調度」,而yarn是 分而治之 ,使全局資源管理器減輕壓力。架構

rm 監控每個applicationmaster就能夠了,而每個applicationmaster則監控 本身node節點的全部任務「跟蹤做業狀態,進度,故障處理」,因此降低了壓力。併發

    rm資源管理器由調度器和應用管理者appmanager 功能模塊組成。以調度策略分容量調度器和公平調度器。前者是集羣吞吐量利用率最大化,後者基於內存公平的調度。app

而應用管理者負責接收提交做業,申請,負責做業容器失敗時的重啓。分佈式

 

hdfs oop

1 fsimgae,editlog 都是序列化文件,啓動時會加載到內存學習

記錄目錄結構和crud等操做spa

 2塊的概念,讓其支持大規模存儲,數據備份和管理。線程

 

map reduce VS rdd 技術

 

1 建立rdd對象;

2 sparkContext負責計算rdd之間的依賴關係,構建DAG;

3 DAGScheduler負責把DAG圖分解成多個階段,每一個階段包含多個任務,每一個任務會被taskScheduler分發給各個工做節點worknode上的executor去執行。

「在DAG中進行反向解析,遇到寬依賴就斷開,遇到窄依賴就把當前的rdd加入到當前的階段中」 

rdd的窄依賴與寬依賴, 以  父rdd只被一個子rdd依賴  一對一,多對一,區分是窄依賴,不然是寬依賴!

由於這是內存塊,若是是窄依賴,則能夠徹底打包 分紅一個線程併發執行! 而若是被其它多個子rdd依賴,即寬依賴,就可能rdd數據會變化,

等等,須要等待以前的階段完成,才能繼續執行!

這就是DAG的設計,比mapreduce快的緣由。mapreduce,的reduce業務須要等map 執行完才能開始,而沒有併發!這是依賴的! 

還有一個緣由是,一個是內存,一個是磁盤io。

 

核心思想:分而治之!  把大的數據集分片而小多個 小數據集,對應多個map 並行處理。

結束後,以key value 中間結果,讓reduce'減小' 整合,即具備相同的key 的結果分到同一個reduce任務!

整個過程,map輸入文件,reduce任務處理結果都是保存到分佈式文件系統中,而中間結果則保存到本地存儲中,如磁盤。

只有當map處理所有結束後,reduce過程才能開始!

shuffle過程:map的結果,進行,分區,排序,合併等處理並交給reduce的過程,即上圖。

map的shuffle:每一個map把結果首先寫入緩存,當滿了就溢寫到磁盤,並清空緩存。 爲了讓不一樣的reduce方便拿數據,會分好區,map結果會排序合併等操做處理。

reduce的shuffe: 從多個map中領回屬於本身處理那部分數據,而後對數據合併merge後給reduce處理。

 

 

 從學習hadoop和spark 過程,yarn代替jobstracker,spark代替mapreduce,明白,原來高手們寫代碼,作產品架構設計一開始的時候,也不是完善完美的,

須要先作出來,在實際環境去調優,修正,發現問題,而後解決問題,不斷完善甚至改掉原來的架構或思想。

相關文章
相關標籤/搜索