理解HDFS高可用性架构

在Hadoop1.x版本的时候,Namenode存在着单点失效的问题。如果namenode失效了,那么所有的基于HDFS的客户端——包括MapReduce作业均无法读,写或列文件,因为namenode是唯一存储元数据与文件到数据块映射的地方。而从一个失效的namenode中恢复的步骤繁多,系统恢复时间太长,也会影响到日常的维护。

Hadoop的2.x版本在HDFS中增加了对高可用性的支持来解决单点失效的问题。

这一实现中简单说就是配置了一对活动-备用namenode。当活动namenode失效的时候,备用namenode就会接管它的任务并开始服务于来自客户端的请求,不会有任何明显中断。

下面我们来看一下HDFS实现高可用性的架构图:

从架构图我们可以看到:

Active NameNode 和 Standby NameNode:两台 NameNode 形成互备,一台处于 Active 状态,为主 NameNode,另外一台处于 Standby 状态,为备 NameNode,只有主 NameNode 才能对外提供读写服务。

主备切换控制器又称故障转移控制器,ZKFailoverController:ZKFailoverController 作为独立的进程运行,对 NameNode 的主备切换进行总体控制。ZKFailoverController 能及时检测到NameNode 的健康状况,在主NameNode 故障时借助 Zookeeper 实现自动的主备选举和切换。

Zookeeper 集群:为主备切换控制器提供主备选举支持。

共享存储系统:共享存储系统是实现NameNode 的高可用最为关键的部分,共享存储系统保存了 NameNode 在运行过程中所产生的 HDFS 的元数据。主NameNode和备NameNode 通过共享存储系统实现元数据同步。在进行主备切换的时候,新的主 NameNode 在确认元数据完全同步之后才能继续对外提供服务。

DataNode 节点:除了通过共享存储系统共享 HDFS 的元数据信息之外,主 NameNode 和备 NameNode 还需要共享 HDFS 的数据块和 DataNode 之间的映射关系。DataNode 会同时向主 NameNode 和备 NameNode 上报数据块的位置信息。

时间: 2024-08-28 23:45:51

理解HDFS高可用性架构的相关文章

Apache hadoop namenode ha和yarn ha ---HDFS高可用性

HDFS高可用性Hadoop HDFS 的两大问题:NameNode单点:虽然有StandbyNameNode,但是冷备方案,达不到高可用--阶段性的合并edits和fsimage,以缩短集群启动的时间--当NameNode失效的时候,Secondary NN并无法立刻提供服务,Secondary NN甚至无法保证数据完整性--如果NN数据丢失的话,在上一次合并后的文件系统的改动会丢失NameNode扩展性问题:单NameNode元数据不可扩展,是整个HDFS集群的瓶颈 Hadoop HDFS高

深入理解openstack网络架构(1)

原文地址: https://blogs.oracle.com/ronen/entry/diving_into_openstack_network_architecture 前言 openstack网络功能强大同时也相对更复杂.本系列文章通过Oracle OpenStack TechPreview介绍openstack的配置,通过各种场景和例子说明openstack各种不同的网络组件.本文的目的在于提供openstack网络架构的全景图并展示各个模块是如何一起协作的.这对openstack的初学者

从内存使用的角度来理解.Net底层架构

.NET的很多概念如果总是从语法的角度或许你永远都不会理解到底为什么他会这么架构,但是如果你换个角度或许这些都会迎刃而解.从底层理解.NET的架构你就离高手更近一步了.本文只是从个人角度来瞅一眼为什么.NET的架构,若有不对的地方,还请各位指正.OK, here we go. C/C++等程序如何使用内存 技术毕竟是一个逐渐积累进步的过程,.NET的推出不乏抄袭其他语言的地方,但是他有自己独特的地方,至于为什么会独特肯定会有语言的过人之处.  1.预备知识 C/C++编译的程序占用的内存分为以下

HDFS HA架构以及源码引导

HA体系架构 相关知识介绍 HDFS master/slave架构,HDFS节点分为NameNode节点和DataNode节点.NameNode存有HDFS的元数据:主要由FSImage和EditLog组成.FSImage保存有文件的目录.分块ID.文件权限等,EditLog保存有对HDFS的操作记录.DataNode存放分块的数据,并采用CRC循环校验方式对本地的数据进行校验,DataNode周期性向NameNode汇报本机的信息. NameNode单点故障:HDFS只有一个NameNode节

Hadoop1.x HDFS系统架构

HDFS系统架构 HDFS以流式数据访问(一次写入,多次读取)模式来存储超大文件,运行于商用硬件集群上.超大文件是指GB,TB,PB的文件.目前已经有存储到PB级别的Hadoop集群了. 计算机字节关系 Hadoop1.x HDFS官方架构图 HDFS中的概念 针对上图来分析HDFS中的各个概念. 数据块 每个磁盘都有数据块的概念,在HDFS中也有数据块的概念,HDFS中的所有文件都是分割成块存储在Datanode上的,每个块默认64M..每个块都有多个副本存储在不同的机器上:默认有3个副本(存

再理解HDFS的存储机制

再理解HDFS的存储机制 1. HDFS开创性地设计出一套文件存储方式,即对文件分割后分别存放: 2. HDFS将要存储的大文件进行分割,分割后存放在既定的存储块(Block)中,并通过预先设定的优化处理,模式对存储的数据进行预处理,从而解决了大文件储存与计算的需求: 3. 一个HDFS集群包括两大部分,即NameNode与DataNode.一般来说,一个集群中会有一个NameNode和多个DataNode共同工作: 4. NameNode是集群的主服务器,主要是用于对HDFS中所有的文件及内容

深入理解Asterisk体系架构

Asterisk和其他传统的PBX完全不同,因为Asterisk的拨号计划以同样的方式处理所有的入局信道(incoming channels). 传统的PBX在逻辑上区分工作站信道(连接电话机)和电话局信道(连接到外部世界).这意味着,你不可能无缝地在一个工作站端口配置一个外部网关.同样,传统PBX也很难实现对离站(off-site,不在座位上或外出办事)资源的访问,比如前台如果外出办事就什么事都做不了,因为她哪怕能打电话回公司,也是不能访问内部资源的. Asterisk在内部不区分工作站信道和

初步掌握HDFS的架构及原理

目录 HDFS 是做什么的 HDFS 从何而来 为什么选择 HDFS 存储数据 HDFS 如何存储数据 HDFS 如何读取文件 HDFS 如何写入文件 HDFS 副本存放策略 Hadoop2.x新特性 1.HDFS 是做什么的 HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上.它所具有的高容错.高可靠性.高可扩展性.高获得性.高吞

HDFS的架构和设计要点

HDFS的架构和设计要点 转 大数据之路 发布于 2012/10/11 23:00 字数 4487 阅读 495 收藏 1 点赞 0 评论 0 撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 虽然本文已经比较旧远了,但是在很多方面还是有一定学习的价值,中文版译者为killme. 一.前提和设计目标 硬件错误是常态,而非异常情况,HDFS可能是有成百上千的server组成,任何一个组件都有可能一直失效,因此错误检测和快速.自动的恢复是HDFS的核心架构目标. 跑在HD