Hadoop的架構知識
Hadoop的架構知識</span></span>
Hadoop是一個能夠對大量數據進行分布式處理的軟件框架,實現了Google的MapReduce編程模型和框架,能夠把應用程序分割成許多小的工作單元,并把這些單元放到任何集群節點上執行。在MapReduce中,一個準備提交執行的應用程序成為“作業job”,而從一個作業換分出的、運行于個計算節點的工作單元成為“任務task”。此外,Hadoop提供的分布式文件系統HDFS主要負責各個節點上的數據的存儲,并實現了高吞吐率的數據讀寫。
在分布式存儲和分布式計算方面,Hadoop都使用主/從(Master/Slave)架構。在一個配置完整的集群上想讓Hadoop跑起來,需要在集群中運行一系列后臺(daemon)程序。不同的禍胎程序扮演著不同的角色,這些角色由NameNode,DataNode,Secondary NameNode,JobTracker,TaskTracker組成,其中NameNode,Secondary NameNode,JobTracker運行在Master幾點上,而在每個Slave節點上,部署著一個DataNode和TaskTracker,一邊這個Slave服務器上運行的數據處理程序能盡可能直接處理本機的數據。對Master節點需要特別說明的是,在小集群中,Secondary NameNode可以屬于某個從節點;在大型集群匯中,NameNode和JobTracker被分別部署在兩臺服務器上。
NameNode
NameNode是HDFS的守護程序,負責記錄文件是如何分割成數據塊的,以及數據塊被存儲到哪些數據節點上。它的主要功能是對內存及I/O進行集中管理。
一般來說,NameNode所在的服務器不存儲任何用戶信息或執行計算任務,以避免這些程序降低服務器的性能。如果其他從服務器因出現軟硬件的問題而宕機,Hadoop集群仍舊可以繼續運行,或者快速重啟。但是由于NameNode是Hadoop集群中的一個單一節點,一旦NameNode服務器宕機,整個系統將無法運行。
DataNode
集群中的每個從服務器都運行著一個DataNode后臺程序,它負責把HDFS數據塊讀寫到本地的文件系統。當需要通過客戶端讀/寫某個數據時,先由 NameNode告訴客戶端去哪個DataNode進行具體的讀/寫操作,然后,客戶端直接與這個DataNode服務器的后臺程序進行通信,并且對相應的數據塊進行讀/寫操作。
Secondary NameNode
Secondary NameNode是一個用來監控HDFS狀態的輔助后臺程序。就像NameNode一樣,每個集群都有一個Secondary NameNode,并且部署在一臺單獨的服務器上。Secondary NameNode不同于NameNode,它不接收或記錄任何實時的數據變化,但是,它會與NameNode進行通信,以便定期地保存HDFS元數據的快照。由于NameNode是單點的,通過Secondary NameNode的快照功能,可以講NameNode的宕機事件和數據損失降低到最小。同時,如果NameNode發生問題時,Secondary NameNode可以及時地作為備用NameNode繼續使用。
JobTracker
JobTracker后臺程序用來連接應用程序與Hadoop。用戶代碼提交到集群以后,由JobTracker決定哪個文件將被處理,并且為不同的 task分配節點。同時,它還監控所有運行的task,一旦某個task失敗了,JobTracker就會自動重新開啟這個task,在大多數情況下這個 task會被放在不同的節點上,當然,具體運行情況取決于重啟的預設值。每個Hadoop集群只有一個JobTracker,一般運行在集群的 Master節點上。
TaskTracker
TaskTracker與負責存儲數據的DataNode相結合,其處理結構上也遵循主/從架構。JobTracker位于主節點,統領 MapReduce工作,而TaskTracker位于從節點,獨立管理各自的task。每個TaskTracker負責獨立執行具體的task,而 JobTracker負責分配task。雖然每個從節點上僅有唯一的一個TaskTracker,但是每個TaskTracker可以產生多個Java虛擬機(JVM),用于并行處理多個map以及reduce任務。TaskTracker的一個重要職責就是與JobTracker交互。如果 IobTaskTracker無法準時地獲取TaskTracker提交的信息,JobTracker就判定TaskTracker已經崩潰,并將任務分配給其他的節點處理。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!