HA结构图

HA是用来解决单点故障问题

  • DN: DataNode,启动时会往所有的NameNode汇报
  • NN: NameNode(主 Active(一个)   备 Standby(可以有多个))
  • JournalNodes:JournalNodes就是用来存储元数据的,是一个集群,节点数量必须为奇数个。
    • 如果主NameNode的元数据存在本地磁盘中的fsimage及edits文件中,如果主挂掉了,那么备用NameNode将无法从主NameNode获取元数据文件,所以元数据文件不能存储在主NameNode的本地了,而是存储在JournalNodes中
    • 所有的NameNode,不管是主还是备,读写元数据都是在JournalNodes中进行的。
    • 主NameNode 挂掉后,备NameNode自动从JournalNodes中加载到元数据,然后进行工作。
  • FailoverController: 控制NameNode切换的一个服务,还对NameNode进行心跳检查,判断是否挂掉,挂掉后要切换到另外一个NameNode
  • ZooKeeper:主要工作是做高可用,任何一个服务的高可用都可以用ZooKeeper来做,节点数量必须为奇数个
    • 客户端不指定IP地址访问NameNode,客户端去请求ZooKeeper,ZooKeeper知道哪个NameNode是Active的,然后ZooKeeper返回给客户端真正工作的NameNode
    • 自动:ZooKeeper会对所有的NameNode进行心跳检测,检测有没有挂掉,可通过FailoverController对NameNode进行切换
    • 手动:正常情况下,如果想对某个Active NameNode进行修改配置,可手动将其闲置下来,变成Standby,将另一个Standby的NameNode变成Active

HA优点

  • 主备NameNode
  • 解决单点故障
    • 主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换
    • 所有DataNode同时向两个NameNode汇报数据块信息
  • 两种切换选择
    • 手动切换:通过命令实现主备之间的切换,可以用HDFS升级等场合
    • 自动切换:基于ZooKeeper实现
  • 基于ZooKeeper自动切换方案
    • ZooKeeper FailoverController : 监控NameNode健康状态
    • 并向Zookeeper注册NameNode
    • NameNode挂掉后,ZKFC为NameNode竞争锁,获得ZKFC锁的NameNode变为active

主NameNode挂掉后,Standby竞争锁,每个NameNode对应的FailoverController在Zookeeper上竞争锁,获得锁之后就可以把该NameNode变成Active了
任何一个NameNode都要对应一个FailoverController
Zookeeper必须是奇数个,否则将不会得到一个锁,Zookeeper内部使用的是一个投票机制,竞争锁算法用的是投票机制

NFS网络文件系统(了解)

NFS 网络文件系统,相当于一个共享目录,找一台机器专门共享文件,让所有NameNode读写元数据都在那台共享机器上操作,读写在共享的目录中。(也会有单点故障问题)

Hadoop 2.x 之 HA 简介的更多相关文章

  1. Hadoop 2.0 NameNode HA和Federation实践【转】

    Hadoop 2.0 NameNode HA和Federation实践 Posted on 2012/12/10 一.背景 天云趋势在2012年下半年开始为某大型国有银行的历史交易数据备份及查询提供基 ...

  2. 攻城狮在路上(陆)-- hadoop分布式环境搭建(HA模式)

    一.环境说明: 操作系统:Centos6.5 Linux node1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 ...

  3. Hadoop 2.2.0 HA构造

    在这篇文章中<Ubuntu和CentOS分布式配置Hadoop-2.2.0>介绍hadoop 2.2.0最主要的配置.hadoop 2.2.0中提供了HA的功能,本文在前文的基础上介绍ha ...

  4. 菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章

    菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章 cheungmine, 2014-10-26 在上一章中,我们准备好了计算机和软件.本章开始部署hadoop 高可用集群. 2 部署 ...

  5. 菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章

    菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章 cheungmine, 2014-10-25 0 引言 在生产环境上安装Hadoop高可用集群一直是一个需要极度耐心和体力的细致工作 ...

  6. Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建

    目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...

  7. Hadoop集群搭建-HA高可用(手动切换模式)(四)

    步骤和集群规划 1)保存完全分布式模式配置 2)在full配置的基础上修改为高可用HA 3)第一次启动HA 4)常规启动HA 5)运行wordcount 集群规划: centos虚拟机:node-00 ...

  8. Hadoop生态圈-Ambari控制台功能简介

    Hadoop生态圈-Ambari控制台功能简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在经历一系列安装过程之后(部署过HDP后我终于发现为什么大家喜欢用它了,部署比CDH简 ...

  9. 一脸懵逼学习Hadoop分布式集群HA模式部署(七台机器跑集群)

    1)集群规划:主机名        IP      安装的软件                     运行的进程master    192.168.199.130   jdk.hadoop      ...

随机推荐

  1. 查看/设置MySQL数据库的事务隔离级别

    查看InnoDB存储引擎 系统级的隔离级别 和 会话级的隔离级别: mysql> select @@global.tx_isolation,@@tx_isolation; +---------- ...

  2. win 下g++ 安装、环境配置等

    工具:eclipse for c++: 由于eclipse没有集成c++的编译器及执行环境,所以须要自己额外安装g++等. 方法: 使用MinGW来下载和安装须要的工具: 下载地址:http://ww ...

  3. 模拟和数字低通滤波器的MATLAB实现

    低通滤波器参数:Fs=8000,fp=2500,fs=3500,Rp=1dB,As=30dB,其他滤波器可以通过与低通之间的映射关系实现. %%模拟滤波器 %巴特沃斯——滤波器设计 wp=2*pi*2 ...

  4. Android开发系列之系统源码目录

    相信大家对于Google给出的那副经典Android架构图非常的熟悉,从下往上依次是Linux内核层(主要是负责硬件管理调度),HAL层(主要是硬件抽象层),libs层+Runtime,Framewo ...

  5. 使用Firebug进行断点调试详解

    利用Firebug我们可以非常方便地对网页上的任何JavaScript代码进行断点调试. 首先,使用快捷键F12在当前页面打开Firebug,并切换到脚本选项卡. 其次,我们需要为指定的js代码添加断 ...

  6. spark-submit 提交任务

    将工程打成jar 放入到linux中 切换到[root@node4 Desktop]# cd /usr/local/development/spark-2.0-hadoop2.6/bin/ 输入命令 ...

  7. watch 命令

    watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下个 ...

  8. asp.net web.config配置节说明

    web.config 文件查找规则:      (1)如果在当前页面所在目录下存在web.config文件,查看是否存在所要查找的结点名称,如果存在返回结果并停止查找.      (2)如果当前页面所 ...

  9. html自定义标签属性

    <a href="#" _asd="xxxx" onclick="test(event)">test</a> < ...

  10. django模板加载静态资源

    1. 目录结构 /mysite/setting.py部分配置: # Django settings for mysite project. import os.path TEMPLATE_DIRS = ...