暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Hadoo2.0 Federation联盟--1理论篇

困困随笔 2017-11-01
279

背景

HDFS有两个主要层:

  • Namespace

    • 包含目录,文件和块

    • 它支持所有命名空间相关的文件系统操作,如创建,删除,修改和列出文件和目录。

  • Block Storage Service 

    有两部分    

    以前的HDFS架构只允许整个集群的单个命名空间。一个Namenode管理这个命名空间。HDFS Federation通过向HDFS文件系统添加支持多个Namenodes 命名空间来解决先前架构的限制。

    • 通过处理注册和周期性心脏跳动来提供数据库集群成员资格。

    • 处理块报告并维护块的位置。

    • 支持块相关操作,如创建,删除,修改和获取块位置。

    • 管理复制块下的块的复制放置和复制,并删除过度复制的块。

    • 块管理(在Namenode中完成)

    • 存储 - 由数据库提供,通过在本地文件系统上存储块,并允许读/写访问。


Hadoop的集群模式

在前面的文章中《Namenode详解及运维实践》提到过了namenode的基于QJM的集群HA模式,也就是集群里面部署主备两个namenode节点,形成高可用。不过这种模式的高可用,依然只有一个是active状态,备节点处于等待接入的状态。这种模式的缺陷也是可预测的,datanode是横向可扩展的,但是namenode却是不可扩展的,当datanode达到一定量时,namenode就可能存在性能瓶颈超负荷运转了。


而Hadoop 2.0以后开启了Federation模式,Federation联邦模式将整个HA集群再划分为两个以上的集群,不同的集群之间通过Federation进行连接,不同集群间可以共享数据节点,也可以不共享,实现了NameService的横向扩展,避免了单台的性能瓶颈。


多个Namenodes

为了水平扩展name serviceFederation使用多套独立的Namenodes。Namenodes是独立的,不需要相互协调。所有的Namenodes都使用datanodes作为块的公共存储。每个datanode注册到Federation集群中的所有Namenodes。Datanodes发送定期的心跳和块报告并处理来自Namenodes的命令。

用户可以使用ViewFs创建个性化的命名空间视图,其中ViewFs类似于某些Unix Linux系统中的client side mount tables

总结一下这个图:

  • 多个NN共用一个集群里DN上的存储资源,每个NN都可以单独对外提供服务

  • 每个NN都会定义一个存储池,有相同的id,每个DN都为所有存储池提供存储

  • DN会按照存储池id向其对应的NN汇报块信息,同时,DN会向所有NN汇报本地存储可用资源情况

  • 如果需要在客户端方便的访问若干个NN上的资源,可以使用客户端挂载表ViewFs,把不同的目录映射到不同的NN,但NN上必须存在相应的目录

概 念 解 释

  • Block Pool

Block Pool是属于单个命名空间的一组块。Datanodes存储集群中所有Block Pool的块。它独立于其他Block Pool进行管理。即每个namenode负责存储和管理一个block pool的元数据,一个Namenode的故障不会阻止数据库在群集中服务其他的Namenode。

namespace及其Block Pool一起称为Namespace Volume,这是一个独立的管理单位。当Namenode被删除时,数据节点处的相应Block Pool被删除。在集群升级期间,每个Namespace Volume都将作为一个单元进行升级。


  • ClusterID

标识符ClusterID标识集群中的所有节点。格式化Namenode时,该标识符可以指定或自动生成。应该保证集群的所有Namenode的ClusterID保持相同。


  • Name Service

Hadoop 2.0里对NN进行了一层抽象,提供服务的不再是NN本身,而是Name Service。Federation是由多个NS组成的,每个NS又是由一个或两个(HA)NN组成的。

主要优点

  • Namespace可扩展性 - HDFS集群存储水平扩展,但Namespace不会。使用大量小文件的大型部署或部署可以通过向集群添加更多的Namenodes来扩展Namespace

  • 性能 - 文件系统操作吞吐量受到先前架构中单个Namenode的限制。向集群添加更多的Namenodes可以缩放文件系统的读/写操作吞吐量。

  • 隔离 - 单个Namenode在多用户环境中不提供隔离。一个实验数据是,应用程序可以overload Namenode并减缓生产关键应用程序。使用多个Namenodes,则可以将不同类别的应用程序和用户隔离到不同的Namespace。


Federation 配置


联合配置向后兼容,并允许现有的单个Namenode配置工作,无任何变化。新配置被设计为使得集群中的所有节点具有相同的配置,而不需要根据集群中节点的类型部署不同的配置。

称为NameServiceID的新抽象与联合添加。Namenode及其对应的辅助/备份/检查指针节点属于此。为了支持单一配置文件,Namenode和secondary / backup / checkpointer配置参数后缀为NameServiceID,并添加到同一配置文件中。

框架

基于以上理论,整理一个大概的框架,可以用于测试实践,具体部署步骤在下一篇给出

参考资料

http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/Federation.html

http://blog.csdn.net/qqpy789/article/details/50072879

http://www.jianshu.com/p/c3a834e45ae3   hadoop 生态圈介绍


文章转载自困困随笔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论