閱讀1005 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Hadoop組件概覽

先從概念層次介紹下Hadoop的各個組件,下一部分會深入Hadoop的每個組件,並從實戰層次講解。

一、Hadoop構造模塊

     運行Hadoop的意思其實就是運行一組守護進程(daemons),每個進程都有各自的角色,有的僅運行在單個服務器上,有的則運行在集群多個服務器上,它們包括:
  • NameNode
  • Secondary NameNode
  • DataNode
  • JobTracker
  • TaskTracker
     Hadoop是一個分布式存儲與計算係統,分布式存儲部分是HDFS分布式計算部分是MapReduce,它們都是遵循主/從(Master/Slave)結構,上麵前3個組件屬於分布式存儲部分,後麵2個組件屬於分布式計算部分,下麵詳細介紹一下它們。

二、NameNode

     前麵說了,NameNode屬於HDFS,它位於HDSF的主端,由它來指導DataNode執行底層I/O任務。NameNode相當於HDFS的書記員,它會跟蹤文件如何被分割成文件塊,而這些塊又是被哪些節點存儲,以及分布式文件係統整體運行狀態是否正常等。
     運行NameNode會消耗大量內存和IO資源,因此為減輕機器負載,駐留NameNode的服務器通常不會存儲用戶數據或者進行MapReduce計算任務,這也就意味著一台NameNode服務器不會同時是DataNode或者TaskTracker服務器。
     不過NameNode的重要性也帶來了一個負麵影響---單點故障。對於其他任何守護進程,其駐留節點發生軟件或硬件故障,Hadoop集群還可平穩運行,但是對於NameNode來說,則不可以。不過後麵版本(2.0以後的版本)已經解決此問題。

三、DataNode

     集群中每一個從節點都會駐留一個DataNode的守護進程,用來將HDFS數據庫寫入或讀取到本地文件係統中。當對HDFS文件進行讀寫時,文件會被分割成多個塊,有NameNode告知客戶端每個數據駐留在哪個DataNode,客戶端直接與DataNode進行通信,DataNode還會與其它DataNode通信,複製這些塊以實現冗餘。
     
NameNode跟蹤源數據,DataNode提供數據塊的備份存儲並持續不斷地向NameNode報告,以保持元數據最新狀態。

四、 Secondary NameNode
     SNN是一個監測HDFS的輔助進程,它隻與NameNode進程通信,根據集群配置時間間隔獲取HDFS元數據快照,我們知道HDFS有單點故障,SNN快照有助於減少宕機而導致的數據丟失風險,其一般也單獨占一台服務器。
五、 JobTracker
     它是應用程序和Hadoop之間的紐帶,監控MapReduce作業執行過程,一旦提交代碼到集群,JobTracker就會確定執行計劃,包括決定處理哪些文件、為不同的任務分配節點以及監控所有任務運行。每個集群隻有一個JobTracker進程,一般運行在主節點。
六、 TaskTracker
     TaskTracker管理各個任務在從節點上的執行情況。它負責執行有JobTracker分配的單項任務,雖然每個從節點隻有一個TaskTracker運行,但每個TaskTracker可以生產多個JVM來並行地處理多Map或Reduce任務。TaskTracker的一個職責是不斷的與JobTracker通信,即“心跳”。

下麵再來整體看一下整個Hadoop拓撲結構

下麵就是一個典型的Hadoop拓撲圖,主動結構,NameNode和JobTracker位於主端,DataNode和TaskTracker位於從端。


客戶端向JobTracker發送Job任務,JobTracker會把Job切分,並分配不同的Map和Reduce任務到每一台機器。




想更深一步了解HDFS相關組件,請參考我的另一篇文章:《HDFS架構設計》


最後更新:2017-04-03 05:39:25

  上一篇:go 莆籍北漂青年劉永宗在京舉行個人作品簽售會(圖)
  下一篇:go SDN學習筆記:分布式與集中式控製層麵