Hadoop 2.x HDFS新特性

jopen 10年前發布 | 19K 次閱讀 Hadoop 分布式/云計算/大數據

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

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

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

HDFS聯邦
    目的:水平擴展名稱服務
    使用多個獨立的namenode和namespaces。每個namenode是獨立的,不需要和其它namenode協調合作。
    datanode作為統一的塊存儲設備被所有namenode節點使用。
    每一個datanode節點都在所有的namenode進行注冊。 datanode發送心跳信息、塊報告到所有namenode,同時執行所有namenode發來的命令。
Hadoop 2.x HDFS新特性

塊池( 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,如下圖
Hadoop 2.x HDFS新特性

聯邦未解決問題
    并非真正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>

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