Hadoop被公認是一套行業大資料標準開源軟體,在分散式環境下提供了海量資料的處理能力。幾乎所有主流廠商都圍繞Hadoop開發工具、開源軟體、商業化工具和技術服務。
HDFSClient
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 上。 這種檔案切割後儲存的過程是對使用者
透明的
MapReduceClient
使用者編寫的 MapReduce 程式通過 Client 提交到 JobTracker 端; 同時, 使用者可通過 Client 提
供的一些介面檢視作業執行狀態。 在 Hadoop 內部用“作業”(Job) 表示 MapReduce 程式。
一個 MapReduce 程式可對應若干個作業,而每個作業會被分解成若干個 Map/Reduce 任務
(Task)。
JobTracker
JobTracker 主要負責資源監控和作業排程。JobTracker 監控所有 TaskTracker 與作業的健康狀況,
一旦發現失敗情況後,其會將相應的任務轉移到其他節點;同時 JobTracker 會跟蹤任務的執行進
度、資源使用量等資訊,並將這些資訊告訴任務排程器,而排程器會在資源出現空閒時,選擇合
適的任務使用這些資源。在 Hadoop 中,任務排程器是一個可插拔的模組,使用者可以根據自己的
需要設計相應的排程器。
由於平臺文章篇幅限制,細節內容過多,所以只把部分知識點截圖出來粗略的介紹,每個小節點裡面都有更細化的內容!
小編這裡有還一份大資料的學習文件可以免費分享給大家。其中包含:Zookeeper、spark、hadoop、hbase、RabbitMQ、Cassandra 分散式快取、資料結構等等