Hadoop高可用模式 集羣搭建與管理(一)

1   簡介

一般來說,Hadoop 集羣模式有如下4種。

1.1   單機模式:SingleNode Cluster

也稱爲僞分佈式模式,即將Hadoop安裝在一臺機器上,通過進程來模擬各主機節點的協作和運行,其可靠性、穩定性都是非常差的,並且具備糟糕的性能效率,沒有團隊會在生產環境使用它。那麼它是否就沒有用呢?也不是的,通常使用這種模式進行開發和調試工作。

1.2   完全分佈式模式:FullDistributed Cluster

將Hadoop部署在至少兩臺機子上,數據塊副本的數量通常也設置爲2以上。該模式的集羣,無論規模多大,只擁有1臺NameNode節點,且也是唯一Active的工作節點。NameNode(簡稱NN)相當於Hadoop文件系統的管家,對集羣的所有文件訪問和操作都經由NN統一協調管理。可想,當集羣規模越來越龐大時,僅有一臺NN,必定是不堪重負,那麼它很容易就會掛掉,一旦掛掉,不僅集羣立即癱瘓,還很容易造成數據丟失。另外,該模式通常ResourceManager(RM)也僅部署1臺,ResourceManager是yarn的管家,主要管理任務的執行,例如MapReduce任務。與NN類似,當集羣提交的作業過於繁重時,其同樣面臨超負載的問題。那麼此模式是否也無用武之地呢?也不是的,視業務、資金等情況而定,因爲該模式日後也可以安全升級成高可用模式。

1.3   高可用模式:HACluster

一般來說,分爲NN的高可用和RM的高可用。在完全分佈式的基礎上,增加備用NN和RM節點。NN高可用,也就是集羣裏面會部署兩臺NN(最多也只能兩臺),以形成主備NN節點,達到高可用的目的。RM高可用與NN高可用類似,也是在集羣裏部署備用RM節點。不過此種模式下集羣裏面依然只有一臺NN/RM處於Active工作狀態,另一臺則處於Standby的等待狀態。當Active的NN/RM出現問題無法工作時,Standby的那臺則立即無縫切入,繼續保障集羣正常運轉。這種模式是很多企業都使用的,但是依然有缺陷。什麼缺陷呢?雖然集羣的可用性問題解決了,但是性能瓶頸依然存在——僅有一臺NN/RM,由於無法橫向擴展,其很可能會超負載運行。

1.4   高可用聯邦模式:HA +Federation Cluster

解決了單純HA模式的性能瓶頸。單純的HA模式NN和RM之間雖然配置了HA,但是依舊僅有一臺NN或RM同時運行,這可能會導致了NN或RM的負載過重,從而造成整個集羣的性能瓶頸。而聯邦模式將整個HA集羣再劃分爲兩個以上的集羣,不同的集羣之間通過Federation進行連接,不同集羣間可以共享數據節點,也可以不共享,可以互相訪問和操作數據,也可以不。這樣便做到了HA集羣的橫向擴展,從而移除了單純HA模式同時僅有1臺NN/RM工作所帶來的性能瓶頸。Federation模式,相當於在多個集羣之上又構建了一個集羣層次,從數據訪問的角度看,也可以簡單的將其理解爲一臺路由器,而每一個HA集羣則是單獨的網絡,不同網絡間通過Federation路由器進行溝通。此模式是目前Hadoop生態中最高的一種模式,適用於規模較大的企業。

22   目的

本示例要求搭建Hadoop2.7.3高可用模式集羣,同時配置NameNode+HA、ResourceManager+HA,並使用Zookeeper來管理Hadoop集羣。

官方文檔:http://hadoop.apache.org/docs/r2.7.3/

2.1   NameNodeHA

在Hadoop2.X的Federation(聯邦)中,可以存在多個集羣,每個集羣對應一個NameService,每個NameService下管理者一個HA(HighAvailability:高可用)集羣,每個HA下目前最多包含有兩個NameNode主節點的Hadoop集羣。一個NameService下只能有一個NameNode處於Active狀態,另一個處於StandBy狀態,並可以進行切換(自動和手動)。Federation中的所有DataNode均可以爲所有的NameService共用。

其中,ActiveNameNode與Standby NameNode結點通過JounalNode 共享狀態,通過 ZKFC 選舉Active ,監控狀態,自動備援。如下圖所示:


1、Active NameNode:

接受client 的 RPC 請求並處理,同時寫自己的Editlog 和共享存儲上的 Editlog,接收DataNode 的 Block report, block location updates 和 heartbeat;

2、Standby NameNode:

同樣會接到來自 DataNode 的 Block report, block locationupdates 和 heartbeat,同時會從共享存儲的Editlog 上讀取並執行這些 log 操作,使得自己的NameNode 中的元數據(Namespcae information + Block locationsmap)都是和 Active NameNode 中的元數據是同步的。所以說 Standby 模式的 NameNode 是一個熱備(Hot Standby NameNode),一旦切換成 Active 模式,馬上就可以提供 NameNode 服務。

3、JounalNode:

用於ActiveNameNode , Standby NameNode 同步數據,本身由一組 JounnalNode 結點組成,該組結點基數個,支持 Paxos 協議,保證高可用。

4、ZKFC:

監控NameNode 進程,自動備援。

2.2   ResourceManager  HA

ResourceManagerHA 的架構模式同NameNode HA 的架構模式基本一致,同樣是由一對 Active與Standby 結點構成,通過 RMStateStore 存儲內部數據和主要應用的數據及標記。目前支持的可替代的 RMStateStore 實現有:基於內存的 MemoryRMStateStore、基於文件系統的 FileSystemRMStateStore、以及基於 zookeeper 的 ZKRMStateStore(本示例方案)。如下圖所示:


其中:ZKFC成爲 ResourceManager 進程的一個服務,非獨立存在。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章