Haddop2.x在1.x基礎(chǔ)上做了很多的改進(jìn)谜嫉,主要增加和改進(jìn)了4個(gè)部分:HA抽莱,Federation,YARN骄恶,MapReduce On YARN
1. HA
Hadoop中的NameNode好比是人的心臟食铐,絕對(duì)不可以停止工作。在Hadoop1.x時(shí)代僧鲁,只有一個(gè)NameNode虐呻。如果該NameNode數(shù)據(jù)丟失或者不能工作,那么整個(gè)集群就不能恢復(fù)了寞秃。這是Hadoop1.x中的單點(diǎn)問(wèn)題斟叼,也是Hadoop1.x不可靠的表現(xiàn)Hadoop2的出現(xiàn)解決了這個(gè)問(wèn)題,也被稱為HA春寿。Hadoop2.x中HDFS的HA主要指的是可以同時(shí)啟動(dòng)2個(gè)NameNode朗涩。其中一個(gè)處于工作(Active)狀態(tài),另一個(gè)處于隨時(shí)待命(Standby)狀態(tài)绑改。這樣谢床,當(dāng)一個(gè)NameNode所在的服務(wù)器宕機(jī)時(shí),可以在數(shù)據(jù)不丟失的情況下厘线,手工或者自動(dòng)切換到另一個(gè)NameNode提供服務(wù)识腿。如圖所示
HA主要有以下特點(diǎn):
- 主備NameNode
- 解決單點(diǎn)故障
- 主NameNode對(duì)外提供服務(wù),備NameNode同步主NameNode元數(shù)據(jù)造壮,以待切換
- 所有DataNode同時(shí)向兩個(gè)NameNode匯報(bào)數(shù)據(jù)塊信息
- 兩種切換方式
- 基于Zookeeper自動(dòng)切換方案
- ZookeeperFailoverController:監(jiān)控NameNode健康狀態(tài),并向Zookeeper注冊(cè)NameNode
- NameNode怪調(diào)后渡讼,ZKFC為NameNode競(jìng)爭(zhēng)所,獲得ZKFC所的NameNode變?yōu)閍ctive
2.Federation
單Active NN的架構(gòu)使得HDFS在集群擴(kuò)展性和性能上都有潛在的問(wèn)題耳璧,當(dāng)集群大到一定程度后成箫,NN進(jìn)程使用的內(nèi)存可能會(huì)達(dá)到上百G,NN成為了性能的瓶頸
為了解決這個(gè)問(wèn)題,Hadoop 2.x提供了HDFS Federation, 示意圖如下
Federation主要有以下特點(diǎn):
- 通過(guò)多個(gè)NameNode/NameSpace把元數(shù)據(jù)的儲(chǔ)存和管理分散到多個(gè)節(jié)點(diǎn)中旨枯,使到NameNode/NameSpace可以把通過(guò)增加機(jī)器來(lái)進(jìn)行水平擴(kuò)展
- 能把單個(gè)NameNode的負(fù)載分散到多個(gè)節(jié)點(diǎn)蹬昌,在HDFS數(shù)據(jù)規(guī)模較大的時(shí)候不會(huì)也降低HDFS的性能≌偻ⅲ可以通過(guò)多個(gè)NameSpace來(lái)隔離不同類型的應(yīng)用凳厢,把不同類型應(yīng)用的HDFS元數(shù)據(jù)的儲(chǔ)存和管理分派到不同的NameNode中
3.YARN
YARN:Yet Another Resource negotiator
- Hadoop2.0新引入的資源管理系統(tǒng),直接從MRv1演化而來(lái)的竞慢;
- 核心思想:將MRv1中JobTracker的資源管理和任務(wù)調(diào)度兩個(gè)功能分開(kāi)先紫,分別由ResourceManager和ApplicationMaster進(jìn)程實(shí)現(xiàn)
- ResourceManager:負(fù)責(zé)整個(gè)集群的資源管理和調(diào)度
- ApplicationMaster:負(fù)責(zé)應(yīng)用程序相關(guān)的事務(wù),比如任務(wù)調(diào)度筹煮、任務(wù)監(jiān)控和容錯(cuò)等
- YARN的引入遮精,使得多個(gè)計(jì)算框架可運(yùn)行在一個(gè)集群中
- 每個(gè)應(yīng)用程序?qū)?yīng)一個(gè)ApplicationMaster
- 目前多個(gè)計(jì)算框架可以運(yùn)行在YARN上,比如MapReduce、Spark本冲、Storm等
4.MapReduce On YARN
MapReduce On YARN:MRv2
- MapReduce作業(yè)直接運(yùn)行在YARN上准脂,而不是由JobTracker和TaskTracker構(gòu)建MRv1系統(tǒng)中
- 基本功能模塊:
- YARN:負(fù)責(zé)資源管理和調(diào)度
- MRAppMaster:負(fù)責(zé)任務(wù)切分、任務(wù)迪奧五檬洞、任務(wù)監(jiān)控和容錯(cuò)等
- MapTask/ReduceTask:任務(wù)驅(qū)動(dòng)引擎狸膏,與MRv1一直
- 每個(gè)MapReduce作業(yè)對(duì)應(yīng)一個(gè)MRAppMaster
- MRAppMaster任務(wù)調(diào)度
- YARN將資源分配給MRAppMaster
- MRAppMaster進(jìn)一步將資源分配給內(nèi)部任務(wù)
- MRAppMaster容錯(cuò)
- 失敗后,由YARN重新啟動(dòng)
- 任務(wù)失敗后添怔,MRAppMaster重新申請(qǐng)資源