HA 和 Federation

HDFS 1.x 中,由于 NameNode 单点故障和内存受限,在 HDFS 2.x 中,提出了 HA 高可用来解决 NameNode 单点故障和 Federation 联邦机制解决内存受限问题。

HA

在 HDFS 1.x 中只有一个 NameNode 来管理整个集群的元数据信息,一旦 NameNode 挂掉后,整个集群将处于不可用状态,因此为了解决 NameNode 单点故障问题,在 HDFS 2.x 中使用两个 NameNode 来解决,一个 NameNode 是 active 状态,来对外提供服务,另一个 NameNode 是 standby 状态,同步主 NameNode 的元数据信息,这就是 HA (高可用)模型,一旦主 NameNode(active) 挂掉后,备用的 NameNode(standby) 就能立刻切换成主 NameNode,从而继续保证整个集群仍能继续对外提供服务。

但是主 NameNode 挂掉之后,备用的 NameNode 如何能立刻切换成主 NameNode 呢?(要保证和主 NameNode 挂掉之前的状态一样)这就是 HA 要解决的核心问题:如何使两个 NameNode 内存中的元数据信息一致。

在讨论备用 NameNode 如何同步元数据之前,我们先将 NameNode 中管理的元数据信息分成两类,一类是静态的元数据,包括目录树结构、文件大小,文件属主、权限、创建日期等,这些元数据信息是由 Client 和主 NameNode 交互产生的;另一类是动态的元数据,是由 DataNode 通过心跳机制汇报给 NameNode Block 的位置信息,NameNode 本身并不存储 Block 的位置信息(不记录到日志),只是管理。因此,备用的 NameNode 只需同步主 NameNode 的静态元数据信息,而动态的元数据信息由 DataNode 同时向两个 NameNode 通过心跳机制汇报 Block 的位置信息即可。

如何同步主 NameNode 的静态元数据信息呢?
由于主 NameNode 的静态元数据信息是由 Client 和主 NameNode 交互产生的,在 Client 和主 NameNode 发送请求时,主 NameNode 会将这些数据先写到 edits 日志中,然后再返回给 Client 执行结果,因此有以下几种同步数据的方式:
1、使用同步阻塞,主 NameNode 将数据写到 edits 中,然后和备 NameNode 建立 Socket 连接,将数据同步给备用的 NameNode,备 NameNode 执行成功后,再将结果返回给主 NameNode,主 NameNode 再将结果返回给 Client。但是这样做虽然保证了两个 NameNode 的数据一致性,但在同步数据的这段过程中,主 NameNode 一直处于阻塞状态,此时不可对外提供服务,只有等到备 NameNode 将数据同步完成后,将结果返回给 Client 之后,主 NameNode 才可以继续对外提供服务,因此破坏了可用性。
2、使用异步阻塞,主 NameNode 将数据写到 edits 中后,直接将结果返回给 Client,备 NameNode 之后再同步数据并将结果返回给主 NameNode。但是这样会使数据不一致,一旦主 NameNode 挂掉后,数据还没有同步,此时数据将不一致。
3、准备一个 JournalNode 集群,主 NameNode 将数据直接写到 JN(JournalNode)中,由 JN保存 edits 信息,standby 从 JN 中同步元数据信息。一旦主 NameNode 挂掉,只要最终 standby 从 JN 中同步完所有元数据信息,standby 就可以成为主 NameNode。注意这里 standby 是最终一致性而不是强一致性;JN 还可以用 NFS(Network FileSystem)来代替,只不过要解决 NFS 的单点故障。

active 挂掉后两种切换选择:
1、手动切换:通过命令实现主备之间的切换,可以用 HDFS 升级等场合。
2、自动切换:基于 Zookeeper 实现。

基于 Zookeeper 自动切换方案
ZKFC(ZooKeeper Failover Controller):监控 NameNode 健康状态,并向 Zookeeper 注册 NameNode,NameNode 挂掉后,ZKFC 为 NameNode 竞争锁,获得 ZKFC 锁的 NameNode 变为 active。

Federation


HDFS 有两个主要层:

  • 命名空间(Namespace)
    由目录,文件和块组成。它支持所有与命名空间相关的文件系统操作,例如创建,删除,修改和列出文件和目录。一个 NameNode 管理一个 Namespace

  • 块存储服务,包括两部分:
    1、块管理(在 NameNode 中执行)
    通过处理注册和定期心跳来提供 DataNode 集群中的结点数量。
    管理 Block 的位置信息。
    支持块相关操作,如创建,删除,修改和获取块位置。
    管理副本放置,如果 Block 的副本数低于设定值,复制 Block,如果副本数多余就删除多余的块。

    2、存储 - 由 Datanodes 通过在本地文件系统上存储块并允许 读/写 访问来提供。


在 HDFS 1.x 中只有一个 NameNode 来管理整个 DataNode 集群的元数据信息,有可能会导致 NameNode 内存使用过高,因此,在 HDFS 2.x 中诞生了 Federation 联邦机制来解决单个 NameNode 内存受限的问题。

如上图所示,Federation 使用多个 NameNode 来共享集群中的所有 DataNode,每个 NameNode 管理一个 Namespace,一个 Namespace 对应一个块池(Block Pool),Block Pool 是同一个 Namespace 下的 Block 的集合,每个 Block Pool 都是独立管理的,DataNodes 存储集群中所有块池的块。

由以上可以得出:
元数据的存储与管理被分到了多个 NameNode 上,而真实数据的存储还是共用的。
所有 NameNode 是共享集群中所有的 DataNode 的,它们还是在同一个集群内的,也就是说它们的 Cluster ID 是一样的;但每个 NameNode 是独立的,它们都有各自的 Namespace,有各自的 Block Pool,每个 Block Pool ID是不同的。

Federation 的好处:
能把单个 NameNode 的负载分散到多个节点中,在 HDFS 数据规模较大的时候不会也降低 HDFS 的性能。
可以通过多个 Namespace/NameNode 来隔离不同类型的应用,把不同类型应用的 HDFS 元数据的存储和管理分派到不同 NameNode 中。

HA 和 Federation相关推荐

  1. Hadoop详解(五):HDFS HA 和 Federation

    1. Hadoop 2.0 产生背景 Hadoop 1.0中HDFS和MapReduce在高可用.扩展性等方面存在问题 HDFS存在的问题 NameNode单点故障,难以应用于在线场景 HA Name ...

  2. hadoop namenode ha方案

    Hadoop 2.0 NameNode HA和Federation实践 Posted on 2012/12/10 一.背景 天云趋势在2012年下半年开始为某大型国有银行的历史交易数据备份及查询提供基 ...

  3. 第六章-Hadoop优化与发展

    第六章-Hadoop优化与发展 文章目录 第六章-Hadoop优化与发展 Hadoop探讨 HDFS HA HDFS Federation 资源调度框架YARN MapReduce1.0的缺陷 YAR ...

  4. Hadoop 04_Hadoop2.0

    Hadoop1.0的弊端导致人们再次改进技术 Hadoop  2.0产生背景 Hadoop 1.0中HDFS和MapReduce在高可用.扩展性等方面存在问题 HDFS存在的问题(2个) NameNo ...

  5. 分布式文件系统HDFS解析

    分布式文件系统HDFS解析 设计目标 Namenode 和 Datanode HDFS HA HDFS Federation 读写流程 Replication 元数据 副本均衡 元数据磁盘错误 快照 ...

  6. 大数据小白系列——HDFS(1)

    [注1:结尾有大福利!] [注2:想写一个大数据小白系列,介绍大数据生态系统中的主要成员,理解其原理,明白其用途,万一有用呢,对不对.] 大数据是什么?抛开那些高大上但笼统的说法,其实大数据说的是两件 ...

  7. 探秘HDFS —— 发展历史、核心概念、架构、工作机制 (上)| 博文精选

    戳蓝字"CSDN云计算"关注我们哦! 作者 |  Mr-Bruce 转自 | CSDN博客 责编 | 阿秃 几周前,笔者做了一个与HDFS有关的技术分享,以知识普及为目的,主要分享 ...

  8. Hadoop2.6.0学习笔记(八)SPOF解决方案总结

    鲁春利的工作笔记,谁说程序员不能有文艺范? 转载自董的博客,表示感谢. Hadoop 1.0内核主要由两个分支组成:MapReduce和HDFS,众所周知,这两个系统的设计缺陷是单点故障,即MR的Jo ...

  9. Hadoop---(2)HDFS 介绍

    HDFS:Hadoop Distributed File System HDFS概述 HDFS 优点: 高容错性 数据自动保存多个副本(不同的副本放在不同的节点上) 副本丢失后,自动恢复 适合批处理 ...

最新文章

  1. 如何将CSDN文档输出PDF文件?
  2. Java 折半查询_java之折半查询
  3. Servlet3.0新特性
  4. 阿里员工都是这样排查Java问题的,附工具单
  5. Linear Regression Example
  6. 最新版dotnet-cli下的ASP.NET Core和asp.net mvc【RC2尝鲜】
  7. YUV / RGB 格式及快速转换算法
  8. php windowcrlf和unix,文件格式unix与dos转换,CRLF与LF的区别查看
  9. 制备石墨烯流程图_科研人员制备出小扭转角度双层石墨烯
  10. 实例分割和语义分割使用labelme制作的数据集如何转换为voc和coco格式的数据
  11. smarty编译,缓存原理
  12. Java Graphics2D 在图片上画(微信昵称)含有特殊符号(Emoji)的文字
  13. 机器学习-决策树之分类树python实战(以红酒数据集为例)(二)
  14. 计算机网络技术班级16字口号,十六字班级加油口号
  15. 2022年前端面试题整理,持续更新中
  16. 一个电商数据分析师的经验总结
  17. Python爬虫-IP隐藏技术与代理爬取
  18. 22-Mybatis缓存相关设置对一级缓存和二级缓存的影响
  19. linux打开笔记本摄像头
  20. Altium下元器件中英文对照

热门文章

  1. IPADmini上的访问限制打开了,忘记了密码怎么办?
  2. ACWing 2021寒假每日一题题解
  3. “使认识的人 发展成朋友”
  4. agps 位置服务器,agps可用的服务器地址
  5. 每日英语——University Students Rush to Walk Stray Dogs
  6. URI、URL和URN的区别和联系
  7. docker宿主机IP及安装docker安装ping
  8. matlab中scope怎么保存,如何保存Matlab中Scope的图像以及进行编辑
  9. 使用nslookup查看SSL安全证书域名验证信息
  10. Atlas 200dk官方镜像制作