Hadoop 2.x HDFS新特性

  • HDFS联邦

  • HDFS HA

  • HDFS快照

回顾: HDFS两层模型

  • Namespace: 包括目录,  文件和块.  它支持所有命名空间相关的文件操作, 如创建,  删除,  修改, 查看所有文件和目录

  • Block Storage Service (块存储服务) 包括两部分

1. 在namenode中的块的管理

提供datanode集群的注册, 心跳检测等功能.

处理块的报告信息和维护块的位置信息

支持块相关的操作, 如创建, 删除, 修改, 获取块的位置信息.

管理块的冗余信息, 创建副本, 删除多余的副本等.

2. 存储: datanode提供本地文件系统上块的存储, 读写, 访问等.

 

1.x HDFS架构的弱点

HDFS架构在整个集群中允许且仅运行一个单独的命名空间. 命名空间被一个单独的namenode节点所管理. 这种架构决策实现简单. 单页会产生单点, 内存瓶颈, 性能瓶颈等限制

也许仅仅在像Yahoo和Facebook这种规模的公司才会面对这样的限制问题, 但这些限制在2. x HDFS联邦中被解决

http://blog.csdn.net/strongerbit/article/details/7013221

 

多namenode及namespaces体系

注意 "联邦" 这个政治术语的含义(不是ha的概念)

目的: 水平扩展名称服务

使用多个独立的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的服务.

 

好处

Namespace的可扩展性, 1.x中集群存储可以水平扩展(增加节点), 但namespace不可以

1.x 的Namenode存在单点瓶颈, 在2.x 中可以通过增加 namenode 解决

隔离性, 在 1.x中, 一个不好的应用可能耗尽namenode的性能资源从而影响其他应用运行, 2.x的多namenode可以将不同类型的应用和用户隔离在不同的namespaces

 

 命名空间管理细节

不采用文件名hash这一在分布式系统里常用的手段, 因为同一目录下的文件可能散布于各个命名空间, 性能很差

采用Client Side Mount Table

 

未解决的问题

并非真正HA, namenode失效会造成部分数据无法访问

负载均衡难以自动完成

 


 

 


你可能感兴趣的:(hadoop)