HA工作机制
HA工作机制
HA:高可用(7*24小时不中断服务)
主要的HA是针对集群的master节点的,即namenode和resourcemanager,毕竟DataNode挂掉之后影响 不是特别大,重启就好了。
HDFS的HA
HDFS HA功能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。
两个namenode,暂且将其标记为active和standby,active为当前工作的机器,standby为替补,直接让二者之间直接通过网络通讯同步数据不太稳定,因为网络一旦断了,另一边节点就数据不完整。因此找到一个可靠的第三方,两个namenode都可以访问,因此效率高。
这样Active一直往这个第三方写数据,standby从这个第三方读数据就可以了。
我们想要实现的就是,如果active挂掉了,自动通知standby来顶替ative去运行。那么这个时候又需要一个可靠的第三方来负责通知,即ZooKeeper。
首先active在ZooKeeper中注册一个临时节点,另一个名称节点(standby)在ZooKeeper中看到ZooKeeper中有active的这个临时节点后,知道自己不能再是active节点了,所以现在他自己的角色就是standby,但是它会在ZooKeeper中注册监听,它会时刻监听着active这个节点,一旦active节点挂掉,ZooKeeper中注册的active就会消失,由于standby注册了监听,所以ZooKeeper会在第一时间通知standby节点,“告知”其active节点挂掉了。然后standby节点就“上位”成为active主namenode节点。
其中active其实并不是直接和ZooKeeper沟通,而是通过一个新进程——ZooKeeper客户端:ZooKeeper Failover controller(Zkfc)来进行沟通。Zkfc负责把主节点namenode的数据(状态信息)写入到ZooKeeper中。
那直接让namenode和ZooKeeper直接通信就好,为什么要加个Zkfc来负责namenode与ZooKeeper的通信呢?因为HA高可用是在hadoop2.x之后出现的,这个时候Hadoop代码经过多年的迭代,有着较高的健壮性,而如果让namenode直接和ZooKeeper通信,需要去修改hadoop的代码,这样会降低hadoop代码的健壮性,所以为了不破坏hadoop代码的健壮性,在hadoop2.x的时代,就单独写了个进程:ZooKeeper Failover controller(Zkfc),但是这个进程本质上就是把原来打算让namenode自己完成的事情单独写成了一个进程,所以Zkfc这个进程是和namenode绑定的,换句话说就是,有namenode的地方就有Zkfc。Zkfc维持着active这个namenode和ZooKeeper之间的会话。另一边standby同理,也是通过另一个Zkfc来维持着standby和ZooKeeper之间的通信。
具体工作过程为:
如果Zkfc检测到active挂掉,Zkfc会把ZooKeeper中的临时节点释放掉,另外一边standby的Zkfc进程从ZooKeeper服务端接收到active挂掉的通知后,首先强行杀死之前的active节点(ssh kill -9 namenode节点号或者调用用户自定义的脚本),以防脑裂,然后将standby节点变为active节点。
说完ZooKeeper的通知机制之后,那么,active和standby读写数据的第三方是什么呢?
Quorum Journal Manager
大多数日志管理
其管理的就是hadoop的元数据,即edits.log
QJM也是一个集群,该集群也是单数台机器,写数据的时候也进行投票,其管理的是edits.log这个元数据。
和ZooKeeper集群类似,QJM集群中只要有一半以上的机器就不会挂。
namenode向QJM写数据的流程:
来一条写请求,然后写到edits里面,然后active会把edits写到
QJM集群里面,QJM这边同意写入,active才会将edits写入,(这里注意:QJM为了提高效率,只要超过半数的机器同意即可写入,这样以来QJM集群中不必所有机器都要求同步。)如果没有HA的时候,hadoop集群中2nn帮助namenode整合Fsimage,如果有了HA之后,就不需要2nn了,standby节点在监听active节点的同时,standby实时将active写入QJM集群中的edits读出到自己的内存中,这样保证了active一旦挂掉,standby这个节点可以随时顶上去接替active继续工作,然后standby定期把内存中的edits合成Fsimage,然后发送给active,所以说standby这个节点比2nn功能更强大,可以代替2nn。
HA工作机制的更多相关文章
- HA工作机制及namenode向QJM写数据流程
HA工作机制 (配置HA高可用传送门:https://www.cnblogs.com/zhqin/p/11904317.html) HA:高可用(7*24小时不中断服务) 主要的HA是针对集群的mas ...
- 1 weekend110的NN元数据管理机制 + NN工作机制 + DN工作原理
第一天的笔记,是伪分布hadoop集群搭建, 后面是hadoop Ha的分布式集群搭建 第一天,是HDFS的shell操作 NN工作机制 里面是二进制 DN工作原理 上传完了之后,在hdfs的虚拟路径 ...
- OpenStack云平台的网络模式及其工作机制
网络,是OpenStack的部署中最容易出问题的,也是其结构中难以理清的部分.经常收到关于OneStack部署网络方面问题和OpenStack网络结构问题的邮件.下面根据自己的理解,谈一谈OpenSt ...
- Hadoop的namenode的管理机制,工作机制和datanode的工作原理
HDFS前言: 1) 设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: 2)在大数据系统中作用: 为各类分布式运算框架(如:mapr ...
- HDFS-HA高可用工作机制
1.HDFS-HA概述 1)所谓HA(high available),即高可用(7*24小时不中断服务). 2)实现高可用最关键的策略是消除单点故障.HA严格来说应该分成各个组件的HA机制:HDFS的 ...
- android 6.0 高通平台sensor 工作机制及流程(原创)
最近工作上有碰到sensor的相关问题,正好分析下其流程作个笔记. 这个笔记分三个部分: sensor硬件和驱动的工作机制 sensor 上层app如何使用 从驱动到上层app这中间的流程是如何 Se ...
- Java IO工作机制分析
Java的IO类都在java.io包下,这些类大致可分为以下4种: 基于字节操作的 I/O 接口:InputStream 和 OutputStream 基于字符操作的 I/O 接口:Writer 和 ...
- malloc 函数工作机制(转)
malloc()工作机制 malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表.调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块.然后,将 ...
- springMVC工作机制和框架搭建配置说明
先说一下springMVC的工作机制 1.springmvc把 所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作. 2.Dispatcher ...
随机推荐
- 容器编排系统K8s之PV、PVC、SC资源
前文我们聊到了k8s中给Pod添加存储卷相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14180752.html:今天我们来聊一下持久存储卷相关话题 ...
- CentOS7 实战源码安装mysql5.7.17数据库服务器
CentOS7 实战源码安装mysql5.7.17数据库服务器 简介:实战演练mysql数据库服务器的搭建 mysql简介: mysql是一个开源的关系型数据库管理系统,现在是oracle公司旗下的 ...
- 【linux】系统编程-1-进程、管道和信号
目录 1. 进程 1.1 概念 1.2 查看进程 1.3 启动新进程 1.3.1 system() 函数 1.3.2 fork() 函数 1.3.2 exce 系列函数 1.3.2.1 exce 系列 ...
- 操作系统微内核和Dubbo微内核,有何不同?
你好,我是 yes. 在之前的文章已经提到了 RPC 的核心,想必一个 RPC 通信大致的流程和基本原理已经清晰了. 这篇文章借着 Dubbo 来说说微内核这种设计思想,不会扯到 Dubbo 某个具体 ...
- spring的事物传递
Propagation.REQUIRED:默认也是常用的事物级别,在当前事物中执行,不存在事物,则创建新事物执行. Propagation.SUPPORTS:支持使用当前事物,当前事物不存爱,则不使用 ...
- 关于django的坑(一)
关于django orm 的坑: 关于设置数据库表自动更新 django的orm关于更新数据库的方法有update和save两种方法.想要表中自动更新需要一下几个条件: 使用 DateTimeFiel ...
- San Francisco Crime Classification非数值性多分类问题
给出了旧金山以往犯罪活动的相关信息,预测特定条件下的犯罪情况 分析数据集和测试集信息: 训练集给出的信息有: 1.Dates:时间日期和时间,这里考虑时间对犯罪活动有影响,日期和下边的周几有相似处,取 ...
- Idea创建Maven项目时,没有自动添加Artifacts
可能的原因是没有进行更新,因为第一次创建时由于要下载东西,所以pom文件是自动改变的,如果没有设置自动更新maven项目,就可能出现这种情况 这时候只要去maven project中点击一下更新按钮, ...
- 常见数据库的JDBC URL
转自:http://blog.csdn.net/ring0hx/article/details/6152528 Microsoft SQL Server Microsoft SQL Server JD ...
- 漫谈JSON Web Token(JWT)
一.背景 传统的单体应用基于cookie-session的身份验证流程一般是这样的: 用户向服务器发送账户和密码. 服务器验证账号密码成功后,相关数据(用户角色.登录时间等)都保存到当前会话中. 服务 ...