上文我們已經(jīng)介紹Hadoop中HDFS分布式存儲(chǔ)組件
今天我們來(lái)學(xué)習(xí)Hadoop生態(tài)中另兩大組件Mapreduce和YARN
一、?MapReduce是hadoop三大組件之一,是分布式計(jì)算組件
Map階段 : 將數(shù)據(jù)拆分到不同的服務(wù)器后執(zhí)行Maptask任務(wù),得到一個(gè)中間結(jié)果
Reduce階段 : 將Maptask執(zhí)行的結(jié)果進(jìn)行匯總,按照Reducetask的計(jì)算 規(guī)則獲得一個(gè)唯一的結(jié)果
我們?cè)贛apReduce計(jì)算框架的使用過(guò)程中,我們只需要關(guān)注,Map任務(wù)的規(guī)則,和Reduce任務(wù)的規(guī)則即可
MapReduce的核心思想是: 先分(Map)再和(Reduce)
思考: MapReduce中hadoop服務(wù)幫我們完成了什么???
我們自己完成的是map和Reduce任務(wù)的規(guī)則制定.
Hadoop 完成了:
數(shù)據(jù)的拆分多個(gè)部分分別指定不同服務(wù)進(jìn)行計(jì)算
申請(qǐng)計(jì)算資源
讀取計(jì)算數(shù)據(jù)
reduce匯總map結(jié)果
寫入計(jì)算結(jié)果(hdfs)
......
Hadoop的出現(xiàn)大大簡(jiǎn)化了大數(shù)據(jù)的開發(fā)工作,我們只需要關(guān)注20%的業(yè)務(wù)計(jì)算,而80%的技術(shù)問(wèn)題,都由hadoop 幫我們解決了.
思考: 所有的計(jì)算任務(wù)都可以使用mapreduce任務(wù)解決么? 什么樣的任務(wù)可以使用mapreduce任務(wù)處理.
一個(gè)復(fù)雜任務(wù),可以拆分為多個(gè)簡(jiǎn)單任務(wù).
任務(wù)之間沒(méi)有任何依賴關(guān)系,可以同時(shí)執(zhí)行
結(jié)果之間沒(méi)有依賴關(guān)系,可以隨機(jī)合并.
將文件數(shù)據(jù)上傳hdfs的/input目錄下
cd /export/server/hadoop/share/hadoop/mapreduce ? hadoop jar hadoop-mapreduce-examples-3.3.0.jar wordcount /input /output
二、YARN概述(了解)
yarn是一個(gè)分布式資源調(diào)度平臺(tái)
yarn的作用是給mapreduce提供計(jì)算資源
yarn中都調(diào)度了哪些集群資源?
內(nèi)存資源和cpu資源
yarn中資源調(diào)度的目的是什么?
提高集群資源的利用率,防止部分程序惡意占用資源, 采用申請(qǐng)制,申請(qǐng)多少資源就使用多少資源
yarn是hadoop生態(tài)圈發(fā)展的前提:
yarn不光可以對(duì)于hadoop平臺(tái)的MR任務(wù)進(jìn)行資源調(diào)度,可以對(duì)于所有的基于yarn的規(guī)則申請(qǐng)資源的服務(wù)進(jìn)行資源調(diào)度,也就保證了我們基于hadoop組件運(yùn)行的其他大數(shù)據(jù)服務(wù)可以獲得合理的資源分配.
除了MapReduce,我們的Yarn還支持多種計(jì)算引擎 spark,flink等..
三、YARN架構(gòu)(重要)
Yarn是標(biāo)準(zhǔn)的主從架構(gòu)集群
主角色ResourceManager: 統(tǒng)一管理和分配集群資源,監(jiān)控每一個(gè)NodeManager的健康狀況.
從角色NodeManager: 統(tǒng)計(jì)匯報(bào)集群資源給RM,當(dāng)前服務(wù)器集群資源的使用和容器拆分.監(jiān)督資源回收
容器機(jī)制:
NodeManager,在程序沒(méi)有執(zhí)行時(shí)就預(yù)先搶占一部分資源劃分為容器,等待服務(wù)進(jìn)行使用
程序運(yùn)行時(shí)先申請(qǐng)資源,RM分配資源后,由NodeManager劃分出相應(yīng)的資源支持程序運(yùn)行
程序運(yùn)行期間無(wú)法突破資源限制最多只能使用容器范圍內(nèi)的資源
容器資源分為: 內(nèi)存資源和cpu資源
思考:
1臺(tái)主機(jī) NodeManager劃分了3個(gè)容器 分別為 容器1: 1G 容器2: 2G 容器3: 3G
問(wèn)題一: 如果我有一個(gè)程序需要10M內(nèi)存我使用哪一個(gè)容器 容器1
問(wèn)題二: 如果我有一個(gè)程序需要使用1.4G內(nèi)存我使用哪一個(gè)容器 容器2
問(wèn)題三: 如果我有一個(gè)程序,需要使用3.8G 內(nèi)存我使用哪一個(gè)容器? 使用容器1和容器3進(jìn)行合并提供給程序使用
分配集群資源時(shí),容器可以合并,但是不能拆分.
四、MapReduce & YARN 的部署(了解)
1、集群規(guī)劃(重要)
HDFS的集群規(guī)劃
node1: namenode datanode
node2: SecondaryNamenode datanode
node3: datanode
如果需要擴(kuò)展
node4 : datanode
node5 : datanode
.........
YARN的集群規(guī)劃
思考1: 哪一個(gè)角色占用資源最多??? ResourceManager
所以我們將RM放置在node1中,因?yàn)閚ode1的服務(wù)器性能最好
思考2: hadoop中yarn集群可以和hdfs集群在同一臺(tái)服務(wù)器中么?
可以,一般Hadoop服務(wù)部署時(shí),hdfs和yarn邏輯上分離,物理上在一起.
yarn分配的是內(nèi)存和cpu資源, 從而運(yùn)行MapReduce計(jì)算任務(wù),而該計(jì)算任務(wù)需要獲取計(jì)算數(shù)據(jù),計(jì)算數(shù)據(jù)存放在hdfs上,所以他們物理上在一起后數(shù)據(jù)傳輸速度快.
集群規(guī)劃
node1: ResourceManager NodeManager | NameNode DataNode
node2: NodeManager | SecondaryNameNode DataNode
node3: Nodemanager | DataNode
如果需要擴(kuò)展:
node4: Nodemanager | DataNode
node5: Nodemanager | DataNode
.....
什么叫做服務(wù)? 什么叫做服務(wù)器?
服務(wù)器: 硬件層面的概念,一個(gè)服務(wù)器可以提供給我們相應(yīng)的內(nèi)存,cpu,磁盤資源等,但是服務(wù)器必須有操作系統(tǒng),一般是linux系統(tǒng).
服務(wù): mysql hadoop ssh 在后臺(tái)運(yùn)行,一直保持接受數(shù)據(jù)狀態(tài),可以隨時(shí)被客戶端連接的軟件.
一個(gè)服務(wù)器中可以運(yùn)行多個(gè)服務(wù)
MapReduce的運(yùn)行需要Yarn分配資源,計(jì)算完成后資源回收,不會(huì)持久在后臺(tái)保持,并不能被客戶端連接, 所以他不是一個(gè)服務(wù),也不需要搭建集群.
在Hadoop平臺(tái)中有兩個(gè)集群HDFS和YARN還有一個(gè)計(jì)算框架MapReduce
五、Yarn集群部署
注意:我們這個(gè)部署方案是在hdfs已經(jīng)部署完成的基礎(chǔ)上進(jìn)行操作的,不是從0開始
-
先關(guān)閉HDFS集群
stop-dfs.sh
-
修改配置文件
進(jìn)入
/export/server/hadoop/etc/hadoop
目錄下進(jìn)行修改
修改完node1上的配置文件后,需要遠(yuǎn)程發(fā)送到node2和node3中
scp -r /export/server/hadoop root@node2:/export/server scp -r /export/server/hadoop root@node3:/export/server
六、MapReduce & YARN 初體驗(yàn)(了解)
?Yarn集群的啟停(重要)
# 啟動(dòng)yarn集群 start-yarn.sh # 停止yarn集群 stop-yarn.sh
單起單停
yarn --daemon start|stop|status resourcemanager|nodemanager
一鍵自動(dòng)hdfs和yarn集群
# 啟動(dòng) start-all.sh # 終止 stop-all.sh
執(zhí)行mapreduce任務(wù)
保證服務(wù)啟動(dòng)且可以正常使用(yarn 和hdfs)
示例1: 求π
hadoop jar /export/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar pi 3 1000
七、歷史服務(wù)器(了解)
歷史服務(wù)器:主要是為了將各個(gè)NodeManager中零散的log日志聚集起來(lái),存放到hdfs中,啟動(dòng)一個(gè)歷史服務(wù)器,用來(lái)統(tǒng)一查看歷史服務(wù)信息(計(jì)算任務(wù)的執(zhí)行信息)
歷史服務(wù)器配置
yarn-site.xml文件
<!-- 設(shè)置yarn歷史服務(wù)器地址 --> <property> ? ?<name>yarn.log.server.url</name> ? ?<value>http://node1:19888/jobhistory/logs</value> </property> ? <!-- 開啟日志聚集 --> <property> ?<name>yarn.log-aggregation-enable</name> ?<value>true</value> </property>
注意: 如果修改了配置文件,一定要重啟hadoop服務(wù),否則無(wú)法生效
歷史服務(wù)器啟動(dòng)
mapred --daemon start historyserver
歷史服務(wù)器查看文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-849697.html
node1:19888文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-849697.html
到了這里,關(guān)于??????Mapreduce分布式計(jì)算組件和YARN分布式資源調(diào)度的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!