Hadoop:使用QJM搭建HDFS高可用性(HA)集群及使用zookeeper自动故障转移

本文详细介绍了如何使用Quorum Journal Manager (QJM) 和 ZooKeeper 实现Hadoop HDFS的高可用性(HA)集群。通过QJM共享编辑日志,确保在活动NameNode故障时,备用NameNode能快速接管。ZooKeeper在故障检测和Active NameNode选举中起关键作用,提供自动故障转移功能,确保集群的持续运行。
摘要由CSDN通过智能技术生成

目录

高可靠性与高可用性

日志管理器QJM

搭建HA集群

ZooKeeper简介

自动故障转移


高可靠性与高可用性

高可靠性也可以称为高容错性,体现在一份数据以多份副本的形式存储在datanode中,并且通过自身持续的状态监控快速检测到冗余错误,并且能够快速、自动恢复失效的组件。

可以说高可靠性是保证了datanode上的数据可靠,而普通集群中只有一个namenode,如果唯一namenode失效了,此时任何与集群有关的操作都失效了,因为namenode是唯一存储元数据与块地址映射的地方。这样的话,必须要启动一个新的namenode,并且需要拥有原namenode的文件系统元数据。所以新的namenode需要将命令空间的镜像导入到内存中,重演编辑日志文件,接受足够多的的来自datanode的数据块报告并退出安全模式。而高可靠性解决了集群中的namenode存在的单点故障。

影响集群的可用性主要在于两方面:对于计划外事件(例如计算机崩溃),在操作员重新启动NameNode之前,群集将不可用;计划维护事件(如NameNode计算机上的软件或硬件升级)将导致群集停机。

高可用性是通过在同一集群中运行两个冗余namenode,实际上这是一对活动-备用namenode,当活动namenode失效时,备用namenode会接管它的任务并开始服务来自客户端的请求,期间没有明显的中断,允许机器在崩溃时快速故障转移,解决了集群中的namenode存在的单点故障。

日志管理器QJM

为了达到高可靠性:

  • 两个namenode之间需要通过日志管理器(Quorum Journal Manager)实现编辑日志文件的共享;也就是说namenode需要将客户端操作写到QJM(共享编辑日志)上而不是${hadoop.tmp.dir}/dfs/name/current下。QJM以一组日志节点(journal node)的形式运行,活动namenode的每一次编辑需要写入大多数的日志节点,同时备用namenode也不断从日志节点中读取编辑操作,并且会应用到自己的命令空间中。并且在进行故障转移时,备用namenode会重演共享编辑日志(包括了由之前活动namenode写入的条目),以实现与活动namenode的快速状态同步。
  • 为了提供快速故障转移,由于块映射信息存储在namenode的内存中,所以datanode需要同时向两个namenode发送数据块处理报告和心跳
  • 为了正确操作HA集群,日志节点一次只运行一个namenode(活动namenode)进行写入,否则会发生"脑裂情景",命名空间状态将在两者之间发生分歧。
  • 备用namenode会为活动namenode的命名空间设置周期性检查点,也就是说辅助namenode的角色被备用namenode包含,无需再HA集群中配置Secondary NameNode。

搭建HA集群

硬件要求

  • 运行Active NameNode和Standby NameNode的计算机应具有彼此相同的硬件条件
  • JournalNode守护程序相对轻量级,可以运行在从节点上,必须至少有3个JournalNode守护进程,且应该运行奇数个,当使用N JournalNodes运行时,系统最多可以容忍(N-1)/ 2个故障并继续正常运行。

配置文件

hdfs-site.xml

配置名称服务的昵称

<property>
	<name>dfs.nameservices</name> 
	<value>mycluster</value>
</property>

为名称服务配置相应的ID唯一标识符,每个名称服务最多只能配置两个NameNode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值