標籤:mapreduce 分布式儲存
HDFS和MapReduce是Hadoop的兩大核心。整個Hadoop體繫結構主要是通過HDFS來實現分布式儲存的底層支援的,並且通過MapReduce來實現分布式並行任務處理的程式支援。
一、HDFS體繫結構
HDFS採用了主從(Master/Slave)結構模型。一個HDFS叢集是由一個NameNode和若干個DataNode組成的。其中,NameNode作為主伺服器,管理檔案系統的命名空間和用戶端對檔案的訪問操作;叢集中的DataNode管理儲存的資料。HDFS典型的部署是在一個專門的機器上運行NameNode,叢集中的其他機器各運行一個DataNode;也可以在運行NameNode的機器上同時運行DataNode,或者一台機器上運行多個DataNode。一個叢集只有一個NameNode的設計大大簡化了系統架構。
從終端使用者的角度來看,它就像傳統的檔案系統一樣,可以通過目錄路徑對檔案執行CRUD(Create/Read/Update/Delete)操作。
NameNode管理檔案系統的中繼資料,DataNode儲存實際的資料。用戶端通過同NameNode和DataNodes互動訪問檔案系統。用戶端聯絡NameNode以擷取檔案的中繼資料,而真正的檔案I/O操作時直接和DataNode進行互動的。
為HDFS體繫結構:
檔案寫入(Or用戶端檔案上傳):
1、Client向NameNode發起檔案寫入的請求。
2、NameNode根據檔案大小和檔案塊配置情況,返回給Client它所管理部分DataNode的資訊。
3、Client將檔案劃分為多個Block,根據DataNode的地址資訊,按順序寫入到每一個DataNode塊中。
檔案讀取:
1、Client向NameNode發起檔案讀取的請求。
2、NameNode返迴文件儲存的DataNode的資訊。
3、Client讀取檔案資訊。
用戶端:將檔案切分為block依次上傳;與NameNode互動擷取檔案位置資訊;與DataNode互動讀取或者寫入檔案;管理和訪問HDFS
二、MapReduce體繫結構
MapReduce是一種並行編程模式,利用這種模式軟體開發人員可以輕鬆編寫出分布式並行程式。在Hadoop體繫結構中,MapReduce是一個簡單易行的軟體架構,基於它可以將任務分發到由上千台商用機器組成的叢集上,並以一種可靠容錯的方式平行處理大量資料集,實現Hadoop並行任務處理能力。
MapReduce架構是由一個單獨運行在主節點的JobTracker和運行在每個叢集從節點的TaskTracker共同組成的。主節點負責調度構成一個作業的所有任務,這些任務分布在不同的從節點上。主節點監控他們的執行情況,並且重新執行之前失敗的任務;從節點僅負責由主節點指派的任務。
當一個Job被提交時,JobTracker接收到提交作業和其配置資訊之後,就會將配置資訊等分發給從節點,同時調度任務並監控TaskTracker的執行
後續會不斷完善補充……