大數據(二) - HDFS

jopen 8年前發布 | 25K 次閱讀 分布式/云計算/大數據

HDFS優點

    高容錯性

            數據自動保存多個副本

            副本丟失后,自動恢復

    適合批處理

            移動計算而非數據

            數據位置暴露給計算框架

    適合大數據處理

            GB、TB、甚至PB級數據

            百萬規模以上的文件數量

            10K+節點規模

    流式文件訪問

            一次性寫入,多次讀取

            保證數據一致性

    可構建在廉價機器上

            通過多副本提高可靠性

            提供了容錯和恢復機制


HDFS缺點,不適合以下操作方式

    低延遲數據訪問

            比如毫秒級

            低延遲與高吞吐率

    小文件存取

            占用NameNode大量內存

            尋道時間超過讀取時間

    并發寫入、文件隨機修改

            一個文件只能有一個寫者

            僅支持append


HDFS不適合存儲小文件 

    元信息存儲在NameNode內存中

            一個節點的內存是有限的

    存取大量小文件消耗大量的尋道時間

            類比拷貝大量小文件與拷貝同等大小的一個大文件

    NameNode存儲block數目是有限的

            一個block元信息消耗大約150 byte內存

            存儲1億個block,大約需要20GB內存

            如果一個文件大小為10K,則1億個文件大小僅為1TB(但要消耗掉NameNode 20GB內存)


HDFS架構

HDFS使用典型的master-slave結構

HDFS設計思想



hdfs架構




Active Namenode: 主Master(只有一個) 

        管理HDFS的名稱空間

        管理數據塊映射信息

        配置副本策略

        處理客戶端讀寫請求

Standby Namenode:NameNode的熱備;

        定期合并fsimage和fsedits,推送給NameNode;

        當Active NameNode出現故障時,快速切換為新的 Active NameNode。

Datanode: Slave(有多個) 

        存儲實際的數據塊

        執行數據塊讀/寫

Client: 文件切分 

        與NameNode交互,獲取文件位置信息;

        與DataNode交互,讀取或者寫入數據;

        管理HDFS;

        訪問HDFS。


HDFS數據塊(block)

    文件被切分成固定大小的數據塊

            默認數據塊大小為64MB,可配置

            若文件大小不到64MB,則單獨存成一個block

    為何數據塊如此之大

            數據傳輸時間超過尋道時間(高吞吐率)

    一個文件存儲方式

            按大小被切分成若干個block,存儲到不同節點上

            默認情況下每個block有三個副本

HDFS寫流程




HDFS讀流程



HDFS典型的物理拓撲結構



HDFS Block副本放置策略

        副本1: 同Client的節點上 

        副本2: 不同機架中的節點上

        副本3: 與第二個副本同一機架的另一個節點上

        其他副本:隨機挑選



HDFS可靠性策略</span> </div>



HDFS訪問方式

     HDFS Shell命令 :和linux命令很像

     HDFS Java API :org.apache.hadoop.fs,很簡單

    HDFS REST API

    HDFS Fuse:實現了fuse協議

    HDFS lib hdfs:C/C++訪問接口

    HDFS 其他語言編程API

             使用thrift實現

            支持C++、Python、php、C#等語言




HDFS2.0新特性(還沒有完全實現,謹慎使用)

        NameNode HA

        NameNode Federation

        HDFS 快照(snapshot)

        HDFS 緩存(in-memory cache)

        HDFS ACL

        異構層級存儲結構(Heterogeneous Storage hierarchy)


來自: http://blog.csdn.net//matthewei6/article/details/50507023

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!