hadoop Federation(联邦)简介

原创 2016年05月31日 20:51:13

Federation即为“联邦”,该特性允许一个HDFS集群中存在多个NameNode同时对外提供服务,这些NameNode分管一部分目录(水平切分),彼此之间相互隔离,但共享底层的DataNode存储资源。

在hadoop1.x中HDFS的架构

文件的存储是放在块上的(Block Storage)
文件的元数据是放在namenode上的,只有一个Namespace(命名空间)。随着HDFS的数据越来越多,单个namenode的资源使用必然会达到上限,而且namenode的负载能力也会越来越高,限制HDFS的性能。

hadoop1.x架构

hdfs主要有两层架构:
1.命名空间(namespace)
由目录、文件、块组成。
支持创建、删除、修改、列举命名空间相关系统的操作。
2.块的存储
管理Block(在datanode中的完成)
通过控制注册以及阶段性的心跳,来保证datanode的正常运行。
运行块的信息报该哦啊,维护块的位置信息。
创建、删除、修改、查询块。
管理副本和副本位置
存储:提供对块的读写(由namenode提供)

单namenode架构的局限性

1.NameSpace(命名空间的限制)
由于Namenode再内存中存储所有的元数据(metadata),因此单个Namenode所能存储的对象(文件+块)数目收到Namenode所在JVM的heap(堆) size的限制。50G的heap能够存储20亿个对象,这20亿个对象支持4000个datanode,12PB的存储(假设文件爱呢平均大小为40MB)。随着数据的飞速增长,存储的需求也随之增长。单个datanode从4T增长到36T,集群的尺寸增长到8000个datanode。存储的需求从12PB增长到大于100PB。(内存的限制)
2.性能的瓶颈
由于是单个Namenode的HDFS架构,因此整个HDFS文件系统的吞吐量受限于单个NameNode的吞吐量。
3.隔离问题
由于HDFS仅有一个Namenode,无法隔离各个程序,因此HDFS上的一个实验程序很可能影响整个HDFS上运行的程序。
4.集群的可用性
在只有一个Namenode的HDFS中,此Namenode的宕机无疑会导致整个集群的不可用。(低可用性)
5.Namespace和Block Management的紧密耦合
Hadoop 1.x在Namenode中的Namespace和Block Management组合的紧密耦合关系会导致如果想要实现另外一套Namenode方案比较困难,而且也限制了其他想要直接使用块存储的应用。

为什么纵向扩展目前的NameNode不可行?

比如将NameNode的Heap空间扩大到512GB。
1.启动问题,启动花费时间太长。(Hadoop 1.x具有50GB Heap Namenode的HDFS启动一次大概需要30分钟到2小时)
2.Namenode在Full GC时,如果发生错误将会导致整个集群宕机。
3.对大JVM Heap进行调试比较困难。优化Namenode的内存使用性价比比较低。

hadoop2.x

增加了Federation的概念

为什么要引入Federation

1.采用Federation的最主要的原因是简单,Federation能够快速的解决大部分单Namenode的问题。
2.Federation是简单鲁棒的设计,由于联邦中各个Namenode之间是相互独立的。Federation整个核心设实现大概用了3.5个月。大部分改变是在Datanode、Config和Tools,而Namenode本身的改动非常少,这样Namenode的原先的鲁棒性不会受到影响。比分布式的Namenode简单,虽然这种事先的扩展性比起真正的分布式的Namenode要小些,但是可以迅速满足需求。
3.Federation良好的向后兼容性,已有的单Namenode的部署配置不需要任何改变就可以继续工作。

Federation架构设计

Federation的架构设计

  • 为了水平扩展Namenode,Federation使用了多个独立的Namenode/NameSpace。这些Namenode之间是联合的,也就是说,他们之间相互独立且不需要互相协调,各自分工,管理自己的区域。分布式的datanode被用作通用的数据块存储存储设备。每个DataNode要向集群中所有的namenode注册,且周期性的向所有namenode发送心跳和块报告,并执行来自所有namenode的命令。
  • 所谓Block Pool(块池)就是属于单个命名空间的一组block(块)。
  • 每一个DataNode为所有的Block Pool存储块。DataNode是一个物理概念,而Block
    Pool是一个重新将block划分的逻辑概念。同一个datanode中可以存着属于多个Block Pool的多个块。
    • Block Pool允许一个命名空间在不通知其他命名空间的情况下为一个新的block创建Block ID。同时一个Namenode失效不会影响其下Datanode为其他Namenode服务。
    • 每个Block Pool内部自治,也就是说各自管理各自的block,不会与其他Block Pool交流。一个Namenode挂掉了,不会影响其他NameNode。
    • 当DN与NN建立联系并开始会话后自动建立Block Pool。每个block都有一个唯一的表示,这个表示我们称之为扩展块ID,在HDFS集群之间都是惟一的,为以后集群归并创造了条件。
    • DN中的数据结构都通过块池ID索引,即DN中的BlockMap,storage等都通过BPID索引。
    • 某个NN上的NameSpace和它对应的Block Pool一起被称为NameSpace Volume。它是管理的基本单位。当一个NN/NS被删除后,其所有DN上对应的Block Pool也会被删除。当集群升级时,每个NameSpace Volume作为一个基本单元进行升级。

Federation HDFS与Hadoop 1.xHDFS的比较

  • Hadoop 1.xHDFS只有一个命名空间(Namespace),它使用全部的块。Federation HDFS中有多个独立的命名空间,并且每一个命名空间使用一个块池。
  • Hadoop 1.xHDFS中只有一组块。而Federation HDFS中有多组独立的块。块池就是属于同一个命名空间的一组块。
  • Hadoop 1.x HDFS由一个Namenode和一组DataNode组成。而Federation HDFS由多个Namenode和一组DataNode,每一个datanode回味多个块池存储块。

datanode改进

  • 在datanode中,对应于每个Namenode都有一条相应的县城
  • 每个DN回去每一个NN注册,并且周期性的给所有的NN发送心跳及DN的使用报告。
  • DN还会给NN发送其所在的块池的快报告
  • 由于有多个NN同时存在,因此任何一个NN都可以随时动态加入、删除和更新。

Namespace Volume(命名空间卷)

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

ClusterId

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

Federation的主要优点

1.namespace是一个可扩展的,相当于namenode是一个分布式的。
2.性能提升了,操作不会由于一个namenode的吞吐量收到限制。
3.隔离性。每个namenode只管理一部分文件 。不同用户可以被namespace隔离。


感谢云帆大数据梦琪老师的讲解。

HDFS Federation机制

前言在上一篇文章HDFS自定义小文件分析功能中,提到了NameNod内存空间使用过高的问题,紧接着提到了其中一个解决方案,就是HDFS Federation.说来也是挺奇怪的,HDFS的Federat...
  • Androidlushangderen
  • Androidlushangderen
  • 2016年08月06日 22:41
  • 3720

为已存在的Hadoop集群配置HDFS Federation

一、实验目的 1. 现有Hadoop集群只有一个NameNode,现在要增加一个NameNode。 2. 两个NameNode构成HDFS Federation。 3. 不重启现有集群,不影响数...
  • wzy0623
  • wzy0623
  • 2016年05月06日 09:59
  • 4377

HDFS Federation(HDFS 联邦)(Hadoop2.3)

最早接触Federation这个词还是第一家公司用的DB2联邦数据库。 第一代Hadoop HDFS:   结构上由一个namenode和众多datanode组成。 ...
  • Gamer_gyt
  • Gamer_gyt
  • 2015年11月26日 00:23
  • 2622

HDFS 联盟(HDFS Federation)

背景 HDFS主要包括两层: Namespace 由目录,文件和块组成 支持所有文件系统操作包括增加,删除,修改和列出文件和目录 Block Storage Serv...
  • shubingzhuoxue
  • shubingzhuoxue
  • 2015年11月27日 16:28
  • 1249

如何配置Hadoop2.0HDFS的HA以及联邦使用QJM

配置过程详述       大家从官网下载的apache hadoop2.2.0的代码是32位操作系统下编译的,不能使用64位的jdk。我下面部署的hadoop代码是自己的64位机器上重新编...
  • u011955252
  • u011955252
  • 2016年01月19日 14:36
  • 1149

hadoop2.7.3在集群中配置多个namenode(federation cluster)

hadoop2.7.3在集群中配置多个namenode 首先需要说明的是,在集群中配置多个namenode和在集群中使用secondaryNamenode是完完全全的两码事。具体是如何区分的,我之后会...
  • wild46cat
  • wild46cat
  • 2016年12月01日 16:56
  • 2587

【Hadoop】HDFS笔记(二):HDFS的HA机制和Federation机制

HA解决了HDFS的NameNode的单点问题; Federation解决了整个HDFS集群中只有一个名字空间,并且只有单独的一个NameNode管理所有DataNode的问题。   一、HA机...
  • DianaCody
  • DianaCody
  • 2014年09月22日 19:59
  • 2085

Hadoop2.6 全分布式安装,配置了联邦

Hadoop全分布式安装2.6   共4台机器 hadoop01  namenode             zookeeper                  zkfc(zookeeper fai...
  • q383700092
  • q383700092
  • 2016年03月29日 17:26
  • 582

配置Hadoop2.0HDFS的HA以及联邦使用QJM

HA和联邦解释         相比于Hadoop1.0,Hadoop 2.0中的HDFS增加了两个重大特性,HA和Federaion。HA即为High Availability,用于解决NameN...
  • zmx729618
  • zmx729618
  • 2016年10月09日 15:16
  • 919

HDFS中namenode的HA高可用机制

一、HDFS namenode HA需要实现:HA主备切换,同步元数据,防止脑裂 主备切换: 1. hadoop内部为每个namenode进程另外配置一个进程,叫DFSZKFailoverCo...
  • liuwei900618
  • liuwei900618
  • 2016年09月22日 21:07
  • 1291
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hadoop Federation(联邦)简介
举报原因:
原因补充:

(最多只允许输入30个字)