背景
hdfs主要有两层架构:
- 命名空间(Namespace)
由目录,文件和块组成。
它支持所有与命名空间相关的文件系统操作,例如创建,删除,修改和列出文件和目录。 - 块的存储服务(Block Storage Service)
2.1 管理Block(在Namenode中的完成):
- 通过控制注册以及阶段性的心跳,来保证datanode的正常运行。
- 运行块的信息报告,维护块的位置信息。
- 创建、删除、修改、查询块。
- 管理副本和副本位置
2.2 存储:由Datanodes通过在本地文件系统上存储块并允许读/写访问来提供。
多个Namenodes/Namespaces
先前的HDFS架构仅允许整个群集使用单个命名空间,单个Namenode管理命名空间。 HDFS Federation通过向HDFS添加对多个Namenodes /Namespaces的支持来解决此限制。每个DataNode要向集群中所有的namenode注册,且周期性的向所有namenode发送心跳和块报告,并执行来自所有namenode的命令。
- 块池(Block Pool):块池是属于单个命名空间的一组块。 Datanode存储集群中所有块池的块。 每个Block Pool都是独立管理的。 这允许命名空间为新块生成块ID,而无需与其他命名空间协调。 Namenode故障不会阻止Datanode提供群集中的其他Namenode。
命名空间及其块池一起称为命名空间卷(Namespace Volume)。 它是一个独立的管理单位。 删除Namenode /名称空间时,将删除Datanodes上的相应块池。 - ClusterID:ClusterID标识符用于标识集群中的所有节点。
Federation的主要优点
- namespace是一个可扩展的,相当于namenode是一个分布式的。通过允许将更多Namenode添加到群集,使用大量小文件的大型部署可从命名空间扩展中受益。
- 性能提升了,操作不会由于一个namenode的吞吐量收到限制。 向集群添加更多Namenode可扩展文件系统读/写吞吐量。
- 隔离性。每个namenode只管理一部分文件 。不同用户可以被namespace隔离。通过使用多个Namenode,可以将不同类别的应用程序和用户隔离到不同的名称空间。
配置
见官网,在此就不介绍了。
网友评论