華為云計(jì)算 云知識 hadoop三大組件是什么
hadoop三大組件是什么

hadoop三大組件mapreduce分布式運(yùn)算框架yarn任務(wù)調(diào)度平臺hdfs分布式文件系統(tǒng)

1.HDFS數(shù)據(jù)存放策略:分塊存儲+副本存放。

2.數(shù)據(jù)拓?fù)浣Y(jié)構(gòu)(即 數(shù)據(jù)備份 ):默認(rèn)存放3份,可以通過修改配置文件hdfs-site.xml修改備份數(shù)量,如果本機(jī)在集群中,第一份就會存放到本節(jié)點(diǎn)即本機(jī)上,如果不在集群中,就通過 負(fù)載均衡 存放到一個相應(yīng)的隨機(jī)節(jié)點(diǎn)上,第二份存放在同機(jī)柜的不同節(jié)點(diǎn)上,第三份存放在不同機(jī)柜的某個節(jié)點(diǎn)上。

3.數(shù)據(jù)查找:就近原則,現(xiàn)在本節(jié)點(diǎn)上查找,再從本機(jī)柜上查找,最后再去不同機(jī)柜上查找。

4.單點(diǎn)故障:Hadoop1中,一個集群只有NameNode,一旦NameNode宕機(jī),整個集群就無法使用。

5.RPC:(Remote-Procedure-Call遠(yuǎn)程過程調(diào)用)RPC是hadoop構(gòu)建的基礎(chǔ),一種協(xié)議,通過網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請求服務(wù),采用client/sever客戶機(jī)/服務(wù)機(jī)模式,客戶端發(fā)動請求結(jié)果返回給客戶端而不是服務(wù)端。

6.安裝模式:NameNode啟動時(shí)會進(jìn)入該模式進(jìn)行檢測,檢查數(shù)據(jù)塊的完整性,處于該模式下的集群無法對HDFS進(jìn)行操作,可以手動離開安全模式

hadoop dfsadmin-saftmode leave推出安全模式(enter進(jìn)入安全模式)

7.負(fù)載均衡:讓DataNode處于均很狀態(tài),調(diào)整數(shù)據(jù)塊,DataNode的工作任務(wù)等,例如:現(xiàn)有一個任務(wù)要分配給從節(jié)點(diǎn)運(yùn)行,但是有些slave內(nèi)存比較小,有些內(nèi)存比較大,又有些slave正在執(zhí)行別的任務(wù),有些事空閑的,為了讓各個slave既要飽和狀態(tài)又要性能最好,就需要調(diào)整;再例如:原本有8個子節(jié)點(diǎn),現(xiàn)在擴(kuò)充了2個子節(jié)點(diǎn),原先的8個子節(jié)點(diǎn)都要數(shù)據(jù)存儲,也有相應(yīng)的任務(wù)需要執(zhí)行,而后加的2個子節(jié)點(diǎn)是空的,此時(shí)也需要負(fù)載均衡進(jìn)行重新分配數(shù)據(jù)的存儲和任務(wù)的執(zhí)行。手動啟動該機(jī)制運(yùn)行:

$HADOOP_HOME/sbin/start-balancer.sh

8.機(jī)架感知:機(jī)架之間的交互用機(jī)架感知來進(jìn)行。機(jī)架之間的通信是通過一些交換機(jī),路由器,光纖等進(jìn)行通信的,需要通過機(jī)架感知來交互。不同機(jī)架之間相互訪問網(wǎng)絡(luò)耗費(fèi)較大且延遲也較高,所以理想狀態(tài)下要查找數(shù)據(jù)剛剛好就在本機(jī)上,就不用耗費(fèi)資源查找了,就需要通過機(jī)架感知。大型hadoop集群通過機(jī)架形式組織,而且同一機(jī)架上不同節(jié)點(diǎn)間的網(wǎng)絡(luò)狀況比不同機(jī)架之間的更為理想。

9.心跳機(jī)制:Hadoop是主從結(jié)構(gòu),即master/slave結(jié)構(gòu),master有NameNode,ResourceManager,SecondaryManager;slave有DataNode,NodeManager。master啟動時(shí)會啟動一個ipc服務(wù)(Inner-Process-Communication,通信間進(jìn)程),等待slave連接。slave啟動時(shí),會主動連接ipc服務(wù),并且每隔3秒連接一次master,這就是“心跳”。slave通過心跳機(jī)制匯報(bào)自己的狀態(tài),job完成情況等給master,同事master也通過心跳機(jī)制向slave下達(dá)命令,分配任務(wù)。同樣的,ResourceManager和NodeManager之間也通過心跳機(jī)制進(jìn)行交互。如果master長時(shí)間沒有收到slave的心跳,那么master就認(rèn)為該slave宕機(jī)了,如果slave宕機(jī)了,master就會把slave的數(shù)據(jù)通過負(fù)載均衡機(jī)制分配給其他slave上,正在執(zhí)行的任務(wù)也會被作廢,重新分配,重新執(zhí)行。

10.HA機(jī)制:High Availablity高可用性,H2中用于結(jié)局NameNode的單點(diǎn)故障問題。通過配置Active/Standby兩個NameNode解決熱備份問題。active NN對外提供服務(wù),standby NN只做備份,active NN將數(shù)據(jù)寫入共享存儲系統(tǒng)(NFS-NetWorkSystem,QJM,BooKeeper等)中而standby NN監(jiān)聽,一旦有新數(shù)據(jù)寫入standby NN會讀取這些數(shù)據(jù)寫入自己的內(nèi)存,保證和active NN保持同步,當(dāng)active NN發(fā)生故障,standby NN可以立即頂替。每個節(jié)點(diǎn)上都有一個zookeeper。DN不斷向active NN和standby NN發(fā)送心跳,zookeeper會檢測2個NN,active NN和standby NN通過共享存儲系統(tǒng)保持一致,當(dāng)zookeeper監(jiān)測到active NN出現(xiàn)故障時(shí),會立即通過故障轉(zhuǎn)移控制器切換standby NN為激活狀態(tài)。

注意:SecondaryNameNode不是HA,只是階段性合并edits和fsimage,用以縮短N(yùn)N啟動的時(shí)間,NN失效時(shí)SecondaryNN不能立即提供服務(wù),而且也不能保證數(shù)據(jù)和NN的一致性。