@(blog)
簡介
Hadoop 是一個(gè)能夠處理海量數(shù)據(jù)的分布式系統(tǒng)基礎(chǔ)軟件框架抚官,理論上能夠通過增加計(jì)算節(jié)點(diǎn)以處理無限增長的數(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)邦集群模式
每一種方式都有其特定的使用場景,但一般數(shù)據(jù)規(guī)模很大的企業(yè)甜无,都會(huì)選擇HA+Federation模式扛点,下面簡要地介紹一下每一種模式的情況:
- 單機(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(簡稱NN)相當(dāng)于hadoop文件系統(tǒng)的管家胁后,對集群的所有文件訪問和操作都經(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ù)訪問的角度看彬檀,也可以簡單的將其理解為一臺(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