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,明白,原來高手們寫代碼,作產品架構設計一開始的時候,也不是完善完美的,
須要先作出來,在實際環境去調優,修正,發現問題,而後解決問題,不斷完善甚至改掉原來的架構或思想。