HadoopHA概述

1)所谓HA(High Available),即高可用(7*24小时不中断服务)。

2)实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。

3)Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)。

4)NameNode主要在以下两个方面影响HDFS集群

NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启

NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用

HDFS HA功能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。

HDFS-HA工作机制

通过双NameNode消除单点故障

HDFS-HA工作要点

1.    元数据管理方式需要改变

内存中各自保存一份元数据;

Edits日志只有Active状态的NameNode节点可以做写操作;

两个NameNode都可以读取Edits;

共享的Edits放在一个共享存储中管理(qjournal和NFS两个主流实现);

2.    需要一个状态管理功能模块

实现了一个zkfailover,常驻在每一个namenode所在的节点,每一个zkfailover负责监控自己所在NameNode节点,利用zk进行状态标识,当需要进行状态切换时,由zkfailover来负责切换,切换时需要防止brain split现象的发生。

3.    必须保证两个NameNode之间能够ssh无密码登录

4.    隔离(Fence),即同一时刻仅仅有一个NameNode对外提供服务

HDFS-HA自动故障转移工作机制

前面学习了使用命令hdfs haadmin -failover手动进行故障转移,在该模式下,即使现役NameNode已经失效,系统也不会自动从现役NameNode转移到待机NameNode,下面学习如何配置部署HA自动进行故障转移。自动故障转移为HDFS部署增加了两个新组件:ZooKeeper和ZKFailoverController(ZKFC)进程,如文章下方图所示。ZooKeeper是维护少量协调数据,通知客户端这些数据的改变和监视客户端故障的高可用服务。HA的自动故障转移依赖于ZooKeeper的以下功能:

1)故障检测:集群中的每个NameNode在ZooKeeper中维护了一个持久会话,如果机器崩溃,ZooKeeper中的会话将终止,ZooKeeper通知另一个NameNode需要触发故障转移。

2)现役NameNode选择:ZooKeeper提供了一个简单的机制用于唯一的选择一个节点为active状态。如果目前现役NameNode崩溃,另一个节点可能从ZooKeeper获得特殊的排外锁以表明它应该成为现役NameNode。

ZKFC是自动故障转移中的另一个新组件,是ZooKeeper的客户端,也监视和管理NameNode的状态。每个运行NameNode的主机也运行了一个ZKFC进程,ZKFC负责:

1)健康监测:ZKFC使用一个健康检查命令定期地ping与之在相同主机的NameNode,只要该NameNode及时地回复健康状态,ZKFC认为该节点是健康的。如果该节点崩溃,冻结或进入不健康状态,健康监测器标识该节点为非健康的。

2)ZooKeeper会话管理:当本地NameNode是健康的,ZKFC保持一个在ZooKeeper中打开的会话。如果本地NameNode处于active状态,ZKFC也保持一个特殊的znode锁,该锁使用了ZooKeeper对短暂节点的支持,如果会话终止,锁节点将自动删除。

3)基于ZooKeeper的选择:如果本地NameNode是健康的,且ZKFC发现没有其它的节点当前持有znode锁,它将为自己获取该锁。如果成功,则它已经赢得了选择,并负责运行故障转移进程以使它的本地NameNode为Active。故障转移进程与前面描述的手动故障转移相似,首先如果必要保护之前的现役NameNode,然后本地NameNode转换为Active状态。

其他环境搭建可以参考我的其他博客(链接):

Hadoop伪分布式的搭建详情

Hadoop完全分布式的搭建详情

Zookeeper (leader)选举机制

Zookeeper集群的搭建(单机、伪分布式、集群)

Spark的安装与部署详情(Local模式,Standalone模式,Spank on YARN模式)

HadoopHA环境搭建(保姆篇,手把手搭建)

二十一、HadoopHA工作机制(高可用)相关推荐

  1. 消息系统kafka之二 kafka的HA(高可用)

    在前面的<消息系统kafka之一 系统简介>的为什么选择kafka中已经提到了kafka高可用的特性. 下面是kafka与其他消息系统之间的区别 可以看出,kafka支持持久化消息,消息回 ...

  2. 走进GBase 8s之高可用功能(二)HAC灾备高可用

    GBase 8s HAC(容灾高可用)采用基于数据库日志的增量数据同步技术实现节点高可用.根据灾备距离不同分为同城容灾高可用和异地灾备高可用.同城容灾高可用支持一主一从的部署方式,异地灾备高可用支持一 ...

  3. 操作系统(二十一)信号量机制

    2.3.4 信号量机制 在前两节中我们分别学习了用软件方式以及硬件方式实现互斥访问,但是他们或多或少的存在一些问题,1965年荷兰的一名学者迪杰斯特拉(是的,就是那个男人)提出了信号量机制,有效的解决 ...

  4. 网络云存储技术Windows server 2012 (项目二十 一 基于Cluster的高可用企业WEB服务器的部署)

    网络云存储技术Windows server 2012 (项目二十一 基于Cluster的高可用企业WEB服务器的部署) 前言 网络存储技术,是以互联网为载体实现数据的传输与存储,它采用面向网络的存储体 ...

  5. HAProxy Keepalived L4-L7 高可用负载均衡解决方案

    目录 文章目录 目录 HAProxy 负载均衡器 应用特性 性能优势 会话保持 健康检查 配置文件 负载均衡策略 ACL 规则 Web 监控平台 Keepalived 虚拟路由器 核心组件 VRRP ...

  6. 智能一代云平台(二十三):Mycat高可用的探索

    [前言] 在智能云平台的上篇博文 <智能云平台(二十二):多租户方案比较Hibernate.EclipseLink.Mybatis+Mycat>中讲解了实 现多租户的一种方案是用MySql ...

  7. 基于heartbeatV2版本的ha-gui工具对httpd做高可用集群(1)

    一.简述 Heartbeat通过插件技术实现了集群间的串口.多播.广播和组播通信,在配置的时候可以根据通信媒介选择采用的通信协议,heartbeat启动的时候检查这些媒介是否存在,如果存在则加载相应的 ...

  8. MySQL高可用方案-PXC环境部署记录

    之前梳理了Mysql+Keepalived双主热备高可用操作记录,对于mysql高可用方案,经常用到的的主要有下面三种: 一.基于主从复制的高可用方案:双节点主从 + keepalived 一般来说, ...

  9. RabbitMQ可靠性投递与高可用架构

    一,可靠性投递 使用 RabbitMQ 实现异步通信的时候,消息丢了怎么办,消息重复消费怎么办? 在 RabbitMQ 里面提供了很多保证消息可靠投递的机制,这个也是 RabbitMQ 的一个特性. ...

最新文章

  1. oj contest ranklist时间怎么算的_几次买入基金怎么算持有天数,加仓算在原来持有时间吗...
  2. 小程序分享到朋友圈功能_来啦!小程序支持分享朋友圈
  3. spring IOC 之篇三:默认标签的解析
  4. 95-30-009-Channel-总述
  5. 卸载mscs、活动目录、dns方法
  6. Lync Server 2010安装笔记之五-Lync Server前端服务器高可用
  7. java多线程工具类_Java多线程同步工具类之Semaphore
  8. Septentrio RAIM+接收机自主完好性监测实验
  9. hl2240d硒鼓清零方法
  10. 计算机专科大学三年规划书,专科大学规划书范文
  11. 苹果双系统 计算机意外的重新启动,用Boot camp 安装双系统时突然重启,打… - Apple 社区...
  12. 迅捷pdf转换器——如何提取pdf中的图片
  13. linux权限可被登录用户读取,Linux 用户及权限详解
  14. 捉迷藏之二-第10届蓝桥杯Scratch国赛真题第6题程序2
  15. Latex 如何给数学公式进行编号
  16. Hibernate_3_客户实例_数据库中自动生成主从表
  17. JS正则表达式数字、字母、特殊符号第一弹
  18. 我国终于掌握海底光缆自主制造技术:指标超外企
  19. 微信小程序---- 获取手机号(微信最新更新)
  20. Flash分模块开发,Flash分模块加载,以及使用Flex经行游戏开发!

热门文章

  1. 代表委员聚焦网络安全:信息立法迫在眉睫
  2. vue2.0 创建vue项目步骤
  3. 触摸板右键不能用?搞了半天原来是……
  4. DDL(数据定义语言)
  5. 一睹为快!阿里内部绝密爆款设计模式进阶宝典到底有何魅力?
  6. 基于STM32的纸张计数
  7. java能长高吗_怎样可以让青少年长高?
  8. 从零开始的OpenGL之路(0)——OpenGL介绍与环境配置
  9. java随机数生成_java实现随机数生成器
  10. 将多个文件夹或单文件夹内的xml文件转换为一个json标签(imagenet VID等视频目标检测数据集)简单易改,有注释