首先讓我們來(lái)重溫一下 hadoop 的四大組件:
HDFS:分布式存儲(chǔ)系統(tǒng)
MapReduce:分布式計(jì)算系統(tǒng)
YARN:hadoop 的資源調(diào)度系統(tǒng)
Common:以上三大組件的底層支撐組件,主要提供基礎(chǔ)工具包和 RPC 框架等
MapReduce 是一個(gè)分布式運(yùn)算程序的編程框架婚苹,是用戶(hù)開(kāi)發(fā)“基于 Hadoop 的數(shù)據(jù)分析應(yīng)用” 的核心框架
MapReduce 核心功能是將用戶(hù)編寫(xiě)的業(yè)務(wù)邏輯代碼和自帶默認(rèn)組件整合成一個(gè)完整的分布 式運(yùn)算程序物邑,并發(fā)運(yùn)行在一個(gè) Hadoop 集群上
為什么需要 MapReduce
1、海量數(shù)據(jù)在單機(jī)上處理因?yàn)橛布Y源限制,無(wú)法勝任
2灰嫉、而一旦將單機(jī)版程序擴(kuò)展到集群來(lái)分布式運(yùn)行扼倘,將極大增加程序的復(fù)雜度和開(kāi)發(fā)難度
3、引入 MapReduce 框架后需五,開(kāi)發(fā)人員可以將絕大部分工作集中在業(yè)務(wù)邏輯的開(kāi)發(fā)上鹉动,而將 分布式計(jì)算中的復(fù)雜性交由框架來(lái)處理
MapReduce擅長(zhǎng)處理大數(shù)據(jù),它為什么具有這種能力呢宏邮?這可由MapReduce的設(shè)計(jì)思想發(fā)覺(jué)泽示。MapReduce的思想就是分而治之
(1)Mapper負(fù)責(zé)“分”蜜氨,即把復(fù)雜的任務(wù)分解為若干個(gè)“簡(jiǎn)單的任務(wù)”來(lái)處理械筛。“簡(jiǎn)單的任務(wù)”包含三層含義:一是數(shù)據(jù)或計(jì)算的規(guī)模相對(duì)原任務(wù)要大大縮徐住埋哟;二是就近計(jì)算原則,即任務(wù)會(huì)分配到存放著所需數(shù)據(jù)的節(jié)點(diǎn)上進(jìn)行計(jì)算郎汪;三是這些小任務(wù)可以并行計(jì)算赤赊,彼此間幾乎沒(méi)有依賴(lài)關(guān)系。
∨汀(2)Reducer負(fù)責(zé)對(duì)map階段的結(jié)果進(jìn)行匯總砍鸠。至于需要多少個(gè)Reducer,用戶(hù)可以根據(jù)具體問(wèn)題耕驰,通過(guò)在mapred-site.xml配置文件里設(shè)置參數(shù)mapred.reduce.tasks的值爷辱,缺省值為1。