专栏首页长远的EMREMR入门学习之NameNode HA(十四)
原创

EMR入门学习之NameNode HA(十四)

一、HA的原理和架构

NameNode 保存了整个 HDFS 的元数据信息,一旦 NameNode 挂掉,整个 HDFS 就无法访问。为了提高HDFS的高可用性,在 Hadoop2.0 中,HDFS NameNode支持了高可用架构,如下图。

从上图中,我们可以看出 NameNode 的高可用架构主要分为下面几个部分:

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

主备切换控制器 ZKFailoverController:ZKFailoverController 作为独立的进程运行,对 NameNode 的主备切换进行总体控制。ZKFailoverController 能及时检测到 NameNode 的健康状况,在主 NameNode 故障时借助 Zookeeper 实现自动的主备选举和切换,当然 NameNode 目前也支持不依赖于 Zookeeper 的手动主备切换。

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

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

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

二、故障切换

当Active NN故障时,Zookeeper创建的临时节点ActiveStandbyElectorLock将要被删除,其他NN节点注册的Watcher 来监听到该变化,NN节点的ZKFailoverController 会马上再次进入到创建/hadoop-ha/${dfs.nameservices}/ActiveStandbyElectorLock 节点的流程,如果创建成功,这个本来处于 Standby 状态的 NameNode 就选举为主 NameNode 并随后开始切换为 Active 状态。

新当选的Active NN将确保从QJM(Quorum Journal Manager)同步完所有的元数据文件EditLog文件,然后切换为主节点,并向外提供服务。

备注:

  1. Active NN节点通过QJM组件Standby NN同步EditLog文件。
  2. Standby 节点定时checkpoint生成Fsimage文件,并通过http协议传给Active NN节点。

三、验证Failover

在active master节点上,通过jps命令

找到master进程PID,执行kill -9 $PID,然后hdfs haadmin -getServiceState nn1 如下:

则证明已经切换成standby状态

触发 failover 需要的时间通过ha.zookeeper.session-timeout.ms 配置项,默认为 5 秒。

四、冷备份节点secondarynamenode操作

背景

SecondaryNameNode是namenode的冷备份,而namenode的HA高可用才是namenode的热备份。区别是SecondaryNameNode中存储的元数据不是实时的,滞后于namenode主节点。

NameNode主要是用来保存HDFS的元数据信息,比如命名空间信息,块信息、表名字等。当它运行的时候,这些信息是存在内存中的。但是这些信息也可以持久化到磁盘上。

  • fsimage:它是NameNode启动时对整个文件系统的快照。
  • edits:它是在NameNode启动后,对文件系统的改动序列。

由于NameNode合并FsImage和edits只在启动时,edits日志文件会变得很大在一段时间内并运行在繁忙的集群上 ,一个副作用是一个更大的edits文件会使NameNode在下次重新启动时需要更长的时间

Secondary NameNode定期合并FsImage和edits日志文件,并保持edits日志文件大小在一定限度。

命令介绍

hdfs secondarynamenode [-checkpoint [force]] | [-format] | [-geteditsize]

参数

说明

-checkpoint [force]

检查SecondaryNameNode,如果EditLog的大小超过fs.checkpoint.size,则更新EditLog到fsimage上。 如果使用force参数,则忽略目前EditLog大小,直接更新fsimage

-format

在启动时候,格式化本地存储

-geteditsize

打印Namenode上没有合并入fsimage操作命令条数

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • EMR入门学习之Ranger操作使用(十二)

    为了获得集群数据访问控制能力,在创建集群的时候,请勾选ranger组件。在集群初始化完成后,请在组件快捷入口中,找到ranger的快捷访问入口,并登陆range...

    EMR入门学习
  • EMR入门学习之HBase数据迁移(九)

    从上面图中可看出,目前的方案主要有四类,Hadoop层有一类,HBase层有三类。下面分别介绍一下。

    EMR入门学习
  • EMR入门学习之通过SparkSQL操作示例(七)

    导语:Spark 为结构化数据处理引入了一个称为 Spark SQL 的编程模块。它提供了一个称为 DataFrame 的编程抽象,并且可以充当分布式 SQL ...

    EMR入门学习
  • Hadoop之NameNode+ResourceManager高可用原理分析

    我是攻城师
  • Hadoop1和Hadoop2的区别

    NameNode其实是Hadoop的一个目录服务,它包含着整个集群存储的文件的元数据。

    我脱下短袖
  • hadoop中HDFS的NameNode原理

    老梁
  • 自增主键,很多人以为自己懂了,然而...

    drop table t1; create table t1( id int not null auto_increment, name var...

    架构师之路
  • 学界 | 一文综述所有用于推荐系统的深度学习方法

    机器之心
  • 大会 | CCF-GAIR 2018智能安全专场将有哪些大咖现身?内幕走一波

    第三届全球人工智能与机器人峰会(CCF-GAIR)将于6月29日至7月1日在深圳举办。

    AI科技评论
  • CMD命令下修改和查看ip地址,DNS,网关

    明哥的运维笔记

扫码关注云+社区

领取腾讯云代金券