在前面的博文中,我已經介紹過Hadoop的基本概念了(見博文初識Hadoop),今天來介紹一下Hadoop的體系結構。
Hadoop的兩大核心是HDFS和MapReduce,而整個Hadoop的體系結構主要是通過HDFS來實現分布式存儲的底層支持的,並且它會通過MapReduce來實現分布式並行任務處理的程序支持。下面我就分別介紹一下HDFS和MapReduce的體系結構。
1. HDFS體系結構
HDFS采用了主從(Master/Slave)結構模型,一個HDFS集群是由一個NameNode和若干個DataNode組成的。其中Namenode作為主服務器,管理文件系統的命名空間和客戶端對文件的訪問操作;而集群中的DataNode主要承擔管理存儲的數據的任務。
HDFS允許用戶已文件的形式存儲數據。從內部來看,文件被分成若干個數據塊,而且這若干個數據塊存放在一組DataNode上。Namenode執行文件系統的命名空間操作,比如打開、關閉、重命名等,同時它也負責數據塊到具體DataNode的映射。DataNode負責處理文件系統客戶端的文件讀寫請求,並在Namenode的統一調度下進行數據塊的創建、刪除和復制操作。其體系結構圖如下所示。
一個典型的部署場景是集群中的一台機器運行一個Namenode實例,其他機器分別運行DataNode實例。當然,並不排除一台機器運行多個DataNode實例的情況。集群中單一Namenode的設計大大簡化了系統的架構,Namenode是所有HDFS元數據的管理者,用戶需要保存的數據不會經過Namenode,而是直接流向存儲數據的DataNode。
2. MapReduce體系結構
MapReduce是一種並行編程模式,利用這種模式軟件開發者可以輕松地開發出分布式並行程序。在Hadoop體系結構中MapReduce是一個簡單易用的軟件框架,基於它可以將任務分發到上千台商用機器組成的集群上,並以一種可靠容錯的方式並行處理大量的數據集,實現Hadoop的並行任務處理功能。
MapReduce框架是由一個單獨運行在主節點的JobTracker和運行在每個集群從節點的TaskTracker共同組成。主節點負責調度構成一個作業的所有任務,這些任務分部在不同的從節點上。主節點監控它們的運行情況,並且負責重新執行之前失敗的任務;從節點僅負責由主節點指派的任務。當一個Job被提交的時候,JobTracker接受到提交的作業和其配置信息之后,就會將配置信息等分發給從節點,同時調度任務並監控TaskTracker的執行。
從上面的介紹可以看出,HDFS和MapReduce共同組成了Hadoop分布式系統結構體系的核心。HDFS在集群上實現了分布式文件系統,MapReduce在集群上實現了分布式計算和任務處理。HDFS在MapReduce任務處理過程中提供了對文件的操作和存儲等操作,MapReduce在HDFS的基礎上實現了任務的分發、跟蹤、執行等工作,並收集結果,二者相互協調。共同完成了Hadoop分布式集群的任務。
以上就是博主為大家介紹的這一板塊的主要內容,這都是博主自己的學習過程,希望能給大家帶來一定的指導作用,有用的還望大家點個支持,如果對你沒用也望包涵,有錯誤煩請指出。如有期待可關注博主以第一時間獲取更新哦,謝謝!
版權聲明:本文為博主原創文章,未經博主允許不得轉載。