Hadoop 2.x HDFS新特性

Hadoop 2.x HDFS新特性
    HDFS聯邦
    HDFS HA(要用到zookeeper等,留在後面再講)
    HDFS快照

回顧: HDFS兩層模型
    Namespace: 包括目錄、文件和塊。它支持全部命名空間相關的文件操做,如建立、刪除、修改,查看全部文件和目錄。
    Block Storage Service(塊存儲服務) 包括兩部分:
1 在namenode中的塊的管理:提供datanode集羣的註冊、心跳檢測等功能。處理塊的報告信息和維護塊的位置信息。支持塊相關的操做,如建立、刪除、修改、獲取塊的位置信息。管理塊的冗餘信息、建立副本、刪除多餘的副本等。
2 存儲: datanode提供本地文件系統上塊的存儲、讀寫、訪問等。


1.x HDFS架構的弱點
    HDFS架構在整個集羣中容許且僅容許一個單獨的命名空間。命名空間被一個單獨的namenode節點所管理。這種架構決策實現簡單。但也會產生單點,內存瓶頸,性能瓶頸等限制。

HDFS聯邦
    目的:水平擴展名稱服務
    使用多個獨立的namenode和namespaces。每一個namenode是獨立的,不須要和其它namenode協調合做。
    datanode做爲統一的塊存儲設備被全部namenode節點使用。
    每個datanode節點都在全部的namenode進行註冊。 datanode發送心跳信息、塊報告到全部namenode,同時執行全部namenode發來的命令。


塊池( Block Pool)
    塊池是屬於單個命名空間的一組塊。
    每個datanode爲全部的block pool存儲塊。
    Datanode是一個物理概念,而block pool是一個從新將block劃分的邏輯概念。
    同一個datanode中能夠存着屬於多個block pool的多個塊。
    Block pool容許一個命名空間在不通知其餘命名空間的狀況下爲一個新的block建立Block ID。
    一個Namenode失效不會影響其下的datanode爲其餘Namenode的服務。

HDFS聯邦的好處
    Namespace的可擴展性, 1.x中集羣存儲能夠水平擴展(增長節點),但namespace不能夠。
    1.x的Namenode 存在單點瓶頸,在2.x中能夠經過增長 namenode解決
    隔離性。在1.x中,一個拙劣的應用可能耗盡namenode的性能資源從而影響其餘應用運行, 2.x的多namenode能夠將不一樣類型的應用和用戶隔離在不一樣的namespaces

命名空間管理細節
    https://issues.apache.org/jira/secure/attachment/12453067/high-leveldesign.pdf
    不採用文件名Hash這一在分佈式系統裏經常使用的手段,由於同一目錄下的文件可能散佈於各個命名空間,性能不好
    採用Client Side Mount Table,以下圖
聯邦未解決問題     並不是真正HA, namenode失效會形成部分數據沒法訪問     負載均衡難以自勱完成 HDFS快照     在2.x終於實現了快照     設置一個目錄爲可快照:         hdfs dfsadmin -allowSnapshot <path>     取消目錄可快照:         hdfs dfsadmin -disallowSnapshot <path>     生成快照:         hdfs dfs -createSnapshot <path> [<snapshotName>]     刪除快照:         hdfs dfs -deleteSnapshot <path> <snapshotName> 快照位置     可快照目錄下的.snapshot子目錄 其它快照操做     列出全部可快照目錄:         hdfs lsSnapshottableDir     比較快照之間的差別:         hdfs snapshotDiff <path> <fromSnapshot> <toSnapshot>
相關文章
相關標籤/搜索