大数据面试题:HBase的RegionServer宕机以后怎么恢复的?

面试题来源:

《大数据面试题 V4.0》

大数据面试题V3.0,523道题,679页,46w字

可回答:1)HBase一个节点宕机了怎么办;2)HBase故障恢复

参考答案:

1、HBase常见故障

导致RegionServer故障的原因:

  • FullGc引起长时间停顿

  • HBase对Jvm堆内存管理不善,未合理使用堆外内存

  • Jvm启动参数配置不合理

  • 业务写入或吞吐量太大

  • 写入读取字段太大

  • HDFS异常

    • 读取写入数据都是直接操作hdfs的,若hdfs发生异常,会导致region server直接宕机
  • 机器宕机

    • 物理节点直接宕机

    • 虚拟云主机不稳定,包括网络环境等

2、HBase常见故障恢复

Master故障恢复原理

在HBase体系结构中,Master主要负责实现集群的负载均衡和读写调度,并没有直接参与用户的请求,所以整体负载并不很高。

HBase采用基本的热备方式来实现Master高可用。通常情况下要求集群中至少启动两个Master进程,进程启动之后会到ZooKeeper上的Master节点进行注册,注册成功后会成为ActiveMaster,其他在Master节点未注册成功的进程会到另一个节点Backup-Masters节点进行注册,并持续关注Active Master的情况,一旦Active Master发生宕机,这些Backup-Masters就会立刻得到通知,它们再次竞争注册Master节点,注册成功就可成为Active Master。

一方面,Active Master会接管整个系统的元数据管理任务,包括管理ZooKeeper以及meta表中的元数据,并根据元数据决定集群是否需要执行负载均衡操作等。另一方面,Active Master会响应用户的各种管理命令,包括创建、删除、修改表,move、merge region等命令。

RegionServer故障恢复原理

Master如何检测RegionServer宕机:

  • HBase检测宕机是通过Zookeeper实现的, 正常情况下RegionServer会周期性向Zookeeper发送心跳,一旦发生宕机,心跳就会停止,超过一定时间(SessionTimeout)Zookeeper就会认为RegionServer宕机离线,并将该消息通知给Master。

一旦RegionServer发生宕机,HBase会马上检测到这种宕机,并且在检测到宕机之后将宕机RegionServer上的所有Region重新分配到集群中其他正常的RegionServer上,再根据HLog进行丢失数据恢复,恢复完成之后就可以对外提供服务。整个过程都是自动完成的,并不需要人工介入。

基本原理如下图所示:

1)Master检测到RegionServer宕机。HBase检测宕机是通过ZooKeeper实现的,正常情况下RegionServer会周期性向ZooKeeper发送心跳,一旦发生宕机,心跳就会停止,超过一定时间(SessionTimeout)ZooKeeper就会认为RegionServer宕机离线,并将该消息通知给Master。

2)切分未持久化数据的HLog日志。RegionServer宕机之后已经写入MemStore但还没有持久化到文件的这部分数据必然会丢失,HBase提供了WAL机制来保证数据的可靠性,可以使用HLog进行恢复补救。HLog中所有Region的数据都混合存储在同一个文件中,为了使这些数据能够按照Region进行组织回放,需要将HLog日志进行切分再合并,同一个Region的数据最终合并在一起,方便后续按照Region进行数据恢复。

3)Master重新分配宕机RegionServer上的Region。RegionServer宕机之后,该RegionServer上的Region实际上处于不可用状态,所有路由到这些Region上的请求都会返回异常。但这种情况是短暂的,因为Master会将这些不可用的Region重新分配到其他RegionServer上,但此时这些Region还并没有上线,因为之前存储在MemStore中还没有落盘的数据需要回放。

4)回放HLog日志补救数据。第3步中宕机RegionServer上的Region会被分配到其他RegionServer上,此时需要等待数据回放。第2步中提到HLog已经按照Region将日志数据进行了切分再合并,针对指定的Region,将对应的HLog数据进行回放,就可以完成丢失数据的补救工作。

5)恢复完成,对外提供服务。数据补救完成之后,可以对外提供读写服务。

HBase故障恢复流程总结如下:

  • 故障检测

  • 数据切分

  • region上线

  • 数据回放

相关推荐
Casual_Lei30 分钟前
Impala如何使用
大数据
Data 3172 小时前
Shell脚本编程基础(二)
大数据·linux·运维·数据仓库·sql·centos·bash
最强大神3 小时前
2025年最新大数据毕业设计选题-基于Hive分析相关
大数据·数据仓库·毕业设计·毕业设计选题·大数据毕业设计选题·大数据毕设·大数据毕设选题
Lansonli3 小时前
大数据Flink(一百二十):Flink SQL自定义函数(UDF)
大数据·sql·flink
GISer_Jing4 小时前
前端面试CSS常见题目
前端·css·面试
八了个戒4 小时前
【TypeScript入坑】什么是TypeScript?
开发语言·前端·javascript·面试·typescript
知识分享小能手4 小时前
mysql学习教程,从入门到精通,SQL ORDER BY 子句(14)
大数据·开发语言·数据库·sql·学习·mysql·大数据开发
最强大神5 小时前
2025年最新大数据毕业设计选题-Hadoop综合项目
大数据·hadoop·毕业设计·毕业设计选题·大数据毕业设计选题·大数据毕设·大数据毕设选题
鸡c5 小时前
es的封装
大数据·elasticsearch·搜索引擎
A133038145366 小时前
电商店群模式如何利用云分账实现自动化资金管理
大数据