1.高可靠概念

  HA(High Available):高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动

节点及备用节点

2.Hadoop的HA运作机制:

  :正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制,

  :Hadoop-HA集群运作机制介绍:所谓HA,即高可用(7*24小时不中断服务),实现高可用最关键的是消除单点故障

  :Hadoop-HA严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA

2.HDFS的HA机制详解:

  1.可否通过keepalive来进行NameNode的高可用?不可以,因为NameNode上有大量的元数据状态信息需要维护

  2.解决方法:

    需要两个NameNode,一个对外工作(active),一个后补(standby),这就涉及到元数据同步的问题。可以

将edits保存到第三方,standy的NameNode即可收到edits,从而保持元数据的更新。为了系统的稳定,第三方的

组件最好也实现高可用。叫做qjournal,基于ZooKeeper实现的分布式系统,功能是进行edits日志管理。这样提

高了可靠性和可用性,但是牺牲了一部分数据一致性

  如果active宕机了,standby立即可以切换到active状态并对外提供服务;需要一个状态管理功能模块。每个

NameNode中有个程序ZKFC(zkfailover Controller),基于ZooKeeper做状态切换,ZKFC通过RPC的接口调用NameNode,

然后就可以确认NameNode的状态。一旦active上面的ZKFC发现active挂掉了,它向ZooKeeper发送状态变化信息,

standby的ZKFC监听到节点变化后,通知NameNode切换到Active状态,随后在ZooKeeper上建立状态锁。通知切换之

前为了保证之前的NameNode一定被隔离,ZKFC会直接调用kill -9杀掉之前的NameNode进程,如果等一段时间没有响

应,会调用用户脚本来进行操作,用户脚本返回0表示隔离成功。

  宕机的active重启后,ZKFC会检测到状态锁的存在,让其处于standby状态。此时不需要SecondaryNameNode了,

交给standby的NameNode负责

  

总结:

  HDFS的HA机制通过双namenode消除单点故障

  双namenode协调工作的要点:

  A、元数据管理方式需要改变:内存中各自保存一份元数据,Edits日志只能有一份,只有Active状态的namenode节点可

以做写操作,两个namenode都可以读取edits,共享的edits放在一个共享存储中管理(qjournal和NFS两个主流实现)

  B、需要一个状态管理功能模块:实现了一个zkfailover,常驻在每一个namenode所在的节点,每一个zkfailover负责监

控自己所在namenode节点,利用zk进行状态标识,当需要进行状态切换时,由zkfailover来负责切换,切换时需要防止brain

split现象的发生

  

    

Hadoop_32_HDFS高可用机制的更多相关文章

  1. HADOOP高可用机制

    HADOOP高可用机制 HA运作机制 什么是HA HADOOP如何实现HA HDFS-HA详解 HA集群搭建 目标: 掌握分布式系统中HA机制的思想 掌握HADOOP内置HA的运作机制 掌握HADOO ...

  2. SpringCloud系列十:SpringCloudConfig 高级配置(密钥加密处理(JCE)、KeyStore 加密处理、SpringCloudConfig 高可用机制、SpringCloudBus 服务总线)

    1.概念:SpringCloudConfig 高级配置 2.具体内容 在 SpringCloudConfig 之中考虑到所有配置文件都暴露在远程仓库之中的安全性问题,所以提供有安全访问的处理机制,这样 ...

  3. SpringCloud系列四:Eureka 服务发现框架(定义 Eureka 服务端、Eureka 服务信息、Eureka 发现管理、Eureka 安全配置、Eureka-HA(高可用) 机制、Eureka 服务打包部署)

    1.概念:Eureka 服务发现框架 2.具体内容 对于服务发现框架可以简单的理解为服务的注册以及使用操作步骤,例如:在 ZooKeeper 组件,这个组件里面已经明确的描述了一个服务的注册以及发现操 ...

  4. 从零开始学spring cloud(八) -------- Eureka 高可用机制

    一.Eureka高可用机制介绍 Eureka服务器没有后端存储,但注册表中的服务实例都必须发送心跳以使其注册保持最新(因此可以在内存中完成). 客户端还有一个Eureka注册的内存缓存(因此,他们不必 ...

  5. Redis Sentinel 高可用机制

    内容目录: Sentinel 如何工作的? 核心配置项 怎么选出新 master 的? Sentinel 有多个,具体谁来执行故障转移? Sentinel 是怎么发现 slave 和其他 sentin ...

  6. Spring Cloud Eureka 注册中心高可用机制

    一.Eureka 正常工作流程 Service 服务作为 Eureka Client 客户端需要在启动的时候就要向 Eureka Server 注册中心进行注册,并获取最新的服务列表数据. Eurek ...

  7. HDFS 09 - HDFS NameNode 的高可用机制

    目录 1 - 为什么要高可用 2 - NameNode 的高可用发展史 3 - HDFS 的高可用架构 3.1 Standby 和 Active 的命名空间保持一致 3.2 同一时刻只有一个 Acti ...

  8. kafka 的高可用机制是什么?

    这个问题比较系统,回答出 kafka 的系统特点,leader 和 follower 的关系,消息 读写的顺序即可.

  9. Redis如何实现高可用【主从复制+哨兵机制+keepalived】

    实现redis高可用机制的一些方法: 保证redis高可用机制需要redis主从复制.redis持久化机制.哨兵机制.keepalived等的支持. 主从复制的作用:数据备份.读写分离.分布式集群.实 ...

随机推荐

  1. Spark2.4源码阅读1-Shuffle机制概述

    本文参考: a. https://www.jianshu.com/p/c46bfaa5dd15 1. shuffle及历史简介 shuffle,即"洗牌",所有采用map-redu ...

  2. 【DSP开发】CCS数据格式 load

    CCS支持的.dat文件详解(转载于hellodsp) CCS支持的.dat文件的格式为: 定数 数据格式 起始地址 页类型 数据块大小 1651 其后是文件内容,每行表示一个数据. 定数固定为&qu ...

  3. Qt——树的搜索实现源码

    一.使用QTreeWidget 头文件: /************************************************************************ 树的搜索类 ...

  4. Oracle导出包含clob字段的sql脚本工具

    之前工作中遇到生产环境不允许导入Oracle的dmp文件,只能导入sql脚本,但是表中存在clob字段,直接用plsql工具无法导出clob字段,用了下dbvisualizer可以直接导出,亲测可用. ...

  5. Webpack实现按需打包Lodash的几种方法详解

    参考链接:https://www.jb51.net/article/113235.htm 在vue-cli3中需要将babel-preset-es2015插件更换为@babel/preset-env插 ...

  6. Mysql 索引失效场景

    例如:一张USER表   有字段属性 name,age   其中name为索引 下面列举几个索引失效的情况 1. select * from USER where name=‘xzz’ or age= ...

  7. BIO和NIO实现文件复制

    普通文件复制 public void copyFile() throws Exception{ FileInputStream fis=new FileInputStream("C:\\Us ...

  8. [转帖]linux下CPU、内存、IO、网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具

    linux下CPU.内存.IO.网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具 https://blog.51cto.com/hao360/1587165 linux_python关 ...

  9. java中讲讲PrintStream的用法,举例?

    [学习笔记] 1.2 PrintStream的用法   从学java第一天,我们就经常用到System.out.println(),实际上查阅文档可知,System.out就是Sun 编的一个Prin ...

  10. 2.2注册中心:Eureka

    pom.xml配置 <?xml version="1.0" encoding="UTF-8"?><project xmlns="ht ...