簡單歸納:Map/Reduce是分佈式離線處理的一個框架。 Yarn是Map/Reduce中的一個資源管理器。html
一.圖形說明下Map/Reduce結構:apache
官方示意圖:框架
另外還能夠參考這個:分佈式
流程介紹:oop
HDFS首先會把塊進行邏輯上切片處理,而後進行Map映射。一個切片對應一個Map映射。學習
由於文件內容有可能一個單詞被切到兩個文件裏面,這樣計算就會有問題,因此Map映射時除了第一個切片徹底映射,其他的映射都會從第二行開始映射,而第一行傳遞給上一個Map處理。 spa
Map程序初始化會設定一個閾值,好比80%,當超過這個值的時候就會就會進行內存溢出。溢出前會進行一個【快速排序】,排完後寫入硬盤分區。(不設置閾值,當內存滿後,就會阻塞數據繼續寫入。設定的閾值根據實際狀況設定,過小了會增長讀寫壓力,太大了會產生阻塞。)3d
程序能夠設置合併操做,當分區數超過設定值後就進行合併。(好比分區>3後)(合併後,相同key的數據就壓縮了,拉取的時候就會減小IO)htm
Reduce會檢查是否Map完,有一個Map完後就能拉取一次。blog
Reduce拉取的時候會有一個真迭代器和一個假迭代器進行嵌套,好比一組數據 A 1 A 1 A 1 B 1,假迭代器會進行循環而後取下一條數據進行比較看是否相同,相同的話進行累加值,再取下一條,這樣下一條下一條的取,知道key不相同時候,結束本組循環,進行下一組循環。 這樣A就統計出3,B就統計出1來了。
流程介紹:首先Client請求ResourceManager,而後ResourceManager分配ApplicationMaster,ApplicatoinMaster向ResourceManager請求分配Container。Container一部分執行Map任務,一部分執行Reduce任務。
三.圖形說明下Map/Reduce和Yarn在整個Hadoop系統中的位置以及爲何產生Yarn:
因爲產生了多種計算框架,因此須要一個資源管理器來對資源進行分配使用。