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>
相关文章
相关标签/搜索