hadoop運行原理?
1)輸入文件數據。將文件數據以分片(partition)的形式輸入,根據分片的大小將數據分為多個分片(例如分片大小為50M,若文件數據僅為3M則僅需要一個分片,若為65M則需要兩個分片),具體的數據形式為 key:value。
(2)Map階段
對于具體的任務選擇性的進行combine。如若任務為求最大/小時,可以在分片內先進行簡單的reduce合并,根據key的不同先求出每一個key的最大/小,以減小后面真正reduce階段時數據量過大產生的壓力,可以提高傳輸速率。但當任務是求平均時,則不可以這么做,因為先分片內key相同的數據求平均,再各個分片key相同的數據求平均的結果與直接將所有key相同的數據求平均,結果大概率是不一樣的。
根據key對數據進行排序
輸出會寫到內存緩沖區,空間都存滿后,其他數據會被寫到磁盤中。
(3)Shuffle階段
Map階段中主要對分片內的數據進行了拆分和簡單的組合,而shuffle階段則是將Map階段各個分片的輸出做一個整合并重新分片。具體來說,shuffle階段會把key進行hash操作,相同的結果放入同一個分片,把所有分片中相同的key對應的key:value對組合在一起放入同一個分片,方便后續對相同key的數據做統一處理。
(4)Reduce階段
Reduce階段通過將key相同的數據(已經由Shuffle階段存儲在同一個分片中)根據要求合并運算得到最終的結果,這時每一個key僅存在一個value,將key:value結果存入HDFS
上一篇云mas產品的特點有
下一篇元素周期表的正負價怎么用