HDFS HA(High Availability)高可用性

参考文献:

官方文档

全文翻译

Hadoop组件之-HDFS(HA实现细节)



这张图片的个人理解

由于NameNode在Hadoop1只有一个节点,可能存在(SPOF)single point of file单节点故障。包括机器故障,软件硬件升级等。

在Hadoop2砍死你使用两台机器配置为NameNode,在任何时候,只有一个处于Active状态。为了保证两个NameNode节点的数据统一性,1:datanode同时向两个NameNode发送心跳和块报告;2:NameNode中磁盘存储的文件主要有镜像文件和编辑日志,通过JournalNode日志节点保证edits文件的可靠性。如下图:

![](http://images2015.cnblogs.com/blog/1047249/201707/1047249-20170709182235228-2073804790.png)
无ZKFC
![](http://images2015.cnblogs.com/blog/1047249/201707/1047249-20170710113906134-727438154.jpg)
有ZKFC
active的NameNode向JournalNode写如日志文件,standby的NameNode读取JournalNode中的数据,以达到编辑日志文件的同步。
通过Zookeeper的ZKFailoverContral来监控active的健康状态,一旦出现问题,安排Client访问第二个NameNode,从而实现熱备。

需要配置的四个地方(遵循官方文档即可)

1.share edits
JournalNode
2.NameNode
Active,Standby
3.Client
Proxy代理(Zookper)
4.fence(篱笆)
同一时刻仅有一个NameNode对外提供服务
隔离方式:
SSHfence:两个NameNode之间相互能够无密码登录

hdfs-site.xml

core-site.xml

启动HA

#1.在各个journalnode节点上启动journalNode服务
$ sbin/hadoop-daemon.sh start journalnode
#2.在nn1上对其进行格式化并启动
$ bin/hdfs namenode -format
$ sbin/hadoop-daemon.sh start namenode
#3.在nn2上同步nn1上的源数据
$ bin/hdfs namenode -bootstrapStandby
#4.在nn2上启动NameNode节点
$ sbin/hadoop-daemon.sh start namenode
#此时,两个节点都是standby状态
#5.将nn1节点的NameNode设置为activity
$ bin/hdfs haadmin -transitionToActive nn1
#获取状态
$ bin/hdfs haadmin -getServiceState nn1
#6.开启各个节点的DataNode
$ sbin/hadoop-deamon.sh start datanode

集群规划

123 124 125
NameNode NameNode
ZKFC ZKFC
JournalNode JournalNode JournalNode
不需要SecondaryNameNode,因为不会出现重启情况

Zookeeper用于自动故障转移

配置依据官方文档即可

启动带监控的HDFS HA服务器集群

#1.关闭所有hdfs服务
#2.启动ZK集群
$ bin/zkServer.sh start
#3.初始化HA在ZooKeeper中状态
$ bin/hdfs zkfc -formatZK
#4.启动HDFS文件系统,看到所有的NameNode节点上多了一个DFSZKFailoverController即zkfc启动成功
可以通过kill -9 1234来验证

HDFS HA(High Availability)高可用性的更多相关文章

  1. 第6章 HDFS HA配置

    目录 6.1 hdfs-site.xml文件配置 6.2 core-site.xml文件配置 6.3 启动与测试 6.4 结合ZooKeeper进行自动故障转移 在Hadoop 2.0.0之前,一个H ...

  2. HDFS概述(5)————HDFS HA

    HA With QJM 目标 本指南概述了HDFS高可用性(HA)功能以及如何使用Quorum Journal Manager(QJM)功能配置和管理HA HDFS集群. 本文档假设读者对HDFS集群 ...

  3. [转]HDFS HA 部署安装

    1. HDFS 2.0 基本概念 相比于 Hadoop 1.0,Hadoop 2.0 中的 HDFS 增加了两个重大特性,HA 和 Federaion.HA 即为 High Availability, ...

  4. HDFS HA架构以及源代码引导

    HA体系架构 相关知识介绍 HDFS master/slave架构,HDFS节点分为NameNode节点和DataNode节点. NameNode存有HDFS的元数据:主要由FSImage和EditL ...

  5. 6,HDFS HA

    目录 HDFS HA 一.HA(High Availability)的使用原因 二.HA的同步 三.HA的自动容灾 HDFS HA 一.HA(High Availability)的使用原因 1.1 在 ...

  6. hadoop(二):hdfs HA原理及安装

    早期的hadoop版本,NN是HDFS集群的单点故障点,每一个集群只有一个NN,如果这个机器或进程不可用,整个集群就无法使用.为了解决这个问题,出现了一堆针对HDFS HA的解决方案(如:Linux ...

  7. 【解决】HDFS HA无法自动切换问题

    [解决]HDFS HA无法自动切换问题 原因: 最早设置为root互相登录,可是zkfc服务是hdfs账号运行的,没有权限访问到root的id_rsa文件.更改为hdfs账号免密钥登录恢复正常.   ...

  8. Hadoop 学习笔记 (十) hadoop2.2.0 生产环境部署 HDFS HA Federation 含Yarn部署

    其他的配置跟HDFS-HA部署方式完全一样.但JournalNOde的配置不一样>hadoop-cluster1中的nn1和nn2和hadoop-cluster2中的nn3和nn4可以公用同样的 ...

  9. Hadoop 学习笔记 (九) hadoop2.2.0 生产环境部署 HDFS HA部署方法

    step1:将安装包hadoop-2.2.0.tar.gz存放到某一个目录下,并解压 step2:修改解压后的目录中的文件夹/etc/hadoop下的xml配置文件(如果文件不存在,则自己创建) 包括 ...

随机推荐

  1. 秒懂JSON.parse()与JSON.stringify()的区别

    在网站开发中,Json是最为常见的一种数据交互手段.在使用过程中,常会遇到Json字段串和对象之间进行转换.很多朋友对于JSON.parse() 和JSON.stringify() 的区别,下面为大家 ...

  2. 使用COCOStudio中各种资源

    UI Editor: 先把项目导出的json和资源文件放到TestGame项目的Resource目录中 1. 在HelloWorldScene.cpp顶部添加引用#include "coco ...

  3. 【js基础修炼之路】— 深入浅出理解闭包

    之前对于闭包的理解只是很肤浅的,只是浮于表面,这次深究了一下闭包,下面是我对闭包的理解. 什么是闭包? 引用高程里的话 => 闭包就是有权访问另一个作用域中变量的函数,闭包是由函数以及创建该函数 ...

  4. POJ-3274 Gold Balanced Lineup---hash经典题!

    题目链接: https://vjudge.net/problem/POJ-3274 题目大意: 给定多头牛的属性,每头牛的属性由一个非负数表示,该数的二进制表示不会超过K位,它的二进制表示的每一位若为 ...

  5. SSH连接linux时,长时间不操作就断开的解决方案(增强版)

    1.第一次尝试失败 修改/etc/ssh/sshd_config文件, 找到 ClientAliveInterval 0 ClientAliveCountMax 3 并将注释符号("#&qu ...

  6. 初始化mysql数据库时提示字符编码错误的解决办法

    有时候在安装完数据库并初始化的时候会出现如下错误: root@localhost mysql-5.5.19]# bash scripts/mysql_install_db --user=mysql - ...

  7. python_5_password

    #1.python2中raw_input与python3中的input是相同的,python2中也有input但是别用(不好用,忘记它) #密码是明文的 username=input("us ...

  8. 线程 task训练

    1. task类表示一个线程,最简单的task的构造方法是 ,参数是Action<t>,是一个无返回值的泛型委托. 指向要执行的函数.当调用·start()方法时,就执行子线程.执行指向的 ...

  9. e.preventdefault() 别滥用

    有的时候我们会为事件回调函数添加一个参数(通常是e),并在函数中加入e.preventdefault():以取消默认行为.由于习惯,我顺手将它写到了一个checkbox的change事件中.由于不同的 ...

  10. 第24章 SPI—读写串行FLASH—零死角玩转STM32-F429系列

    第24章     SPI—读写串行FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...