Hadoop乾貨丨阿里高級大數據工程師帶你深入瞭解MapReduce、 HDFS

Hadoop被公認是一套行業大數據標準開源軟件,在分佈式環境下提供了海量數據的處理能力。幾乎所有主流廠商都圍繞Hadoop開發工具、開源軟件、商業化工具和技術服務。

HDFS

Client

Client(代表用 戶) 通過與 NameNode 和 DataNode 交互訪問 HDFS 中 的文件。 Client 提供

了一個類似 POSIX 的文件系統接口供用戶調用。

NameNode

整個 Hadoop 集群中只有一個 NameNode。 它是整個系統的“ 總管”, 負責管理 HDFS 的目

錄樹和相關的文件元數據信息。 這些信息是以“ fsimage”( HDFS 元數據鏡像文件)和

“ editlog”(HDFS 文件改動日誌)兩個文件形式存放在本地磁盤,當 HDFS 重啟時重新構造出

來的。此外, NameNode 還負責監控各個 DataNode 的健康狀態, 一旦發現某個 DataNode 宕

掉,則將該 DataNode 移出 HDFS 並重新備份其上面的數據。

Secondary NameNode

Secondary NameNode 最重要的任務並不是為 NameNode 元數據進行熱備份, 而是定期合併

fsimage 和 edits 日誌, 並傳輸給 NameNode。 這裡需要注意的是,為了減小 NameNode 壓

力, NameNode 自己並不會合併 fsimage 和 edits, 並將文件存儲到磁盤上, 而是交由

Secondary NameNode 完成。

DataNode

一般而言, 每個 Slave 節點上安裝一個 DataNode, 它負責實際的數據存儲, 並將數據信息定期

彙報給 NameNode。 DataNode 以固定大小的 block 為基本單位組織文件內容, 默認情況下

block 大小為 64MB。 當用戶上傳一個大的文件到 HDFS 上時, 該文件會被切分成若干個 block,

分別存儲到不同的 DataNode ; 同時,為了保證數據可靠, 會將同一個 block 以流水線方式寫到

若干個(默認是 3,該參數可配置)不同的 DataNode 上。 這種文件切割後存儲的過程是對用戶

透明的

Hadoop乾貨丨阿里高級大數據工程師帶你深入瞭解MapReduce、 HDFS

MapReduce

Client

用戶編寫的 MapReduce 程序通過 Client 提交到 JobTracker 端; 同時, 用戶可通過 Client 提

供的一些接口查看作業運行狀態。 在 Hadoop 內部用“作業”(Job) 表示 MapReduce 程序。

一個 MapReduce 程序可對應若干個作業,而每個作業會被分解成若干個 Map/Reduce 任務

(Task)。

JobTracker

JobTracker 主要負責資源監控和作業調度。JobTracker 監控所有 TaskTracker 與作業的健康狀況,

一旦發現失敗情況後,其會將相應的任務轉移到其他節點;同時 JobTracker 會跟蹤任務的執行進

度、資源使用量等信息,並將這些信息告訴任務調度器,而調度器會在資源出現空閒時,選擇合

適的任務使用這些資源。在 Hadoop 中,任務調度器是一個可插拔的模塊,用戶可以根據自己的

需要設計相應的調度器。

Hadoop乾貨丨阿里高級大數據工程師帶你深入瞭解MapReduce、 HDFS

Hadoop乾貨丨阿里高級大數據工程師帶你深入瞭解MapReduce、 HDFS

由於平臺文章篇幅限制,細節內容過多,所以只把部分知識點截圖出來粗略的介紹,每個小節點裡面都有更細化的內容!

小編這裡有還一份大數據的學習文檔可以免費分享給大家。其中包含:Zookeeper、spark、hadoop、hbase、RabbitMQ、Cassandra 分佈式緩存、數據結構等等

資料免費獲取方式:關注我 + 轉發文章,後臺私信【資料】即可免費獲取

Hadoop乾貨丨阿里高級大數據工程師帶你深入瞭解MapReduce、 HDFS

Hadoop乾貨丨阿里高級大數據工程師帶你深入瞭解MapReduce、 HDFS


分享到:


相關文章: