5節點Hadoop分布式集群搭建經驗分享
本文章我們使用hadoop2.6.0版本配置Hadoop集群,同時配置NameNode+HA、ResourceManager+HA,并使用zookeeper來管理Hadoop集群。
1.1 寫在前面的話
1.2 (一)HDFS概述
1.2.1 基礎架構
1、NameNode(Master)
1)命名空間管理:命名空間支持對HDFS中的目錄、文件和塊做類似文件系統的創建、修改、刪除、列表文件和目錄等基本操作。
2)塊存儲管理。
1.2.2 HA架構
從上面的架構圖可以看出,使用Active NameNode,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 location updates和heartbeat,同時會從共享存儲的Editlog上讀取并執行這些log操作,保持自己NameNode中的元數據(Namespcae information + Block locations map)和Active NameNode中的元數據是同步的。所以說Standby模式的NameNode是一個熱備(Hot Standby NameNode),一旦切換成Active模式,馬上就可以提供NameNode服務。
3、JounalNode
用于Active NameNode , Standby NameNode 同步數據,本身由一組JounnalNode節點組成,該組節點奇數個。
4、ZKFC
監控NameNode進程,自動備份。
1.3 (二)YARN概述
1.3.1 基礎架構
1、ResourceManager(RM)
接收客戶端任務請求,接收和監控NodeManager(NM)的資源情況匯報,負責資源的分配與調度,啟動和監控ApplicationMaster(AM)。
2、NodeManager
節點上的資源管理,啟動Container運行task計算,上報資源、container情況匯報給RM和任務處理情況匯報給AM。
3、ApplicationMaster
單個Application(Job)的task管理和調度,向RM進行資源的申請,向NM發出launch Container指令,接收NM的task處理狀態信息。
4、Web Application Proxy
用于防止Yarn遭受Web攻擊,本身是ResourceManager的一部分,可通過配置獨立進程。ResourceManager Web的訪問基于守信用戶,當Application Master運行于一個非受信用戶,其提供給ResourceManager的可能是非受信連接,Web Application Proxy可以阻止這種連接提供給RM。
5、Job History Server
NodeManager在啟動的時候會初始化LogAggregationService服務, 該服務會在把本機執行的container log (在container結束的時候)收集并存放到hdfs指定的目錄下. ApplicationMaster會把jobhistory信息寫到hdfs的jobhistory臨時目錄下, 并在結束的時候把jobhisoty移動到最終目錄, 這樣就同時支持了job的recovery.History會啟動web和RPC服務, 用戶可以通過網頁或RPC方式獲取作業的信息。
1.3.2 HA架構
ResourceManager HA 由一對Active,Standby結點構成,通過RMStateStore存儲內部數據和主要應用的數據及標記。目前支持的可替代的RMStateStore實現有:基于內存的MemoryRMStateStore,基于文件系統的FileSystemRMStateStore,及基于zookeeper的ZKRMStateStore。 ResourceManager HA的架構模式同NameNode HA的架構模式基本一致,數據共享由RMStateStore,而ZKFC成為 ResourceManager進程的一個服務,非獨立存在。