博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数据小白系列——HDFS(3)
阅读量:6000 次
发布时间:2019-06-20

本文共 1256 字,大约阅读时间需要 4 分钟。

这里是大数据小白系列,这是本系列的第三篇,介绍HDFS中NameNode选举,JournalNode等概念。

上一期我们说到了为解决NameNode(下称NN)单点失败问题,HDFS中使用了双NN的机制,一个Active NN,一个Standby NN。

 

现实常常是,解决一个问题的同时,免不了又引入了另外的问题。

谁来担任Active,谁来担任Standby?

两个NN谁也说服不了谁,这个时候需要引入一个外部角色:一个Zookeeper(下称ZK)集群。

ZK也是个很有趣的东西,大数据小白系列后续会专门介绍。

这里,ZK集群扮演了类似裁判的角色,如果两个NN同时申请成为Active,由ZK决定谁将获胜。

 

两台NN机器上都分别存在一个ZKCF(Zookeeper Failover Controller)进程,该进程相当于ZK的一个客户端。

ZKFC定期检查NN进程的状态,如状态正常,并且目前没有其他NN在持有ZK集群上的锁,则加入选举,并且申请锁。(注:所谓的锁,实际上是ZK集群上的一种特殊目录)

若ZKFC检查NN进程不正常,则退出选举,并放弃ZK上的锁(如持有)。

 

Q:如果不是NN进程死了,而是整个NN机器掉电了呢?

A:当集群与ZKFC进程的连接断开超过一定时间,锁将自动过期,以便其他NN可以申请重新选举。

Q:如果Active、Standby都死了呢?

A:不好意思,那就死透了。

 


 

上一期提到的另外一个内容,Active NN负责将Edit Log写入某个“共享存储”,而Standby NN负责从该位置读取以保持同步。

最简单的,可以使用NFS(Network File System)来担任共享存储。

但是NFS本身成为了单点失败,即,如果NFS系统坏了,导致Edit Log无法读写,整个HDFS系统也就无法工作。

因此,HDFS推荐使用的是专为Edit Log高可用性所设计的“JournalNode(下称JN))集群”。

NN通过QJM(Quorum Journal Manager)进程将Edit Log写入某JN节点,该JN节点需要将数据写入其他JN节点,直到数据被写入集群中的“多数节点”,本次操作才算成功。

例如,JN集群中共有3个节点,需要写入到其中2个节点,即所谓的“多数”(majority)。

通常,JN集群总是包含奇数个节点,至于为什么,我准备在介绍ZK的时候再来说明,因为二者比较类似。

需要注意,虽然QJM的工作机制类似于ZK,但本身并没有用到ZK,同时它也比ZK来的轻量级,它可以跑在集群现有的机器上,而不需要单独为它准备机器。

 

好了,这期就先到这,下期我们将介绍现实世界中的HDFS集群,以及Federation等概念。Cheers!

 

作者公众号“程序员杂书馆”,专注大数据,欢迎关注,每位关注者将获赠《Spark快速大数据分析》纸质书一本

转载于:https://www.cnblogs.com/morvenhuang/p/10148650.html

你可能感兴趣的文章
用了这个人工智能,梵高的照片分分钟搞定!
查看>>
Hadoop入门进阶课程11--Sqoop介绍、安装与操作
查看>>
《你不知道的JavaScript》整理(四)——原型
查看>>
XML&Java&XMLBeans结合应用的价值
查看>>
js表单各checkbox值
查看>>
测试python HTTPServer功能
查看>>
2.4 文件管理命令
查看>>
RAC禁用DRM特性
查看>>
Linux Logwatch的简单配置与使用
查看>>
不登QQ时就不启动腾讯QPCore服务
查看>>
linux磁盘异常占用
查看>>
监控patrol安装
查看>>
【统览整个学术圈】上交大发布知识图谱AceKG,超1亿实体,近100G数据量
查看>>
centos 安装mysql5.7
查看>>
@RequestParam注解的使用
查看>>
黑夜的精神力量
查看>>
Spring hibernate 事务的流程
查看>>
有关office 2010办公软件安装不上的问题解答
查看>>
centos7中php使用memcache
查看>>
Linux系统上传下载工具rz/sz
查看>>