主页 > 新闻资讯 > 大数据学习:HDFS Federation(联邦)讲解

大数据学习:HDFS Federation(联邦)讲解

作者:张老师 浏览次数: 2021-01-04 16:56
时至今日,大数据技术生态当中,Hadoop依然占据重要的位置,从1.X到2.X,Hadoop也在不断更新迭代,以解决实际应用场景当中遇到的新问题。在Hadoop 2.X的版本当中,引入了Federation(联邦机制),今天的大数据学习分享,我们就主要来讲讲HDFS Federation。

大数据学习:HDFS Federation(联邦)讲解

为什么要引入Federation?

Federation中文意思为联邦,联盟,是NameNode的Federation,也就是会有多个NameNode。

Federation能够快速的解决了大部分单Namenode HDFS的问题。

Federation整个核心设计实现大概用了3.5个月。大部分改变是在Datanode、Config和Tools,而Namenode本身的改动非常少,这样Namenode原先的鲁棒性不会受到影响。

Federation良好的向后兼容性,已有的单Namenode的部署配置不需要任何改变就可以继续工作。

HDFS的Federation机制

HDFS Federation使用了多个独立的Namenode/namespace来使得HDFS的命名服务能够水平扩展。在HDFS Federation中的Namenode之间是联盟关系,他们之间相互独立且不需要相互协调。HDFS Federation中的Namenode提供了命名空间和块管理功能。HDFS Federation中的datanode被所有的Namenode用作公共存储块的地方。

每一个datanode都会向所在集群中所有的Namenode注册,并且会周期性的发送心跳和块信息报告,同时处理来自Namenode的指令。

Federation HDFS与老版HDFS的比较及改进

①架构的变化

单NameNode架构中,HDFS只有一个命名空间(Namespace),它控制管理集群中全部的块。而Federation HDFS中有多个独立的命名空间(Namespace),并且每一个命名空间使用一个块池(block pool)。

单NameNode架构中,HDFS中只有一组块,而Federation HDFS中有多组独立的块。块池(block pool)就是属于同一个命名空间的一组块。

单NameNode架构中,HDFS由一个Namenode和一组datanode组成。而Federation HDFS由多个Namenode和一组datanode,每一个datanode会为多个块池(block pool)存储块。

②Namenode

namenode直接相互独立,各自分工管理自己的区域,且不需要互相协调,一个namenode挂掉了不会影响其他的namenode。

③Block Pool(块池)

Block pool(块池)就是属于某一个命名空间的一组block(块)。每一个datanode可以为所有的block pool存储块。Datanode是一个物理概念,而block pool是一个重新将block划分的逻辑概念。

同一个datanode中可以存着属于多个block pool的多个块。Block pool允许一个命名空间在不通知其他命名空间的情况下为一个新的block创建Block ID。

一个Namenode挂掉后不会影响其下的datanode为其他Namenode的服务。当datanode与Namenode建立联系并开始会话后自动建立Block pool。每个block都有一个唯一的标识,这个标识我们称之为扩展的块ID(Extended Block ID)=BlockID+BlockID。这个扩展的块ID在HDFS集群之间都是唯一的,这为以后集群归并创造了条件。

Datanode中的数据结构都通过块池ID(BlockPoolID)索引,即datanode中的BlockMap,storage等都通过BPID索引。在HDFS中,所有的更新、回滚都是以Namenode和BlockPool为单元发生的。即同一HDFS Federation中不同的Namenode/BlockPool之间没有什么关系。

④Datanode的改进

在datanode中,对应于每个Namnode都有相应的线程。每个datanode会去每一个Namenode注册,并且周期性的给所有的Namenode发送心跳及datanode的使用报告。

Datanode还会给Namenode发送其所在的block pool的block report(块报告)。由于有多个Namenode同时存在,因此任何一个Namenode都可以随时动态加入、删除和更新。

⑤多命名空间的管理问题

在一个集群中需要唯一的命名空间还是多个命名空间,核心问题是命名空间中数据的共享和访问的问题。在多命名空间下,可以使用Client Side Mount Table方式做到数据共享和访问,而Client Side Mount Table则是通过新的文件系统viewfs实现的。

⑥Namespace Volume(命名空间卷)

一个Namespace和它的Block Pool合在一起称作Namespace Volume。Namespace Volume是一个独立完整的管理单元。当一个Namenode/Namespace被删除,与之相对应的Block Pool也也被删除。在升级时每一个Namespace Volume也会整体作为一个单元。

⑦ClusterID

在HDFS Federation中添加了Cluster ID用来区分集群中的每个节点。当格式化一个Namenode时,这个ClusterID会自动生成或者手动提供。在格式化同一集群中其他Namenode时会用到这个ClusterID。

⑧HDFS Federation对老版本的HDFS是兼容的

这种兼容性可以使得已有的Namenode配置不需要任何改变继续工作。

关于大数据学习,HDFS Federation联邦机制,以上就为大家做了简单的介绍了。在Hadoop 2.X之后的版本当中,Federation联邦机制算是一个比较明显的改变,在学习当中可以稍加重视。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析挖掘,零基础班本月正在招生中,课程大纲及试学视频可联系客服领取!
热点排行
推荐文章
立即申请>>