@(blog)
簡(jiǎn)介
Hadoop 是一個(gè)能夠處理海量數(shù)據(jù)的分布式系統(tǒng)基礎(chǔ)軟件框架,理論上能夠通過增加計(jì)算節(jié)點(diǎn)以處理無限增長(zhǎng)的數(shù)據(jù),由java寫成。其作者是 Doug Cutting,得益于谷歌的Map/Reduce計(jì)算模型和GFS分布式文件系統(tǒng),Hadoop實(shí)現(xiàn)了其核心組件HDFS和MapReducce。Hadoop 是目前世界上大數(shù)據(jù)行業(yè)的主流軟件框架。其生態(tài)圈非常龐大,并且社區(qū)很活躍。Hadoop本身僅有hadoop-common + hdfs + mapreduce 組成,hadoop2.x以后增加了yarn體系。
hadoop 的集群模式
hadoop 集群,從細(xì)的方面來說,總共分為四種模式:
- Single Node Cluster,即偽分布式模式(單機(jī)模式)
- Full Distributed Cluster,即完全分布式集群模式
- HA Cluster,即高可用集群模式
- HA + Federation Cluster,即高可用聯(lián)邦集群模式
每一種方式都有其特定的使用場(chǎng)景,但一般數(shù)據(jù)規(guī)模很大的企業(yè),都會(huì)選擇HA+Federation模式,下面簡(jiǎn)要地介紹一下每一種模式的情況:
- 單機(jī)模式,將hadoop安裝在一臺(tái)機(jī)器上,通過進(jìn)程來模擬各主機(jī)節(jié)點(diǎn)的協(xié)作和運(yùn)行,其可靠性、穩(wěn)定性都是非常差的,并且具備糟糕的性能效率,沒有團(tuán)隊(duì)會(huì)在生產(chǎn)環(huán)境使用它。那么它是否就沒有用呢?也不是的,通常使用這種模式進(jìn)行開發(fā)和調(diào)試工作。
- 完全分布式模式,將hadoop部署在至少兩臺(tái)機(jī)子上,數(shù)據(jù)塊副本的數(shù)量通常也設(shè)置為2以上。該模式的集群,無論規(guī)模多大,只擁有1臺(tái)Namenode節(jié)點(diǎn),且也是唯一Active的工作節(jié)點(diǎn)。Namenode(簡(jiǎn)稱NN)相當(dāng)于hadoop文件系統(tǒng)的管家,對(duì)集群的所有文件訪問和操作都經(jīng)由NN統(tǒng)一協(xié)調(diào)管理。可想,當(dāng)集群規(guī)模越來越龐大時(shí),僅有一臺(tái)NN,必定是不堪重負(fù),那么它很容易就會(huì)掛掉,一旦掛掉,不僅集群立即癱瘓,還很容易造成數(shù)據(jù)丟失。另外,該模式通常ResourceManager(RM)也僅部署1臺(tái),ResourceManager是yarn的管家,主要管理任務(wù)的執(zhí)行,例如MapReduce任務(wù)。與NN類似,當(dāng)集群提交的作業(yè)過于繁重時(shí),其同樣面臨超負(fù)載的問題。那么此模式是否也無用武之地呢?也不是的,視業(yè)務(wù)、資金等情況而定,因?yàn)樵撃J饺蘸笠部梢园踩?jí)成高可用模式。
- 高可用模式,一般來說,分為NN的高可用和RM的高可用。在完全分布式的基礎(chǔ)上,增加備用NN和RM節(jié)點(diǎn)。NN高可用,也就是集群里面會(huì)部署兩臺(tái)NN(最多也只能兩臺(tái)),以形成主備NN節(jié)點(diǎn),達(dá)到高可用的目的。RM高可用與NN高可用類似,也是在集群里部署備用RM節(jié)點(diǎn)。不過此種模式下集群里面依然只有一臺(tái)NN/RM處于Active工作狀態(tài),另一臺(tái)則處于Standby的等待狀態(tài)。當(dāng)Active的NN/RM出現(xiàn)問題無法工作時(shí),Standby的那臺(tái)則立即無縫切入,繼續(xù)保障集群正常運(yùn)轉(zhuǎn)。這種模式是很多企業(yè)都使用的,但是依然有缺陷。什么缺陷呢?雖然集群的可用性問題解決了,但是性能瓶頸依然存在——僅有一臺(tái)NN/RM,由于無法橫向擴(kuò)展,其很可能會(huì)超負(fù)載運(yùn)行。
- 高可用聯(lián)邦模式,解決了單純HA模式的性能瓶頸。單純的HA模式NN和RM之間雖然配置了HA,但是依舊僅有一臺(tái)NN或RM同時(shí)運(yùn)行,這可能會(huì)導(dǎo)致了NN或RM的負(fù)載過重,從而造成整個(gè)集群的性能瓶頸。而聯(lián)邦模式將整個(gè)HA集群再劃分為兩個(gè)以上的集群,不同的集群之間通過Federation進(jìn)行連接,不同集群間可以共享數(shù)據(jù)節(jié)點(diǎn),也可以不共享,可以互相訪問和操作數(shù)據(jù),也可以不。這樣便做到了HA集群的橫向擴(kuò)展,從而移除了單純HA模式同時(shí)僅有1臺(tái)NN/RM工作所帶來的性能瓶頸。Federation模式,相當(dāng)于在多個(gè)集群之上又構(gòu)建了一個(gè)集群層次,從數(shù)據(jù)訪問的角度看,也可以簡(jiǎn)單的將其理解為一臺(tái)路由器,而每一個(gè)HA集群則是單獨(dú)的網(wǎng)絡(luò),不同網(wǎng)絡(luò)間通過Federation路由器進(jìn)行溝通。此模式是目前hadoop生態(tài)中最高的一種模式,適用于規(guī)模較大的企業(yè)。
組件體系
hadoop
hdfs
mapreduce
yarn
zookeeper
hive
hbase
sqoop
pig
Impala
dubbo
kudu
storm
kafka
flume
elasticsearch elk
mahout
ambari
avro
cassandra
chukwa
tez
spark
spark-streaming
spark-sql
spark-MLlib
概念
hadoop hdfs mapreduce fsimage edits namenode-metadata
yarn zookeeper
Namenode Secondary-Namenode Datanode
ResourceManager(JobTracker)
NodeManager(TaskTracker)
ApplicationManager
ApplicationMaster
Container
JobHistoryServer
JobClient
JournalNode
hadoop1.x hadoop2.x HA federation