视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Hadoop2.x的HA介绍
2020-11-09 07:52:14 责编:小采
文档


这篇文章主要介绍的是Hadoop2.0的HA(High Avalability 高可用性),在介绍hadoop2.0的HA配置之前,本文先介绍hadoop2.0 HA的基本原理和2种方式。 1.概述 在Hadoop2.0之前,NameNode只有一个,存在单点问题(虽然Hadoop1.0有SecondaryNameNode,checkPointNode

这篇文章主要介绍的是Hadoop2.0的HA(High Avalability 高可用性),在介绍hadoop2.0的HA配置之前,本文先介绍hadoop2.0 HA的基本原理和2种方式。

1.概述

在Hadoop2.0之前,NameNode只有一个,存在单点问题(虽然Hadoop1.0有SecondaryNameNode,checkPointNode、buckcupnode这些,但是单点问题依然存在),在hadoop2.0引入了HA机制。Hadoop2.0的HA机制官方介绍了有2种方式,一种是NFS(Net Work File System)方式,另外一种是QJM(Quorum Journal Manager)方式。


2.基本原理

Hadoop2.0的HA机制有两个NameNode,一个是active NameNode,状态是active;另外一个是standby NameNode,状态是standby。两者的状态是可以切换的,但不能同时都是active状态,最多只有1个是active状态。只有active NameNode提供对外的服务,standby NameNode是不对外服务的。active NameNode和standby NameNode之间通过NFS或者JN(journalnode QJM方式)来同步。

active NameNode会把最近的操作记录写到本地一个edits文件中(edits file),并传输到NFS或者JN中。standby NameNode定期检查,从NFS或者JN把最近的edits文件读过来,然后把edits文件和fsimage文件合并成一个新的fsimage,合并之后会通知active NameNode获取这个新的fsimage。active NameNode获得这个新的fsimage文件之后,替换原来旧的fsimage文件。

这样,就保持了active NameNode和standby NameNode的数据的实时同步,standby NameNode可以随时切换成active NameNode(比如active NameNode挂了)。而且还有一个原来hadoop1.0的SecondaryNameNode,checkpoint,buckcupnode的功能;合并edits文件和fsimage,使fsimage文件一直保持更新。所以启动了hadoop2.0的HA机制之后,SecondaryNameNode,checkpointnode,buckcupnode这些都不需要了。


3.NFS方式

NFS作为active NameNode和standby NameNode之间数据共享的存储。active NameNode会把最近的edits文件写到NFS,而standby NameNode从NFS中把数据读过来。这个方式的缺点是,如果active NameNode或者standby NameNode有一个和NFS之间网络有问题的话,则会造成他们之前数据的同步出问题。


4.QJM(Quorum Journal Manager)方式

QJM的方式可以解决上述NFS容错机制不足的问题。active NameNode和standby NameNode之间是通过一组journalNode(数量是奇数,可以是3,5,7,...2n+1)来共享数据。active NameNode把最近的edits文件写到2n+1个journalnode上,只要有n+1个写入成功的话就表示写入操作成功了,然后standby NameNode就可以从journalnode上读取了。可以看到,QJM方式由容错机制,可以容忍n个journalNode的失败。


5.主备节点的切换

active NameNode和standby NameNode可以随时切换。当active NameNode挂掉后,也可以把standby NameNode切换成active状态,称为active NameNode。可以人工切换和自动切换。人工切换时通过执行HA管理的命令来改变NameNode的状态,从standby到active,或者从active到standby。自动切换则在active NameNode挂掉的时候,standby NameNode自动切换成active状态,取代原来的active NameNode称为新的active NameNode,HDFS继续正常工作。

主备节点的自动切换需要配置Zookeeper。active NameNode和standby NameNode把他们的状态实时记录到Zookeeper中,Zookeeper监视他们的状态变化。当Zookeeper发现active NameNode挂掉后,会自动把standby NameNode切换成active NameNode。


6.实战tips

1):QJM方式有明显的优点,一是本身就有fencing的功能,而是通过多个journal节点增强了系统的健壮性,所以建议在生产环境中采用QJM的方式。

2):journalnode消耗的资源很少,不需要额外的机器专门来启动journalnode,可以从hadoop集群中选几台机器作为journalnode。


原文来自:http://www.linuxidc.com/Linux/2014-05/101174.htm

下载本文
显示全文
专题