09|为什么HBase能够实现海量数据的实时随机存取?
彭旭
你好,我是彭旭。
上节课我们讲到 HBase 通过自动管理数据分区以及弹性伸缩应对数据的增长。这两个特性解决了我们云服务需求中的运维成本问题。
这节课我们从性能入手,看看 HBase 为什么能够在高并发场景下也做到秒到毫秒级的实时随机存取,替换掉 MySQL。顺便看看 HBase 是如何实现高可用,解决的云服务高可用与故障恢复的问题。
先来看一下 HBase 在读写上是怎样优化性能的。
HBase 写入性能优化
第 2 讲的时候我们介绍过 LSM 数据结构,HBase 就是使用 LSM 的一个典型代表,LSM 对写入的性能优化,这里我们直接复习一下。
总体来说,HBase 数据写入的时候,无论是新增数据还是更新删除数据,都会先写入 MemStore 这个内存组件。
MemStore 在内存中会使用一个有序的数据结构,比如 NavigableSet,所以数据写入就已经排好序。当 MemStore 的大小达到配置的阈值或者经过一定时间后,MemStore 就会将数据刷新输出到磁盘。这里会是一个磁盘的批量顺序写入,所以速度很快。又因为数据已经排好序,所以后续数据的读取也能够基于索引去做二分查找等快速读取。
在我们云服务中,其实大部分时候都是新增写入场景,或者修改了单条数据,比如修改联系人。新增的数据可以顺序写入磁盘。单条或者多条的联系人数据更新,原本需要的磁盘随机 IO,也被转化成为了内存的读写与磁盘的顺序写入。而内存的写入基本上是纳秒到微秒级别,这样,数据的写入性能就有了一个巨大的提升。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
1. HBase通过LSM数据结构实现写入性能优化,将磁盘的随机写转化为内存的随机写和磁盘的顺序写入,大幅提升数据写入性能。 2. HBase通过多种缓存技术和数据结构优化实现读取性能优化,包括缓存命中、StoreFile合并、布隆过滤器和索引等机制,保障单一请求读写性能达到毫秒级。 3. HBase天然支持水平扩展,通过动态扩容RegionServer实现高并发支持,高性能与高并发相辅相成,保障系统在高并发环境下的稳定运行。 4. HBase的数据存储在HDFS上,HDFS提供了数据多副本、服务多节点的能力,保障数据高可用性和容灾能力。 5. HBase的服务层面的高可用是通过RegionServer的故障转移实现的,保证数据的高可用与服务的持续性。 6. HBase客户端从ZK上获取元数据表信息,缓存元数据表数据,实现数据读写请求的高效处理。 7. HBase通过使用LSM、合并、布隆过滤器、缓存等手段实现高性能保障,将读写响应都控制在毫秒级。 8. HBase能够实现RegionServer的在线弹性伸缩,支持快速故障转移,提供服务上的高可用。 9. HBase Master、RegionServer都采用的是集群模式,可以实现秒级故障转移,系统不存在单点问题。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式数据库从入门到实战》,新⼈⾸单¥59
《分布式数据库从入门到实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- lufofire思考题: 1. 读写性能影响:一个client请求,如果查询找到真正负责读取RegionServer,本身就是代理转发过程,有一定网络延迟。 2. 增加master和ZK管理压力:RegionServer状态监控,元数据管理,更多RegionServer意味着更多的元数据读写。 另外一个关于HBase的高并发, 文章简单说了扩缩容, 没有详细说明在扩容后,HBase如何做了哪些事情来保证高可用,比如服务发现和节点故障后如何处理。另外,只是通过依赖CK来着保活和元数据管理, 本身是不够的,毕竟从ZK组件也有缺陷,比如ZooKeeper 集群的性能受到其最慢节点的影响,在大规模的读写操作下,性能可能会成为瓶颈。再比如相比etcd, zk本身没有很好的watcher机制,如何进行服务状态监控呢?2024-06-28归属地:广东
收起评论