hadoop學習筆記——集羣之HDFS詳細介紹

Hadoop是什麼:
    1)Hadoop 是一個由 Apache 基金會所開發的分佈式系統基礎架構
    2)主要解決,海量數據的存儲和海量數據的分析計算問題。
    3)廣義上來說,HADOOP 通常是指一個更廣泛的概念——HADOOP 生態圈

Hadoop的組件構成:

1)Hadoop HDFS:一個高可靠、高吞吐量的分佈式文件系統。

2)Hadoop MapReduce:一個分佈式的離線並行計算框架。

3)Hadoop YARN:作業調度與集羣資源管理的框架。

4)Hadoop Common:支持其他模塊的工具模塊(Configuration、RPC、序列化機制、日誌操作)。

1.1 HDFS 產生背景
    隨着數據量越來越大,在一個操作系統管轄的範圍內存不下了,那麼就分配到更多的操作系統管理的磁盤中,但是不方便管理和維護,迫切需要一種系統來管理多臺機器上的文件, 這就是分佈式文件管理系統。HDFS 只是分佈式文件管理系統中的一種。

1.2 HDFS 概念
    HDFS,它是一個文件系統,用於存儲文件,通過目錄樹來定位文件;其次,它是分佈式的,由很多服務器聯合起來實現其功能,集羣中的服務器有各自的角色。
    HDFS 的設計適合一次寫入,多次讀出的場景,且不支持文件的修改。適合用來做數據分析,並不適合用來做網盤應用。

1.3 HDFS 優缺點
    1.3.1 優點
        1)高容錯性
            (1)數據自動保存多個副本。它通過增加副本的形式,提高容錯性。
            (2)某一個副本丟失以後,它可以自動恢復。
        2)適合大數據處理
            (1)數據規模:能夠處理數據規模達到 GB、TB、甚至 PB 級別的數據。
            (2)文件規模:能夠處理百萬規模以上的文件數量,數量相當之大。
        3)流式數據訪問
            (1)一次寫入,多次讀取,不能修改,只能追加。
            (2)它能保證數據的一致性。
        4)可構建在廉價機器上,通過多副本機制,提高可靠性。

1.3.2 缺點
        1)不適合低延時數據訪問,比如毫秒級(Mysql)的存儲數據,是做不到的。
        2)無法高效的對大量小文件進行存儲
            (1)存儲大量小文件的話,它會佔用 NameNode 大量的內存來存儲文件、目錄和塊信息。這樣是不可取的,因爲 NameNode 的內存總是有限的。
            (2)小文件存儲的尋址時間會超過讀取時間,它違反了 HDFS 的設計目標。
        3)併發寫入、文件隨機修改
            (1)一個文件只能有一個寫,不允許多個線程同時寫。
            (2)僅支持數據 append(追加),不支持文件的隨機修改。

1.4 HDFS 架構

    主要由四個部分組成,分別爲 HDFS Client、NameNode、DataNode 和 SecondaryNameNode。下面我們分別介紹這四個組成部分。


    1)Client:就是客戶端。
    (1)文件切分。文件上傳 HDFS 的時候,Client 將文件切分成一個一個的 Block,然後進行存儲。
    (2)與 NameNode 交互,獲取文件的位置信息。
    (3)與 DataNode 交互,讀取或者寫入數據。
    (4)Client 提供一些命令來管理 HDFS,比如啓動或者關閉 HDFS。
    (5)Client 可以通過一些命令來訪問 HDFS。

    2)NameNode:就是 master,它是一個主管、管理者。
        (1)管理 HDFS 的名稱空間。
        (2)管理數據塊(Block)映射信息
        (3)配置副本策略
        (4)處理客戶端讀寫請求。

    3) DataNode:就是 Slave(從節點)。NameNode 下達命令,DataNode 執行實際的操作。
        (1)存儲實際的數據塊。
        (2)執行數據塊的讀/寫操作。

    4)Secondary NameNode:並非 NameNode 的熱備。當 NameNode 掛掉的時候,它並不能馬上替換 NameNode 並提供服務。
        (1)輔助 NameNode,分擔其工作量。
        (2)定期合併 Fsimage 和 Edits,並推送給 NameNode。
        (3)在緊急情況下,可輔助恢復 NameNode。

1.5 HDFS 文件塊大小

       HDFS 中的文件在物理上是分塊存儲(block),塊的大小可以通過配置參數( dfs.blocksize)來規定,默認大小在 hadoop2.x 版本中是 128M,老版本中是 64M。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章