前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ZooKeeper在HBase中的应用

ZooKeeper在HBase中的应用

作者头像
加米谷大数据
发布于 2018-06-04 09:24:34
发布于 2018-06-04 09:24:34
2.4K0
举报
文章被收录于专栏:加米谷大数据加米谷大数据

HBase主要用ZooKeeper来实现HMaster选举与主备切换、系统容错、RootRegion管理、Region状态管理和分布式SplitWAL任务管理等。

HMaster选举与主备切换

HMaster选举与主备切换的原理和HDFS中NameNode及YARN中ResourceManager的HA原理相同。

系统容错

当HBase启动时,每个RegionServer都会到ZooKeeper的/hbase/rs节点下创建一个信息节点(下文中,我们称该节点为”rs状态节点”),例如/hbase/rs/[Hostname],同时,HMaster会对这个节点注册监听。当某个 RegionServer 挂掉的时候,ZooKeeper会因为在一段时间内无法接受其心跳(即 Session 失效),而删除掉该 RegionServer 服务器对应的 rs 状态节点。与此同时,HMaster 则会接收到 ZooKeeper 的 NodeDelete 通知,从而感知到某个节点断开,并立即开始容错工作。

HBase为什么不直接让HMaster来负责RegionServer的监控呢?如果HMaster直接通过心跳机制等来管理RegionServer的状态,随着集群越来越大,HMaster的管理负担会越来越重,另外它自身也有挂掉的可能,因此数据还需要持久化。在这种情况下,ZooKeeper就成了理想的选择。

RootRegion管理

对应HBase集群来说,数据存储的位置信息是记录在元数据region,也就是RootRegion上的。每次客户端发起新的请求,需要知道数据的位置,就会去查询RootRegion,而RootRegion自身位置则是记录在ZooKeeper上的(默认情况下,是记录在ZooKeeper的/hbase/meta-region-server节点中)。当RootRegion发生变化,比如Region的手工移动、重新负载均衡或RootRegion所在服务器发生了故障等是,就能够通过ZooKeeper来感知到这一变化并做出一系列相应的容灾措施,从而保证客户端总是能够拿到正确的RootRegion信息。

Region管理

HBase里的Region会经常发生变更,这些变更的原因来自于系统故障、负载均衡、配置修改、Region分裂与合并等。一旦Region发生移动,它就会经历下线(offline)和重新上线(online)的过程。

在下线期间数据是不能被访问的,并且Region的这个状态变化必须让全局知晓,否则可能会出现事务性的异常。对于大的HBase集群来说,Region的数量可能会多达十万级别,甚至更多,这样规模的Region状态管理交给ZooKeeper来做也是一个很好的选择。

分布式SplitWAL任务管理

当某台RegionServer服务器挂掉时,由于总有一部分新写入的数据还没有持久化到HFile中,因此在迁移该RegionServer的服务时,一个重要的工作就是从WAL中恢复这部分还在内存中的数据,而这部分工作最关键的一步就是SplitWAL,即HMaster需要遍历该RegionServer服务器的WAL,并按Region切分成小块移动到新的地址下,并进行日志的回放(replay)。

由于单个RegionServer的日志量相对庞大(可能有上千个Region,上GB的日志),而用户又往往希望系统能够快速完成日志的恢复工作。因此一个可行的方案是将这个处理WAL的任务分给多台RegionServer服务器来共同处理,而这就又需要一个持久化组件来辅助HMaster完成任务的分配。当前的做法是,HMaster会在ZooKeeper上创建一个SplitWAL节点(默认情况下,是/hbase/SplitWAL节点),将“哪个RegionServer处理哪个Region”这样的信息以列表的形式存放到该节点上,然后由各个RegionServer服务器自行到该节点上去领取任务并在任务执行成功或失败后再更新该节点的信息,以通知HMaster继续进行后面的步骤。ZooKeeper在这里担负起了分布式集群中相互通知和信息持久化的角色。

小结:

以上就是一些HBase中依赖ZooKeeper完成分布式协调功能的典型场景。但事实上,HBase对ZooKeepr的依赖还不止这些,比如HMaster还依赖ZooKeeper来完成Table的enable/disable状态记录,以及HBase中几乎所有的元数据存储都是放在ZooKeeper上的。

由于ZooKeeper出色的分布式协调能力及良好的通知机制,HBase在各版本的演进过程中越来越多地增加了ZooKeeper的应用场景,从趋势上来看两者的交集越来越多。HBase中所有对ZooKeeper的操作都封装在了org.apache.hadoop.hbase.zookeeper这个包中,感兴趣的同学可以自行研究。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加米谷大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Zookeeper 原理与实践
1、Zookeeper 的由来 在Hadoop生态系统中,许多项目的Logo都采用了动物,比如 Hadoop 和 Hive 采用了大象的形象,HBase 采用了海豚的形象,而从字面上来看 ZooKeeper 表示动物园管理员,所以大家可以理解为 ZooKeeper就是对这些动物(项目组件)进行一些管理工作的。 对于单机环境多线程的竞态资源协调方法,我们一般通过线程锁来协调对共享数据的访问以保证状态的一致性。 但是分布式环境如何进行协调呢?于是,Google创造了Chubby,而ZooKeeper则是对于Ch
用户1177713
2018/02/24
2.5K0
Zookeeper 原理与实践
Hbase-2.0.0_04_Hbase原理 1.1. Hbase特性:
参考博客:Hadoop HBase概念学习系列之HBase里的Zookeeper(二十一)
踏歌行
2020/10/15
2.2K0
Hbase-2.0.0_04_Hbase原理
    




        1.1. Hbase特性:
深入理解HBase架构:从理论到实践
HBase 是一个分布式的、面向列存储的 NoSQL 数据库,基于 Google 的 Bigtable 设计,用于处理海量的结构化数据。HBase 架构的独特性使其在大数据领域得到了广泛应用。本文将详细介绍 HBase 的架构设计,从理论概念到实践部署,并结合具体实例进行分析。
数字扫地僧
2024/08/27
4960
HBase原理(一):架构理解
Apache HBase 是基于 Hadoop 构建的一个分布式的、可伸缩的海量数据存储系统。常被用来存放一些海量的(通常在TB级别以上)、结构比较简单的数据,如历史订单记录,日志数据,监控 Metrics 数据等等,HBase 提供了简单的基于 Key 值的快速查询能力。
create17
2019/05/28
1.3K0
【赵渝强老师】HBase的体系架构
在学习HBase的体系架构之前,需要先了解一下HBase中的一些术语。这些术语如下表所示。
赵渝强老师
2024/08/12
2530
【赵渝强老师】HBase的体系架构
京东JDHBase异地多活实践
JDHBase在京东集团作为线上kv存储,承担了大量在线业务,11.11、6.18 均经历了每天万亿级读写访问请求,目前规模达到7000+节点,存储容量达到了90PB。场景涉及商品订单、评价、用户画像、个性推荐、金融风控、物流、监控等700+业务。
大数据技术架构
2020/03/11
1.5K0
全网最细致的 HBase 内核解析
最近在网上看到一篇很好的讲 HBase 架构的文章(原文:https://mapr.com/blog/in-depth-look-hbase-architecture/),简洁明了,图文并茂,所以这里将其翻译成中文分享。图片引用的是原文中的,技术性术语会尽量使用英文,在比较重要的段落后面都会加上我个人理解的点评。
大数据技术架构
2019/08/19
9630
全网最细致的 HBase 内核解析
Hbase面试题(面经)整理
Hbase 中的每张表都通过行键 (rowkey) 按照一定的范围被分割成多个子表(HRegion),默认一个 HRegion 超过 256M 就要被分割成两个,由 HRegionServer 管理,管理哪些 HRegion 由 Hmaster 分配。 HRegion 存取一个子表时,会创建一个 HRegion 对象,然后对表的每个列族 (Column Family) 创建一个 store 实例, 每个 store 都会有 0个或多个 StoreFile 与之对应,每个 StoreFile 都会对应一个 HFile , HFile 就是实际的存储文件,因此,一个 HRegion 还拥有一个 MemStore 实例。
全栈程序员站长
2022/09/04
1.8K0
Hbase面试题(面经)整理
ZooKeeper典型应用
参考了:https://www.jianshu.com/p/84ad63127cd1
程裕强
2022/05/06
4240
深入理解HBase架构
在这篇博客文章中,我们主要深入看一下H Base 的体系结构以及在 NoSQL 数据存储解决方案主要优势。
smartsi
2019/11/28
1.8K0
深入理解HBase架构
hbase数据原理及基本架构
hbase是apache hadoop生态系统中的重要一员,主要用于海量结构化数据存储
用户1217611
2020/06/19
8080
hbase数据原理及基本架构
深入浅出HBase实战 | 青训营笔记
HDFS是一种开源的分布式文件系统,基于常见商用硬件构建海量大规模存储集群,提供极低的存储成本,极大的存储容量支持。 HDFS提供高可靠性的数据保障,通常采用三副本冗余存储数据到不同的机器来实现容灾备份能力。 HBase基于HDFS实现存储计算分离架构的分布式表格存储服务
鳄鱼儿
2024/05/21
2150
深入浅出HBase实战 | 青训营笔记
HBase系统架构
HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,底层基大数据存储与管理于Hadoop的HDFS来存储数据。 HBase的系统架构包括客户端、Zookeeper服务器、HMaster服务器、和RegionServer服务器这些组件。HBase集群也是主从模式,HMaster是主服务器,regionServer是从服务器,在集群中可允许有多个regionserver。
用户9615083
2022/12/25
1.1K0
HBase系统架构
Hbase原理、基本概念、基本架构
Hbase原理、基本概念、基本架构 概述 HBase是一个构建在HDFS上的分布式列存储系统; HBase是基于Google BigTable模型开发的,典型的key/value系统; HBa
汤高
2018/01/11
3.1K0
Hbase原理、基本概念、基本架构
HBase常见面试题[通俗易懂]
读: 找到要读数据的region所在的RegionServer,然后按照以下顺序进行读取:先去BlockCache读取,若 BlockCache没有,则到Memstore读取,若Memstore中没有,则到HFile中去读。 写: 找到要写数据的region所在的RegionServer,然后先将数据写到WAL(Write-Ahead Logging,预写日志系统)中,然后再将数据写到Memstore等待刷新,回复客户端写入完成。
全栈程序员站长
2022/09/03
9940
内含面试|一文搞懂HBase的基本原理
温馨提示:本文内容较长,如果觉得有用,建议收藏。另外记得分享、点赞、在看,素质三连哦!
数据社
2020/09/08
9770
内含面试|一文搞懂HBase的基本原理
深入了解HBase架构
HBase架构组件 从物理结构上讲,HBase由三种类型的服务器构成主从式架构。Region Servers为数据的读取和写入提供服务。当访问数据时,客户端直接和Region Servers通信。Region的分配,DDL (create, delete tables)操作有HBase Master进程处理。Zookeeper是HDFS的一部分,维护着一个活动的集群。 Hadoop DataNode 存储着Region Server所管理的数据。所有的HBase数据存储在HDFS的文件中。Region S
Spark学习技巧
2018/06/22
1.1K0
ZooKeeper在HBase集群中的作用
ZooKeeper作为分布式协调组件,在大数据领域的其他分布式组件中往往扮演着重要的辅助角色,因此我们就算不单独去研究ZooKeeper,也短不了要接触它。本文就以最典型的HBase为例,简要介绍ZooKeeper为HBase提供了哪些功能。
Flink实战剖析
2022/04/20
1.5K0
ZooKeeper在HBase集群中的作用
HBase原理详解【Master、Region Server内部机制、Zookeeper、读写数据流程、hbase:meta表】
2、管理和分配HRegion,比如在HRegion split时分配新的HRegion;在HRegion Server退出时迁移其负责的HRegion到其他HRegionServer上。
Java架构师必看
2021/05/14
2.5K0
HBase原理详解【Master、Region Server内部机制、Zookeeper、读写数据流程、hbase:meta表】
HBase原理 | HBase RegionServer宕机数据恢复
HBase采用类LSM的架构体系,数据写入并没有直接写入数据文件,而是会先写入缓存(Memstore),在满足一定条件下缓存数据再会异步刷新到硬盘。为了防止数据写入缓存之后不会因为RegionServer进程发生异常导致数据丢失,在写入缓存之前会首先将数据顺序写入HLog中。如果不幸一旦发生RegionServer宕机或者其他异常,这种设计可以从HLog中进行日志回放进行数据补救,保证数据不丢失。HBase故障恢复的最大看点就在于如何通过HLog回放补救丢失数据。
大数据技术架构
2021/08/25
3K0
HBase原理 | HBase RegionServer宕机数据恢复
相关推荐
Zookeeper 原理与实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档