文档章节

Hadoop2.2.0中HDFS的高可用性实现原理

蓝狐乐队
 蓝狐乐队
发布于 2014/04/22 00:21
字数 977
阅读 164
收藏 6

Hadoop2.0.0之前,NameNode(NN)在HDFS集群中存在单点故障(single point of failure),每一个集群中存在一个NameNode,如果NN所在的机器出现了故障,那么将导致整个集群无法利用,直到NN重启或者在另一台主机上启动NN守护线程。
  主要在两方面影响了HDFS的可用性:
  (1)、在不可预测的情况下,如果NN所在的机器崩溃了,整个集群将无法利用,直到NN被重新启动;
  (2)、在可预知的情况下,比如NN所在的机器硬件或者软件需要升级,将导致集群宕机。
  HDFS的高可用性将通过在同一个集群中运行两个NN(active NN & standby NN)来解决上面两个问题,这种方案允许在机器破溃或者机器维护快速地启用一个新的NN来恢复故障。
  在典型的HA集 群中,通常有两台不同的机器充当NN。在任何时间,只有一台机器处于Active状态;另一台机器是处于Standby状态。Active NN负责集群中所有客户端的操作;而Standby NN主要用于备用,它主要维持足够的状态,如果必要,可以提供快速的故障恢复。
  为了让Standby NN的状态和Active NN保持同步,即元数据保持一致,它们都将会和JournalNodes守护进程通信。当Active NN执行任何有关命名空间的修改,它需要持久化到一半以上的JournalNodes上(通过edits log持久化存储),而Standby NN负责观察edits log的变化,它能够读取从JNs中读取edits信息,并更新其内部的命名空间。一旦Active NN出现故障,Standby NN将会保证从JNs中读出了全部的Edits,然后切换成Active状态。Standby NN读取全部的edits可确保发生故障转移之前,是和Active NN拥有完全同步的命名空间状态。
  为了提供快速的故障恢复,Standby NN也需要保存集群中各个文件块的存储位置。为了实现这个,集群中所有的Database将配置好Active NN和Standby NN的位置,并向它们发送块文件所在的位置及心跳,如下图所示:

Hadoop2.2.0中HDFS的高可用性实现原理

Hadoop2.2.0中HDFS的高可用性实现原理


  在任何时候,集群中只有一个NN处于Active 状态是极其重要的。否则,在两个Active   NN的状态下NameSpace状态将会出现分歧,这将会导致数据的丢失及其它不正确的结果。为了保证这种情况不会发生,在任何时间,JNs只允许一个 NN充当writer。在故障恢复期间,将要变成Active 状态的NN将取得writer的角色,并阻止另外一个NN继续处于Active状态。
  为了部署HA集群,你需要准备以下事项:
  (1)、NameNode machines:运行Active NN和Standby NN的机器需要相同的硬件配置;
  (2)、JournalNode machines:也就是运行JN的机器。JN守护进程相对来说比较轻量,所以这些守护进程可以可其他守护线程(比如NN,YARN ResourceManager)运行在同一台机器上。在一个集群中,最少要运行3个JN守护进程,这将使得系统有一定的容错能力。当然,你也可以运行3 个以上的JN,但是为了增加系统的容错能力,你应该运行奇数个JN(3、5、7等),当运行N个JN,系统将最多容忍(N-1)/2个JN崩溃。
  在HA集群中,Standby NN也执行namespace状态的checkpoints,所以不必要运行Secondary NN、CheckpointNode和BackupNode;事实上,运行这些守护进程是错误的。


本文转载自:

蓝狐乐队
粉丝 106
博文 322
码字总数 89813
作品 0
昌平
程序员
私信 提问
hadoop 1.x升级至hadoop-2.2.0记录

一、概述 公司hadoop集群从1.2.1升级到2.2.0已经有一段时间,这篇blog将总结一下我前段时间在升级至hadoop2.2.0版本过程中遇到的一些问题,以及具体的升级步骤。 二、升级过程 (1)停掉hadoo...

zengzhaozheng
2018/07/02
0
0
hadoop2.2.0安装笔记

NameNode 192.168.1.122 hadoop/hadoop VM 192.168.1.123 DataNode1 192.168.1.124 datanode1/datanode1 hadoop/hadoop DataNode2 192.168.1.125 datanode2/datanode2 hadoop/hadoop 一、在所......

陶诗德
2014/07/10
227
0
centos6.4 32/64位机 hadoop2.2.0集群安装

1、准备环境 安装VMware10 ,三台centos6.4 版本,安装在VMware虚拟机下。 1)安装中文输入法: 1、需要root权限,所以要用root登录 ,或su root 2、yum install "@Chinese Support" 2)安装...

kt431128
2014/06/03
8.6K
17
hadoop2.2.0定制mapreduce输出到数据库

hadoop2.2.0定制mapreduce输出到数据库: 这里以redis数据库为例。 这里的例子是,我想统计日志文件中的某天各个小时的访问量,日志格式为: 2014-02-10 04:52:34 127.0.0.1 xxx 我们知道在写...

ihaolin
2014/03/19
1K
0
hadoop 2.2.0 编译运行wordcount

hadoop2.2.0 编译运行wordcount,因为hadoop2.2.0不支持eclipse的插件,所以运行wordcount,需要手动编译并将wordcount打包成jar包来运行,下面记录一下编译运行的过程,希望能给大家有些帮助...

Adel
2014/09/05
692
1

没有更多内容

加载失败,请刷新页面

加载更多

反编译9.png图片还原

本文链接:https://blog.csdn.net/a1140778530/article/details/10528507 经常反编译apk文件找资源,9.png的文件处理起来很麻烦。 最近使用Ant自动编译打包app时,从别处搜罗来的9.png文件导...

shzwork
15分钟前
4
0
Shell脚本应用 – for、while循环语句

一、for循环语句 在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同。例如:根据通讯录中的姓名列表创建系统账号等情况。 当面对各种...

linux-tao
16分钟前
5
0
RPA风潮下企业财务工作模式的变革

RPA(机器人流程自动化)在财务领域的应用,正给企业财务带来前所未有的改变。 前RPA时代,财务领域面临的痛点 在RPA机器人应用之前,企业财务工作进程的推进,主要通过财务人员人工操作或信...

UiBot
21分钟前
5
0
Hive之命令行修改表注释

最近遇到一个需求,在不重建表的情况下,修改表的注释,hive有没有类似关系型数据库的SQL命令来修改呢,找了下,亲测有效,如下List-1 List-1 hive>use your_schemahvie>ALTER TABLE tabl...

克虏伯
21分钟前
5
0
是什么,它的作用是什么

在HTML文档的首部往往会有这么一句话<!DOCTYPE html>,许多时候我们忽视了它的存在,它实际上是一个声明,告诉浏览器用哪种HTML版本的规范来解读HTML文档。 尽管我们不给出这句声明浏览器照样...

前端老手
27分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部