目錄
一、分布式計(jì)算
二、分布式資源調(diào)度
2.1 什么是分布式資源調(diào)度
2.2 yarn的架構(gòu)
2.2.1 核心架構(gòu)
2.2.2 輔助架構(gòu)
前面我們提到了Hadoop的三大核心功能:分布式存儲、分布式計(jì)算和資源調(diào)度,分別由Hadoop的三大核心組件可以擔(dān)任。
即HDFS是分布式存儲組件,MapReduce是分布式計(jì)算組件,Yarn則是資源調(diào)度組件。
本章我們就分布式計(jì)算和資源調(diào)度進(jìn)行簡單講解。
一、分布式計(jì)算
那么什么是分布式計(jì)算呢?
以前我們開發(fā)過程中,要進(jìn)行計(jì)算通常都是在一臺電腦上完成的。這從某種意義上說,計(jì)算的數(shù)據(jù)量不算特別大。單臺機(jī)器能夠勝任。
但是假如現(xiàn)在有一個(gè)1PB的數(shù)據(jù)需要進(jìn)行計(jì)算,那么單臺機(jī)器能完成嗎?先不說存儲的事情,就算能完成,拿現(xiàn)在最強(qiáng)性能的cpu,那也要計(jì)算到猴年馬月了。
所以單臺不夠,我們就多臺機(jī)器同時(shí)計(jì)算,這就衍生出了分布式計(jì)算。
分布式計(jì)算的兩種模式
分散匯總模式
1. 將數(shù)據(jù)分片,多臺服務(wù)器各自負(fù)責(zé)一部分?jǐn)?shù)據(jù)處理
2. 然后將各自的結(jié)果,進(jìn)行匯總處理
3. 最終得到想要的計(jì)算結(jié)果
中心調(diào)度->步驟執(zhí)行模式
中心調(diào)度、步驟執(zhí)行模式?
1. 由一個(gè)節(jié)點(diǎn)作為中心調(diào)度管理者
2. 將任務(wù)劃分為幾個(gè)具體步驟
3. 管理者安排每個(gè)機(jī)器執(zhí)行任務(wù)
4. 最終得到結(jié)果數(shù)據(jù)
中心調(diào)度->步驟執(zhí)行模式
MapReduce
MapReduce是“分散->匯總”模式的分布式計(jì)算框架,可供開發(fā)人員開發(fā)相關(guān)程序進(jìn)行分布式數(shù)據(jù)計(jì)算。
MapReduce提供了2個(gè)編程接口:Map和Reduce
Map功能接口提供了“分散”的功能, 由服務(wù)器分布式對數(shù)據(jù)進(jìn)行處理
Reduce功能接口提供了“匯總(聚合)”的功能,將分布式的處理結(jié)果匯總統(tǒng)計(jì)
用戶如需使用MapReduce框架完成自定義需求的程序開發(fā)。只需要使用Java、Python等編程語言,實(shí)現(xiàn)Map Reduce功能接口即可。
注:MapReduce盡管可以通過Java、Python等語言進(jìn)行程序開發(fā),但當(dāng)下年代基本沒人會寫它的代碼了,因?yàn)樘^時(shí)了。?? 盡管MapReduce很老了,但現(xiàn)在仍舊活躍在一線,主要是Apache Hive框架非?;?,而Hive底層就是使用的MapReduce。 所以對于MapReduce的代碼開發(fā),課程會簡單擴(kuò)展一下,但不會深入講解,對MapReduce的底層原理會放在Hive之后,基于Hive做深入分析。
MapReduce的運(yùn)行機(jī)制:
- 將要執(zhí)行的需求,分解為多個(gè)Map Task和Reduce Task
- 將Map Task 和 Reduce Task分配到對應(yīng)的服務(wù)器去執(zhí)行
二、分布式資源調(diào)度
MapReduce是基于YARN運(yùn)行的,即沒有YARN”無法”運(yùn)行MapReduce程序。
這里“無法”是加了引號的,這是因?yàn)榻^大多數(shù)的場景都是通過yarn運(yùn)行MapReduce任務(wù)的,不是說沒有yarn完全不行,而是非常不方便。離開了它需要我們自行管理資源,自行管理就顯得麻煩了。所以95%以上的用戶都會選擇使用YARN運(yùn)行MapReduce任務(wù)。
2.1 什么是分布式資源調(diào)度
那么Yarn作為分布式資源調(diào)度組件,它具體有啥作用呢?換句話說什么是資源調(diào)度? 我們?yōu)槭裁葱枰Y源調(diào)度?
服務(wù)器會運(yùn)行多個(gè)程序, 每個(gè)程序?qū)Y源(CPU內(nèi)存等)的使用都不同
程序沒有節(jié)省的概念,有多少就會用多少。
所以,為了提高資源利用率,進(jìn)行調(diào)度就非常有必要了。
YARN 管控整個(gè)集群的資源進(jìn)行調(diào)度, 那么應(yīng)用程序在運(yùn)行時(shí),就是在YARN的監(jiān)管(管理)下去運(yùn)行的。
這就像:全部資源都是公司(YARN)的,由公司分配給個(gè)人(具體的程序)去使用。比如,一個(gè)具體的MapReduce程序。 我們知道, MapReduce程序會將任務(wù)分解為若干個(gè)Map任務(wù)和Reduce任務(wù)。假設(shè),有一個(gè)MapReduce程序, 分解了3個(gè)Map任務(wù),和1個(gè)Reduce任務(wù),那么如何在YARN的監(jiān)管(管理)下運(yùn)行呢?
我們直接看下面的動圖:
2.2 yarn的架構(gòu)
yarn分為核心架構(gòu)和輔助架構(gòu)
2.2.1 核心架構(gòu)
類比于HDFS:
HDFS, 主從架構(gòu),有2個(gè)角色
- 主(Master)角色:NameNode
- 從(Slave)角色 :DataNode
YARN,主從架構(gòu),有2個(gè)角色?
- 主(Master)角色:ResourceManager
- 從(Slave) 角色:NodeManager
ResourceManager:整個(gè)集群的資源調(diào)度者, 負(fù)責(zé)協(xié)調(diào)調(diào)度各個(gè)程序所需的資源
NodeManager:單個(gè)服務(wù)器的資源調(diào)度者,負(fù)責(zé)調(diào)度單個(gè)服務(wù)器上的資源提供給應(yīng)用程序使用。
如何實(shí)現(xiàn)服務(wù)器上精準(zhǔn)分配如下的硬件資源呢?
答:開辟的空間,稱之為:容器
2.2.2 輔助架構(gòu)
Yarn的架構(gòu)中處理核心角色,ResourceManager和NodeManager外,還可以搭配2個(gè)輔助角色使得YARN集群運(yùn)行更加穩(wěn)定。
代理服務(wù)器(ProxyServer):Web Application Proxy Web應(yīng)用程序代理
歷史服務(wù)器(JobHistoryServer): 應(yīng)用程序歷史信息記錄服務(wù)
代理服務(wù)器
代理服務(wù)器,即Web應(yīng)用代理是 YARN 的一部分。默認(rèn)情況下,它將作為資源管理器(RM)的一部分運(yùn)行,但是可以配置為在獨(dú)立模式下運(yùn)行。使用代理的原因是為了減少通過 YARN 進(jìn)行基于網(wǎng)絡(luò)的攻擊的可能性。
這是因?yàn)椋?/span> YARN在運(yùn)行時(shí)會提供一個(gè)WEB UI站點(diǎn)(同HDFS的WEB UI站點(diǎn)一樣)可供用戶在瀏覽器內(nèi)查看YARN的運(yùn)行信息。
對外提供WEB 站點(diǎn)會有安全性問題, 而代理服務(wù)器的功能就是最大限度保障對WEB UI的訪問是安全的。
比如:
- 警告用戶正在訪問一個(gè)不受信任的站點(diǎn)
- 剝離用戶訪問的Cookie等
- 開啟代理服務(wù)器,可以提高YARN在開放網(wǎng)絡(luò)中的安全性 (但不是絕對安全只能是輔助提高一些)
代理服務(wù)器默認(rèn)集成在了ResourceManager中
也可以將其分離出來單獨(dú)啟動,如果要分離代理服務(wù)器
1. 在yarn-site.xml中配置 yarn.web-proxy.address 參數(shù)即可 (部署環(huán)節(jié)會使用到)
2. 并通過命令啟動它即可 $HADOOP_YARN_HOME/sbin/yarn-daemon.sh start proxyserver(部署環(huán)節(jié)會使用到)
歷史服務(wù)器
歷史服務(wù)器的功能很簡單: 記錄歷史運(yùn)行的程序的信息以及產(chǎn)生的日志并提供WEB UI站點(diǎn)供用戶使用瀏覽器查看。
程序看日志不是日常操作嗎? 為何需要一個(gè)單獨(dú)的歷史服務(wù)器?
回答這個(gè)問題要從YARN的運(yùn)行機(jī)制說起。
文章來源:http://www.zghlxwxcb.cn/news/detail-707453.html
具體如何使用,我們將在下一章節(jié)(yarn部署)講解。?文章來源地址http://www.zghlxwxcb.cn/news/detail-707453.html
到了這里,關(guān)于大數(shù)據(jù)技術(shù)之Hadoop:MapReduce與Yarn概述(六)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!