Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >详解Hadoop HA 如何运作

详解Hadoop HA 如何运作

原创
作者头像
挖掘大数据
发布于 2018-01-16 08:07:43
发布于 2018-01-16 08:07:43
1.6K00
代码可运行
举报
文章被收录于专栏:挖掘大数据挖掘大数据
运行总次数:0
代码可运行

导语

最近对于Hadoop技术有比较大的兴趣,但由于接触时间不长,很多技术细节认识不够,作为一个技术人员,本着追根溯源的精神,还是有必要吃透,也为自己的工作沉淀一些经验总结。网上关于Hadoop HA的资料多集中于怎么搭建HA,对于HA为什么要这么做描述甚少,所以本文对于HA是如何搭建的暂不介绍,主要是介绍HA是怎么运作,QJM又是怎么发挥功效的。

一、Hadoop 系统架构

1.1 Hadoop1.x和Hadoop2.x 架构

在介绍HA之前,我们先来看下Hadoop的系统架构,这对于理解HA是至关重要的。Hadoop 1.x之前,其官方架构如图1所示:

[ 图1.Hadoop 1.x架构图 ]

从图中可看出,1.x版本之前只有一个Namenode,所有元数据由惟一的Namenode负责管理,可想而之当这个NameNode挂掉时整个集群基本也就不可用。 Hadoop 2.x的架构与1.x有什么区别呢。我们来看下2.x的架构:

[ 图2.Hadoop 2.x架构图 ]

2.x版本中,HDFS架构解决了单点故障问题,即引入双NameNode架构,同时借助共享存储系统来进行元数据的同步,共享存储系统类型一般有几类,如:Shared NAS+NFS、BookKeeper、BackupNode 和 Quorum Journal Manager(QJM),上图中用的是QJM作为共享存储组件,通过搭建奇数结点的JournalNode实现主备NameNode元数据操作信息同步。Hadoop的元数据包括哪些信息呢,下面介绍下关于元数据方面的知识。

1.2 Hadoop 2.x元数据

Hadoop的元数据主要作用是维护HDFS文件系统中文件和目录相关信息。元数据的存储形式主要有3类:内存镜像、磁盘镜像(FSImage)、日志(EditLog)。在Namenode启动时,会加载磁盘镜像到内存中以进行元数据的管理,存储在NameNode内存;磁盘镜像是某一时刻HDFS的元数据信息的快照,包含所有相关Datanode节点文件块映射关系和命名空间(Namespace)信息,存储在NameNode本地文件系统;日志文件记录client发起的每一次操作信息,即保存所有对文件系统的修改操作,用于定期和磁盘镜像合并成最新镜像,保证NameNode元数据信息的完整,存储在NameNode本地和共享存储系统(QJM)中。

如下所示为NameNode本地的EditLog和FSImage文件格式,EditLog文件有两种状态: inprocess和finalized, inprocess表示正在写的日志文件,文件名形式:editsinprocess[start-txid],finalized表示已经写完的日志文件,文件名形式:edits[start-txid][end-txid]; FSImage文件也有两种状态, finalized和checkpoint, finalized表示已经持久化磁盘的文件,文件名形式: fsimage_[end-txid], checkpoint表示合并中的fsimage, 2.x版本checkpoint过程在Standby Namenode(SNN)上进行,SNN会定期将本地FSImage和从QJM上拉回的ANN的EditLog进行合并,合并完后再通过RPC传回ANN。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data/hbase/runtime/namespace
├── current
│ ├── VERSION
│ ├── edits_0000000003619794209-0000000003619813881
│ ├── edits_0000000003619813882-0000000003619831665
│ ├── edits_0000000003619831666-0000000003619852153
│ ├── edits_0000000003619852154-0000000003619871027
│ ├── edits_0000000003619871028-0000000003619880765
│ ├── edits_0000000003619880766-0000000003620060869
│ ├── edits_inprogress_0000000003620060870
│ ├── fsimage_0000000003618370058
│ ├── fsimage_0000000003618370058.md5
│ ├── fsimage_0000000003620060869
│ ├── fsimage_0000000003620060869.md5
│ └── seen_txid
└── in_use.lock

上面所示的还有一个很重要的文件就是seen_txid,保存的是一个事务ID,这个事务ID是EditLog最新的一个结束事务id,当NameNode重启时,会顺序遍历从edits_0000000000000000001到seen_txid所记录的txid所在的日志文件,进行元数据恢复,如果该文件丢失或记录的事务ID有问题,会造成数据块信息的丢失。

HA其本质上就是要保证主备NN元数据是保持一致的,即保证fsimage和editlog在备NN上也是完整的。元数据的同步很大程度取决于EditLog的同步,而这步骤的关键就是共享文件系统,下面开始介绍一下关于QJM共享存储机制。

二、QJM原理

2.1 QJM背景

在QJM出现之前,为保障集群的HA,设计的是一种基于NAS的共享存储机制,即主备NameNode间通过NAS进行元数据的同步。该方案有什么缺点呢,主要有以下几点:

  • 定制化硬件设备:必须是支持NAS的设备才能满足需求
  • 复杂化部署过程:在部署好NameNode后,还必须额外配置NFS挂载、定制隔离脚本,部署易出错
  • 简陋化NFS客户端:Bug多,部署配置易出错,导致HA不可用

所以对于替代方案而言,也必须解决NAS相关缺陷才能让HA更好服务。即设备无须定制化,普通设备即可配置HA,部署简单,相关配置集成到系统本身,无需自己定制,同时元数据的同步也必须保证完全HA,不会因client问题而同步失败。

2.2 QJM原理

2.2.1 QJM介绍

QJM全称是Quorum Journal Manager, 由JournalNode(JN)组成,一般是奇数点结点组成。每个JournalNode对外有一个简易的RPC接口,以供NameNode读写EditLog到JN本地磁盘。当写EditLog时,NameNode会同时向所有JournalNode并行写文件,只要有N/2+1结点写成功则认为此次写操作成功,遵循Paxos协议。其内部实现框架如下:

[ 图3.QJM内部实现框架 ]

从图中可看出,主要是涉及EditLog的不同管理对象和输出流对象,每种对象发挥着各自不同作用:

  • FSEditLog:所有EditLog操作的入口
  • JournalSet: 集成本地磁盘和JournalNode集群上EditLog的相关操作
  • FileJournalManager: 实现本地磁盘上 EditLog 操作
  • QuorumJournalManager: 实现JournalNode 集群EditLog操作
  • AsyncLoggerSet: 实现JournalNode 集群 EditLog 的写操作集合
  • AsyncLogger:发起RPC请求到JN,执行具体的日志同步功能
  • JournalNodeRpcServer:运行在 JournalNode 节点进程中的 RPC 服务,接收 NameNode 端的 AsyncLogger 的 RPC 请求。
  • JournalNodeHttpServer:运行在 JournalNode 节点进程中的 Http 服务,用于接收处于 Standby 状态的 NameNode 和其它 JournalNode 的同步 EditLog 文件流的请求。

下面具体分析下QJM的读写过程。

2.2.2 QJM 写过程分析

上面提到EditLog,NameNode会把EditLog同时写到本地和JournalNode。写本地由配置中参数dfs.namenode.name.dir控制,写JN由参数dfs.namenode.shared.edits.dir控制,在写EditLog时会由两个不同的输出流来控制日志的写过程,分别为:EditLogFileOutputStream(本地输出流)和QuorumOutputStream(JN输出流)。写EditLog也不是直接写到磁盘中,为保证高吞吐,NameNode会分别为EditLogFileOutputStream和QuorumOutputStream定义两个同等大小的Buffer,大小大概是512KB,一个写Buffer(buffCurrent),一个同步Buffer(buffReady),这样可以一边写一边同步,所以EditLog是一个异步写过程,同时也是一个批量同步的过程,避免每写一笔就同步一次日志。

这个是怎么实现边写边同步的呢,这中间其实是有一个缓冲区交换的过程,即bufferCurrent和buffReady在达到条件时会触发交换,如bufferCurrent在达到阈值同时bufferReady的数据又同步完时,bufferReady数据会清空,同时会将bufferCurrent指针指向bufferReady以满足继续写,另外会将bufferReady指针指向bufferCurrent以提供继续同步EditLog。上面过程用流程图就是表示如下:

[ 图4.EditLog输出流程图 ]

这里有一个问题,既然EditLog是异步写的,怎么保证缓存中的数据不丢呢,其实这里虽然是异步,但实际所有日志都需要通过logSync同步成功后才会给client返回成功码,假设某一时刻NameNode不可用了,其内存中的数据其实是未同步成功的,所以client会认为这部分数据未写成功。

第二个问题是,EditLog怎么在多个JN上保持一致的呢。下面展开介绍。

1.隔离双写:

在ANN每次同步EditLog到JN时,先要保证不会有两个NN同时向JN同步日志。这个隔离是怎么做的。这里面涉及一个很重要的概念Epoch Numbers,很多分布式系统都会用到。Epoch有如下几个特性:

  • 当NN成为活动结点时,其会被赋予一个EpochNumber
  • 每个EpochNumber是惟一的,不会有相同的EpochNumber出现
  • EpochNumber有严格顺序保证,每次NN切换后其EpochNumber都会自增1,后面生成的EpochNumber都会大于前面的EpochNumber

QJM是怎么保证上面特性的呢,主要有以下几点:

  • 第一步,在对EditLog作任何修改前,QuorumJournalManager(NameNode上)必须被赋予一个EpochNumber
  • 第二步, QJM把自己的EpochNumber通过newEpoch(N)的方式发送给所有JN结点
  • 第三步, 当JN收到newEpoch请求后,会把QJM的EpochNumber保存到一个lastPromisedEpoch变量中并持久化到本地磁盘
  • 第四步, ANN同步日志到JN的任何RPC请求(如logEdits(),startLogSegment()等),都必须包含ANN的EpochNumber
  • 第五步,JN在收到RPC请求后,会将之与lastPromisedEpoch对比,如果请求的EpochNumber小于lastPromisedEpoch,将会拒绝同步请求,反之,会接受同步请求并将请求的EpochNumber保存在lastPromisedEpoch

这样就能保证主备NN发生切换时,就算同时向JN同步日志,也能保证日志不会写乱,因为发生切换后,原ANN的EpochNumber肯定是小于新ANN的EpochNumber,所以原ANN向JN的发起的所有同步请求都会拒绝,实现隔离功能,防止了脑裂。

2. 恢复in-process日志

为什么要这步呢,如果在写过程中写失败了,可能各个JN上的EditLog的长度都不一样,需要在开始写之前将不一致的部分恢复。恢复机制如下:

1 ANN先向所有JN发送getJournalState请求; 2 JN会向ANN返回一个Epoch(lastPromisedEpoch); 3 ANN收到大多数JN的Epoch后,选择最大的一个并加1作为当前新的Epoch,然后向JN发送新的newEpoch请求,把新的Epoch下发给JN; 4 JN收到新的Epoch后,和lastPromisedEpoch对比,若更大则更新到本地并返回给ANN自己本地一个最新EditLogSegment起始事务Id,若小则返回NN错误; 5 ANN收到多数JN成功响应后认为Epoch生成成功,开始准备日志恢复; 6 ANN会选择一个最大的EditLogSegment事务ID作为恢复依据,然后向JN发送prepareRecovery; RPC请求,对应Paxos协议2p阶段的Phase1a,若多数JN响应prepareRecovery成功,则可认为Phase1a阶段成功; 7 ANN选择进行同步的数据源,向JN发送acceptRecovery RPC请求,并将数据源作为参数传给JN。 8 JN收到acceptRecovery请求后,会从JournalNodeHttpServer下载EditLogSegment并替换到本地保存的EditLogSegment,对应Paxos协议2p阶段的Phase1b,完成后返回ANN请求成功状态。 9 ANN收到多数JN的响应成功请求后,向JN发送finalizeLogSegment请求,表示数据恢复完成,这样之后所有JN上的日志就能保持一致。 数据恢复后,ANN上会将本地处于in-process状态的日志更名为finalized状态的日志,形式如edits[start-txid][stop-txid]。

3.日志同步

这个步骤上面有介绍到关于日志从ANN同步到JN的过程,具体如下:

1 执行logSync过程,将ANN上的日志数据放到缓存队列中 2 将缓存中数据同步到JN,JN有相应线程来处理logEdits请求 3 JN收到数据后,先确认EpochNumber是否合法,再验证日志事务ID是否正常,将日志刷到磁盘,返回ANN成功码 4 ANN收到JN成功请求后返回client写成功标识,若失败则抛出异常

通过上面一些步骤,日志能保证成功同步到JN,同时保证JN日志的一致性,进而备NN上同步日志时也能保证数据是完整和一致的。

2.2.3 QJM读过程分析

这个读过程是面向备NN(SNN)的,SNN定期检查JournalNode上EditLog的变化,然后将EditLog拉回本地。SNN上有一个线程StandbyCheckpointer,会定期将SNN上FSImage和EditLog合并,并将合并完的FSImage文件传回主NN(ANN)上,就是所说的Checkpointing过程。下面我们来看下Checkpointing是怎么进行的。

在2.x版本中,已经将原来的由SecondaryNameNode主导的Checkpointing替换成由SNN主导的Checkpointing。下面是一个CheckPoint的流向图:

[ 图5.Checkpointing流向图 ]

总的来说,就是在SNN上先检查前置条件,前置条件包括两个方面:距离上次Checkpointing的时间间隔和EditLog中事务条数限制。前置条件任何一个满足都会触发Checkpointing,然后SNN会将最新的NameSpace数据即SNN内存中当前状态的元数据保存到一个临时的fsimage文件( fsimage.ckpt)然后比对从JN上拉到的最新EditLog的事务ID,将fsimage.ckpt_中没有,EditLog中有的所有元数据修改记录合并一起并重命名成新的fsimage文件,同时生成一个md5文件。将最新的fsimage再通过HTTP请求传回ANN。通过定期合并fsimage有什么好处呢,主要有以下几个方面:

  • 可以避免EditLog越来越大,合并成新fsimage后可以将老的EditLog删除
  • 可以避免主NN(ANN)压力过大,合并是在SNN上进行的
  • 可以保证fsimage保存的是一份最新的元数据,故障恢复时避免数据丢失

三、主备切换机制

要完成HA,除了元数据同步外,还得有一个完备的主备切换机制,Hadoop的主备选举依赖于ZooKeeper。下面是主备切换的状态图:

[ 图6.Failover流程图 ]

从图中可以看出,整个切换过程是由ZKFC来控制的,具体又可分为HealthMonitor、ZKFailoverController和ActiveStandbyElector三个组件。

  • ZKFailoverController: 是HealthMontior和ActiveStandbyElector的母体,执行具体的切换操作
  • HealthMonitor: 监控NameNode健康状态,若状态异常会触发回调ZKFailoverController进行自动主备切换
  • ActiveStandbyElector: 通知ZK执行主备选举,若ZK完成变更,会回调ZKFailoverController相应方法进行主备状态切换

在故障切换期间,ZooKeeper主要是发挥什么作用呢,有以下几点:

  • 失败保护:集群中每一个NameNode都会在ZooKeeper维护一个持久的session,机器一旦挂掉,session就会过期,故障迁移就会触发
  • Active NameNode选择:ZooKeeper有一个选择ActiveNN的机制,一旦现有的ANN宕机,其他NameNode可以向ZooKeeper申请排他成为下一个Active节点
  • 防脑裂: ZK本身是强一致和高可用的,可以用它来保证同一时刻只有一个活动节点

那在哪些场景会触发自动切换呢,从HDFS-2185中归纳了以下几个场景:

  • ActiveNN JVM奔溃:ANN上HealthMonitor状态上报会有连接超时异常,HealthMonitor会触发状态迁移至SERVICE_NOT_RESPONDING, 然后ANN上的ZKFC会退出选举,SNN上的ZKFC会获得Active Lock, 作相应隔离后成为Active结点。
  • ActiveNN JVM冻结:这个是JVM没奔溃,但也无法响应,同奔溃一样,会触发自动切换。
  • ActiveNN 机器宕机:此时ActiveStandbyElector会失去同ZK的心跳,会话超时,SNN上的ZKFC会通知ZK删除ANN的活动锁,作相应隔离后完成主备切换。
  • ActiveNN 健康状态异常: 此时HealthMonitor会收到一个HealthCheckFailedException,并触发自动切换。
  • Active ZKFC奔溃:虽然ZKFC是一个独立的进程,但因设计简单也容易出问题,一旦ZKFC进程挂掉,虽然此时NameNode是OK的,但系统也认为需要切换,此时SNN会发一个请求到ANN要求ANN放弃主结点位置,ANN收到请求后,会触发完成自动切换。
  • ZooKeeper奔溃:如果ZK奔溃了,主备NN上的ZKFC都会感知断连,此时主备NN会进入一个NeutralMode模式,同时不改变主备NN的状态,继续发挥作用,只不过此时,如果ANN也故障了,那集群无法发挥Failover, 也就不可用了,所以对于此种场景,ZK一般是不允许挂掉到多台,至少要有N/2+1台保持服务才算是安全的。

五、总结

上面介绍了下关于HadoopHA机制,归纳起来主要是两块:元数据同步和主备选举。元数据同步依赖于QJM共享存储,主备选举依赖于ZKFC和Zookeeper。整个过程还是比较复杂的,如果能理解Paxos协议,那也能更好的理解这个。希望这篇文章能让大家更深入了解关于HA方面的知识。

六、参考文献

[1.] http://zh.hortonworks.com/blog/hdfs-metadata-directories-explained/ [2.] https://blog.cloudera.com/blog/2014/03/a-guide-to-checkpointing-in-hadoop/ [3.] https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-name-node/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
HDFS HA架构以及源码引导
        HDFS master/slave架构,HDFS节点分为NameNode节点和DataNode节点。NameNode存有HDFS的元数据:主要由FSImage和EditLog组成。FSImage保存有文件的目录、分块ID、文件权限等,EditLog保存有对HDFS的操作记录。DataNode存放分块的数据,并采用CRC循环校验方式对本地的数据进行校验,DataNode周期性向NameNode汇报本机的信息。
jiewuyou
2022/09/29
2930
HDFS HA架构以及源码引导
NameNode HA:如何防止集群脑裂现象
转自:http://www.cnblogs.com/shenh062326/p/3870219.html 作者:南国故人
ZONGLYN
2019/08/08
2.9K1
Hadoop HA 完全分布式工作机制
在 Hadoop 1.x 版本中,是没有 HA 实现方式的,它只有可以看做是冷备份的 SecondaryNameNode 来起到备份作用,因为 2NN 能够协助 NameNode 做一些检查点的工作,能同步磁盘镜像(FSImage)和日志(EditLog). 当 NN 挂掉,2NN 是没有办法立即启动起来继续为集群服务的,需要用手工的方式启动 2NN,这显然会产生服务中断,对业务连续性产生较大影响。
数人之道
2022/01/07
5720
Hadoop HA 完全分布式工作机制
带你快速认识NamenodeHA和Yarn HA,为搭建HadoopHA集群打下基础!
本篇博客,博主主要为大家介绍的是什么是NamenodeHA 和 Yarn HA。并在下一篇博客中为大家带来关于搭建HadoopHA集群的详细步骤!
大数据梦想家
2021/01/27
7590
带你快速认识NamenodeHA和Yarn HA,为搭建HadoopHA集群打下基础!
一文搞定Journal Node原理
hdfs的HA机制,具体来说可以分为两部分,一部分是基于zkfc、zookeeper完成nn之间的选主;而另一部分则是nn之间的元数据共享与同步。
陈猿解码
2023/02/28
1.3K0
一文搞定Journal Node原理
EMR入门学习之NameNode HA(十四)
NameNode 保存了整个 HDFS 的元数据信息,一旦 NameNode 挂掉,整个 HDFS 就无法访问。为了提高HDFS的高可用性,在 Hadoop2.0 中,HDFS NameNode支持了高可用架构,如下图。
披荆斩棘
2019/11/22
9150
大数据面试题(一):HDFS核心高频面试题
1)客户端向namenode请求上传文件,namenode检查目标文件是否已存在,父目录是否存在。
Lansonli
2022/12/12
5570
大数据面试题(一):HDFS核心高频面试题
NameNode 高HA
NameNode 保存了整个 HDFS 的元数据信息,一旦 NameNode 挂掉,整个 HDFS 就无法访问。为了提高HDFS的高可用性,在 Hadoop2.0 中,HDFS NameNode支持了高可用架构,如下图。
洛杉矶
2019/03/18
12.7K0
NameNode 高HA
2021年大数据Hadoop(十四):HDFS的高可用机制
在Hadoop 中,NameNode 所处的位置是非常重要的,整个HDFS文件系统的元数据信息都由NameNode 来管理,NameNode的可用性直接决定了Hadoop 的可用性,一旦NameNode进程不能工作了,就会影响整个集群的正常使用。
Lansonli
2021/10/11
1.9K0
集群JournalNode服务重启导致NameNode挂掉分析
在我们的集群中修改了JournalNode服务的配置后需要重启时配置生效,在进行重启操作时导致NameNode服务挂掉,具体操作步骤如下:
Fayson
2018/08/03
1.4K0
集群JournalNode服务重启导致NameNode挂掉分析
深入理解HDFS 一
Hadoop的发展至今已经有十余年的历史了,其核心设计HDFS和MapReduce,分别解决了海量数据的存储和计算这两个问题。
soundhearer
2020/10/29
9160
深入理解HDFS 一
深入浅出学大数据(五)Hadoop再探讨High Availability(HA)集群搭建及YARN原理介绍
此系列主要为我的学弟学妹们所创作,在某些方面可能偏基础。如果读者感觉较为简单,还望见谅!如果文中出现错误,欢迎指正~ 本文主要介绍了Hadoop再探讨High Availability(HA)及YARN原理介绍,除此之外还有High Availability(HA)集群搭建的具体搭建过程。
不温卜火
2021/11/24
1.3K0
深入浅出学大数据(五)Hadoop再探讨High Availability(HA)集群搭建及YARN原理介绍
Hadoop2.0的HA介绍
前一篇文章介绍了Hadoop2.0(hadoop2.0架构,具体版本是hadoop2.2.0)的安装和最基本的配置(见 http://www.linuxidc.com/Linux/2014-05/101173.htm ),并没有配置HA(High Avalability,高可用性),接下来的文章中会介绍hadoop2.0HA的配置。在介绍hadoop2.0的HA配置之前,本文先介绍hadoop2.0HA的基本原理和2种方式。
星哥玩云
2022/07/01
4230
Hadoop2.0的HA介绍
HDFS的SecondaryNameNode作用,你别答错
这是道经典的基础面试题,笔者问过面试者很多次(当然也被面试官问过很多次)。从印象看,大约有一半的被面试者无法正确作答,给出的答案甚至有“不就是NameNode的热备嘛”。本文来简单聊聊相关的知识,为节省篇幅,将SecondaryNameNode简称SNN,NameNode简称NN。
王知无-import_bigdata
2020/04/17
1.3K0
Hadoop高可用(HA)集群搭建
HA:High Available,高可用 在Hadoop 2.0之前,在HDFS集群中NameNode存在单点故障 (SPOF:A Single Point of Failure) 对于只有一个NameNode的集群,如果NameNode机器出现故障(比如宕机或是软件、硬件升级),那么整个集群将无法使用,直到NameNode重新启动
CoderJed
2018/09/13
4.4K0
Hadoop高可用(HA)集群搭建
Hadoop重点难点:HDFS读写/NN/2NN/DN
NameNode在内存中保存着整个文件系统的名字空间和文件数据块的地址映射(Blockmap)。如果NameNode宕机,那么整个集群就瘫痪了。
大数据真好玩
2021/10/12
1.2K0
Hadoop重点难点:HDFS读写/NN/2NN/DN
Hadoop2.0的HA介绍
前一篇文章介绍了Hadoop2.0(hadoop2.0架构,具体版本是hadoop2.2.0)的安装和最基本的配置(见 http://www.linuxidc.com/Linux/2014-05/101173.htm ),并没有配置HA(High Avalability,高可用性),接下来的文章中会介绍hadoop2.0HA的配置。在介绍hadoop2.0的HA配置之前,本文先介绍hadoop2.0HA的基本原理和2种方式。 1 概述 在hadoop2.0之前,namenode只有一个,存在单点问题(虽
小小科
2018/05/02
9750
Hadoop2.0的HA介绍
【九】Hadoop3.3.4HA高可用配置
在 Hadoop 生态系统中,NameNode 是文件系统的中心管理器,负责管理 HDFS 的元数据。为了避免单点故障(Single Point of Failure,SPOF),Hadoop 引入了 NameNode 的高可用性架构。主要组件包括:
火之高兴
2024/08/04
2510
精选Hadoop高频面试题17道,附答案详细解析(好文收藏)
hadoop中常问的就三块,第一:分布式存储(HDFS);第二:分布式计算框架(MapReduce);第三:资源调度框架(YARN)。
五分钟学大数据
2021/05/27
1.2K0
提高hadoop的可靠性(下)
在Hadoop集群中,Namenode的可用性直接影响了Hadoop整个集群的可用性,目前有很多可选方案,基本上以NFS+zookeeper实现,但是仍然存在单点,因此官方引入了QJM解决方案。这里以Hadoop2.6.3为例,来看下如何解决数据单点问题。 首先先来了解以下QJM实现的原理,NameNode节点存储数据包括edits_* 的事务文件以及fsimage_*的内存镜像,同步只需要事务文件,因此QJM采用JournalNode来同步记录主NameNode的事务,并同步到
刀刀老高
2018/04/11
6320
相关推荐
HDFS HA架构以及源码引导
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验