一、mr的架構
1、簡介:mapreduce
是乙個軟體框架,基於該框架能夠容易地編寫應用程式,這些應用程式能夠執行在由上千個商用機器組成的大集群上,並以一種可靠的,具有容錯能力的方式並行地處理上
tb級別的海量資料集
2、4個物件:
客戶端:
編寫mapreduce
程式,配置作業,提交作業,這就是程式設計師完成的工作;
jobtracker
:初始化作業,分配作業,與
tasktracker
通訊,協調整個作業的執行;
tasktracker
:保持與
jobtracker
的通訊,在分配的資料片段上執行
map或
reduce
任務,tasktracker
和jobtracker
的不同有個 很重要的方面,就是在執行任務時候
tasktracker
可以有n
多個,jobtracker
則只會有乙個
hdfs
:儲存作業的資料、配置資訊等等,最後的結果也是儲存在
hdfs
上面二、mapreduced的工作流程
輸入分片(inputsplit):在進行
map計算之前,
mapreduce
會根據輸入檔案計算輸入分片(
input split
),每個輸入分片(
input split
)針對乙個
map任務;儲存的並非資料本身,而是乙個分片長度和乙個記錄資料的位置的陣列,輸入分片(input split
)往往和
hdfs
的block
(塊)關係很密切
map階段:程式設計師編寫好的
map函式了,因此
map函式效率相對好控制,而且一般
map操作都是本地化操作也就是在資料儲存節點上進行;
combiner階段:combiner
階段是程式設計師可以選擇的,
combiner
其實也是一種
reduce
操作,因此我們看見
wordcount
類裡是用
reduce
進行載入的
shuffle階段:將
map的輸出作為
reduce
的輸入的過程就是
shuffle
了reduce階段:
和map
函式一樣也是程式設計師編寫的,最終結果是儲存在
hdfs
上的。
MR執行流程
在這裡插入描述 資料進入maptask使用inputformat讀取資料 預設讀取格式是textinputformat 使用getsplits對資料目錄進行邏輯切分得到splits,有多少個splits 切片 就有多少個maptask 使用recordreader物件讀取 使用設定好的分隔符 切片裡...
MR1和MR2的工作原理
1 客戶端向jobtracker請求乙個新的作業id 通過jobtracker的getnewjobid 方法獲取,見第2步 2 計算作業的輸入分片,將執行作業所需要的資源 包括jar檔案 配置檔案和計算得到的輸入分片 複製到乙個以id命名的jobtracker的檔案系統中 hdfs 見第3步 3 告...
mr 執行在yarn集群流程分析
rm返回給其資源提交的路徑以及job的id號,staging jobid構成乙個job的唯一資源提交路徑,將job.split job.xml jar包提交到此路徑上面去,job資源提交完畢,rm將其分裝為乙個task,rm可能會處理多個task,所以需要資源排程,其主要有三種方式 fair 公平每...