- 分布式實時處理系統:原理、架構與實現
- 盧譽聲
- 1612字
- 2019-01-03 10:50:22
1.4.1 Apache Hadoop
Hadoop是由Apache基金會開發的分布式存儲與計算框架。用戶不需要了解底層的分布式計算原理就可以輕松開發出分布式計算程序,可以充分利用集群中閑置的計算資源,將集群的真正威力調動起來。
Hadoop由兩個重要模塊組成。一個是Hadoop分布式文件系統(Hadoop Distributed File System),顧名思義,就是一個分布式的文件系統,可以將文件數據分布式地存儲在集群中的不同節點上。另一個是MapReduce系統,是一個針對大量數據的分布式計算系統。而當前版本的Hadoop中加入了一個名為YARN的模塊,這是一個用于任務調度和資源管理的框架,而目前MapReduce便是基于YARN開發的。
1.Apache Hadoop的歷史
Hadoop的思路來自谷歌提出的MapReduce分布式計算框架。谷歌的MapReduce框架可以把一個應用程序分解為許多并行計算指令,跨躍大量的計算節點運行非常巨大的數據集。而Hadoop的MapReduce則是對谷歌MapReduce的開源實現。另一方面其分布式文件系統則是谷歌的GFS的開源實現。
Hadoop原本是Apache Nutch中的一個子項目。后來Apache將MapReduce模塊與Nutch Distributed File System(NDFS)單獨抽離出來成為一個頂級項目。
Hadoop已經成為目前世界上最流行的分布式計算框架,Apache也建立了不少與Hadoop相關的項目,如HBase、Cassandra、Avro、Hive、Mahout等項目。
2.HDFS分布式文件系統
Hadoop分布式文件系統(HDFS)是一個主從式的分布式文件系統,是GFS的一種開源實現。
HDFS可以利用大量廉價存儲器組成分布式存儲集群,取代昂貴的集中式磁盤存儲陣列。而HDFS集群由一個NameNode和多個DataNode組成,除此之外還有用于熱備份的Secondary NameNode,防止集群出現單點故障。
接下來介紹HDFS的各個組成部分。
(1)NameNode
NameNode是整個集群的管理者。它并不存儲數據本身,而負責存儲文件系統的元數據。它負責管理文件系統名稱空間,并控制外部客戶端對文件系統的訪問。
NameNode決定如何將文件內容映射到DataNode的數據塊上。此外,實際數據傳輸并不會經過NameNode,而會讓對應的DataNode接收實際數據,并處理分布式存儲系統的負載均衡問題。
整個文件系統只有一個NameNode,因此很明顯集群可能會出現單點故障,這點我們需要利用Secondary NameNode來解決問題。
(2)Secondary NameNode
Secondary NameNode是NameNode的備份節點,HDFS會將NameNode的數據實時備份到Secondary NameNode上,當NameNode宕機需要重啟時,則可以利用Secondary NameNode中的數據加快NameNode的重啟恢復速度。
(3)DataNode
DataNode是實際的數據存儲節點,負責相應NameNode創建、刪除和復制塊的命令。NameNode會讀取來自DataNode的心跳信息,以此判斷DataNode是否存活。同一份數據會以多份副本存儲在不同的DataNode上,一旦某一個DataNode宕機,NameNode會立即采取手段來處理問題。
(4)MapReduce模型
MapReduce既是Hadoop中的模塊,也是一個計算模型。用戶需要自己將算法劃分成Map和Reduce兩個階段。首先將數據劃分為小塊的數據,將數據分配到不同計算節點的Map任務中計算,然后將計算結果匯總到Reduce節點中進行合并,得出最終結果。
MapReduce系統也是主從式的計算系統。在使用YARN后,每個集群有一個Resource-Manager,用于管理整個集群。集群中每個計算節點都有一個NodeManager,負責管理某個節點的容器并監視其資源使用。每個應用程序由一個MRAppMaster進行管理。
3.Apache Hadoop特性
Apache Hadoop具有以下幾個特點。
1)高可靠性:Apache Hadoop可以可靠地將數據存儲到節點上。
2)高可擴展性:Apache Hadoop的存儲和計算節點可以快速擴展,并自動進行負載均衡。
3)高效性:一方面Apache Hadoop會自動在各個節點之間動態調動數據,保證每個節點存儲均衡,另一方面讀取數據時我們可以從不同節點并行讀取,提高數據讀取的速度。
4)高容錯性:Apache Hadoop會將數據冗余存儲在不同節點上,保證數據容錯性,計算任務失敗時也會自動重新分配任務。
5)低成本:一方面,Apache Hadoop是開源軟件,可以節省商業軟件的購買成本。同時,Apache Hadoop可以用廉價節點組成的集群取代昂貴的超級計算機,從而可以節省硬件成本。
Apache Hadoop雖然是異常可靠的分布式計算框架,但其計算存儲模型也導致它的嚴重缺陷——實時性較差。首先MapReduce計算模型本身是一種批處理的計算模型,也就是積累一批數據,然后啟動MapReduce任務處理完這一批數據,等到下次積累到一定程度,再定時或手動啟動一輪新任務,而不是隨著數據到來即時處理。
此外,HDFS不是一個高實時性的分布式文件系統。為了提高其實時性我們還需要自己加上很多緩存優化。而致命問題在于MapReduce各個任務之間的通信完全使用HDFS完成,這也就從根本上導致MapReduce不可能具有極高的實時性。
- Mastering ElasticSearch
- 每天5分鐘玩轉Kubernetes
- WordPress Mobile Web Development:Beginner's Guide
- 開源安全運維平臺OSSIM疑難解析:入門篇
- Ubuntu Linux操作系統
- 網絡操作系統管理與應用(第三版)
- Linux使用和管理指南:從云原生到可觀測性
- Linux內核觀測技術BPF
- VMware Horizon View Essentials
- Mastering Windows 8 C++ App Development
- bash shell腳本編程經典實例(第2版)
- 完美應用Ubuntu(第2版)
- Docker容器技術與應用
- Linux內核修煉之道
- Linux內核分析及應用