您当前的位置:首页 > 电脑百科 > 数据库 > 百科

分布式存储系统Apache HBase的现状和发展

时间:2022-07-08 14:52:20  来源:  作者:DataFunTalk

导读:Apache HBase(Hadoop Database),是一个基于google BigTable论文设计的高可靠性、高性能、可伸缩的分布式存储系统。全文将围绕以下几个方面展开:

  • HBase是什么
  • HBase社区的发展
  • HBase2.0
  • HBase未来规划
  • 如何成为Committer

01

HBase是什么

 

HBase(Hadoop Database),是一个基于Google BigTable论文设计的高可靠性、高性能、可伸缩的分布式存储系统。

它有以下特征:

  • HBase仍然是采用行存储的,采用松散表的结构来获得动态列的功能;
  • 原生海量数据分布式存储。在单个数据库中可以存档GB甚至上pb。在一行中也可以存储上百万列。任何大小的数据量都适合采用HBase;
  • 不仅支持随机查询,还支持范围查询;
  • 高吞吐,低延迟。一个集群可以有上千万个dps,平均的延迟可以做到一毫秒之内;
  • 在线NOSQL数据库;
  • 多版本,增量导入,多维删除。

 

分布式存储系统Apache HBase的现状和发展

 

1.HBase的四大基因

(1)自动分区

最开始的时候,我们的数据库是单机的数据库。慢慢的我们发现单机的数据库无法承受数据和访问的爆发式增长。因此就出现了分库分表的方案。将数据库和表拆分到多个服务器上,然后利用中间件作为一个路由。这里就会遇到一个问题,随着数据的增加,中间件就会成为一个瓶颈。如果请求量爆发式增长的时候,要加载新的进去,整个物理的变化需要进行搬迁之后才能够进行使用。

而在HBase中,使用的是自动分区功能。当访问量和请求量增加的时候它可以自动的进行数据分片,以应对数据和请求的爆发式增长。

分布式存储系统Apache HBase的现状和发展

 

(2) LSM-Tree

LSM(Log Structured Merge)Tree,它的一个重要的功能就是随机写变成顺序写。

现在LSM模型是大数据库的标配。它主要包括如下几个特点:

  • 写吞吐量高
  • 不受hdd随机写瓶颈和ssd随机写入放大干扰
  • 超强数据导入能力

 

分布式存储系统Apache HBase的现状和发展

 

(3)存储计算分离

HBase本身不会存任何数据。数据都是存储在底层的HDFS中。存储计算分离有以下好处:负载均衡更高效、资源扩容更节省、存储优化更便捷。

分布式存储系统Apache HBase的现状和发展

 

(4)HBase生态

HBase有一个非常强大的朋友圈。具体见下:

分布式存储系统Apache HBase的现状和发展

 

2.场景

HBase是几乎可以满足所有的大数据场景需求。比如说对象存储,比如说推荐系统。比如说用来存储订单,用来存储聊天记录。高性能推送的朋友圈应用的场景。针对一些其他的场景,我们可以利用HBase加上组件能力来实现这些场景的应用。比如说HBase加linux,来实现NEWSQL的数据库。比如说HBase加上geomesa来实现时空数据的存储,滴滴就是采用这种方案来存储他们的轨迹数据。在物联网场景,可以采用HBase加openjsdb来存储海量的时序数据。

分布式存储系统Apache HBase的现状和发展

 

3.使用HBase的商业公司

基本上每一个大型的公司都在使用HBase。

分布式存储系统Apache HBase的现状和发展

 

4.HBase特性总结

HBase,为大数据而生,有LSM树:离线导入效率巨高 、实时写入吞吐大、增量导入隔离性强;伸缩性强;TTL:数据时效性,系统自动处理、时效性的个性化设置;多版本:数据的第三维度、高效删除方式;动态列:数据发散的利器;协处理器:数据校正、高效适应个性化;异构介质多副本存储:海量与实时的性价比满足;Erasure Code:因大而生。

分布式存储系统Apache HBase的现状和发展

 

--

02

HBase社区的发展

1.HBase的起源

HBase于2006年诞生于Powerset,一家从事自然语言处理和搜索的创业公司(后被微软收购)

HBase的实现基于Google发布的BigTable论文,用来解决 Hadoop中随机读写效率低下的问题。HBase最初的开发人员是MichaelStack和JimKellerman。2007年4月,HBase做为一个模块提交到Hadoop的代码库中,代码量~8000行,2010年5月HBase成为Apache的顶级项目,同年,Facebook把HBase使用在其消息平台中。

2.HBase项目现状

目前HBase的代码已经超过100万行,HBase仍然是最活跃的Apache项目之一,拥有76个Committer,42位PMC,共有328位Contributor,其中14位 Committer/PMC 来自中国。

分布式存储系统Apache HBase的现状和发展

 

3.HBase目前版本

HBase目前版本众多。见下图:

分布式存储系统Apache HBase的现状和发展

 

--

03

HBase2.0

1. HBase2.0版本发布历史

HBase2.0的发布是一部血泪史,因为在四年前已经有这个版本了,由于一些因素,造成了没有人管理。最后花了一年多的时间才稳定他的版本发布出来,他的Release Manger多次更换,才把他发布出来。由此,我们吸取了这次教训,我们以后会做好版本控制,把控好发布的节奏。

分布式存储系统Apache HBase的现状和发展

 

2. 新功能

(1)Region Replica

Region Replica这个功能在1.2版本中已经存在,但是为什么叫做新功能呢?是因为之后修改了很多bug,在1.4版本才稳定下来,然后1.4和2.0是同时发布的。在CAP理论中,HBase一直是一个CP系统,遵循强一致的读写语义,所以Server宕机后需要一定的恢复时间,如果宕机了,客户端可以从另外的副本中去读取数据,Region Replica为数据分片Region准备了多个副本,host在不同的RegionServer上,同时,客户端也可以做到,对多个副本同时发请求,然后做到选择最快速的那个副本,提供高可用读,宕机0影响,规避抖动,毛刺,降低P999延迟;缺点是需要额外耗费CPU/Memory资源,但不会占用额外空间。

分布式存储系统Apache HBase的现状和发展

 

(2)读写链路Off-heap

第二个新功能是全链路Off-heap,意思就是读写链路数据端到端Off-heap,减少JAVA GC带来的停顿,进一步降低P999延迟,提高吞吐。这个功能我们从两方面来实现的:写链路Off-heap,我们使用在RPC层使.NETty的Off-heap ByteBuffer,使用支持Off-heap的Protobuf。同时使用Off-heap的Chunk 来存储Memstore中的KeyValue。

在读链路Off-heap方面,使用Off-heap的Bucket Cache,HBase自己管理内存的,我们从Bucket Cache读取数据的时候,先要从Protobuf做一次拷贝,因为可能读取的时候,发生内存不够了,再次分配的情况。在读取对Bucket Cache进行引用计数,保证读取的时候,内存不会被回收掉,读取时不再需要先拷贝到heap,对Bucket Cache进行了一系列性能优化。

分布式存储系统Apache HBase的现状和发展

 

后面这是HBase官方放着阿里巴巴在双十一对HBase优化之后的对比图,可以看到优化之后他的请求的曲线更加平稳,吞吐量增长了30%,这个案例大家可以去HBase的官方去看一下。

分布式存储系统Apache HBase的现状和发展

 

(3)In Memory Compaction

在HBase2.0中另外一个重磅的功能就是In Memory Compaction,以前我们知道HBase中使用的数据结构是java中原生的跳表,但是跳表依然是一个松散的结构,这样的话,虽然内存不断的在增大,但是刷到之后,会造成通过In memory的flush不会到hdfs上,反而回转到更加紧凑的CellArrayMap这个结构,同时多个CellArrayMap会在内存中做compaction,使内存的使用更加紧凑。然后通过In memory的flush和compaction,在内存中可以存储更多的数据,因此可以提高读性能,同时减少磁盘IO,减轻compaction小文件造成的写放大。这个功能社区也有介绍。

分布式存储系统Apache HBase的现状和发展

 

(4)小对象存储MOB

之前我们建议在HBase上不要存很大的KV值,但是MOB(Moderate Object Storage) 功能使HBase能高效地存储那些100k~10M 中等大小的对象。这使得用户可以把文档、图片对象保存到HBase系统中,用户写入的小对象flush成一个独立文件,原有的KV中的value只存这个对象的引用路径,对于存储对象文件,更少地进行compaction来减少写入放大效应。

分布式存储系统Apache HBase的现状和发展

 

(5)Assignment MangerV2

这是一个非常重要的模块,HBase中的状态流转,建表删表,都需要在Assignment MangerV2上进行,之前旧AM系统参与角色多,状态更新混乱,效率低,无事务保证,容易出现RIT问题。所以AM V2使用ProcedureV2来保证 Table/Region状态转换在master重启后仍然能恢复执行,然后去除了Zookeeper做为中间角色,Master/RegionServer直接交互,Region assign/unassgin速度大大提升。

分布式存储系统Apache HBase的现状和发展

 

(6)其他

在HBase2.0中,还有非常多的新功能,具体如下:

分布式存储系统Apache HBase的现状和发展

 

3.兼容性和升级建议

建议如下:

分布式存储系统Apache HBase的现状和发展

 

--

04

HBase未来规划

1. HBaseConAsia & 开发者圆桌会议

HBase众多开发者也会参加这个会议,参与讨论它的未来发展方向。

2. 更加易用

HBase已经提供了,Java的API,但是这个案例不太友好,我们目前打算提供Native的SQL接口,能够做到轻量级的SQL支持、内置的二级索引方案、与Spark SQL更好地结合等功能。

分布式存储系统Apache HBase的现状和发展

 

3. 更高性能

在以后的版本中,不用在对HBase的性能担心了,我们在以后的版本中准备从Use CCSMap to improve HBase YGC tim、全链路异步化、基于非易失存储的WALLess方案等方面努力成为LSM模型下性能最好的Java存储引擎。

分布式存储系统Apache HBase的现状和发展

 

4.更强扩展性和稳定性

这个方面我们以下几个方面来解决:

分布式存储系统Apache HBase的现状和发展

 

--

05

如何成为Committer

分布式存储系统Apache HBase的现状和发展

 


分布式存储系统Apache HBase的现状和发展

 


分布式存储系统Apache HBase的现状和发展

 


分布式存储系统Apache HBase的现状和发展

 

今天的分享就到这里,谢谢大家。



Tags:Apache HBase   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
分布式存储系统Apache HBase的现状和发展
导读:Apache HBase(Hadoop Database),是一个基于Google BigTable论文设计的高可靠性、高性能、可伸缩的分布式存储系统。全文将围绕以下几个方面展开: HBase是什么 HBase社区的发...【详细内容】
2022-07-08  Search: Apache HBase  点击:(382)  评论:(0)  加入收藏
▌简易百科推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  京东云开发者    Tags:向量数据库   点击:(9)  评论:(0)  加入收藏
原来 SQL 函数是可以内联的!
介绍在某些情况下,SQL 函数(即指定LANGUAGE SQL)会将其函数体内联到调用它的查询中,而不是直接调用。这可以带来显著的性能提升,因为函数体可以暴露给调用查询的规划器,从而规划器...【详细内容】
2024-04-03  红石PG  微信公众号  Tags:SQL 函数   点击:(7)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28    51CTO  Tags:NoSQL   点击:(19)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  dbaplus社群    Tags:数据库连接池   点击:(19)  评论:(0)  加入收藏
八个常见的数据可视化错误以及如何避免它们
在当今以数据驱动为主导的世界里,清晰且具有洞察力的数据可视化至关重要。然而,在创建数据可视化时很容易犯错误,这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可...【详细内容】
2024-03-26  DeepHub IMBA  微信公众号  Tags:数据可视化   点击:(11)  评论:(0)  加入收藏
到底有没有必要分库分表,如何考量的
关于是否需要进行分库分表,可以根据以下考量因素来决定: 数据量和负载:如果数据量巨大且负载压力较大,单一库单一表可能无法满足性能需求,考虑分库分表。 数据增长:预估数据增长...【详细内容】
2024-03-20  码上遇见你  微信公众号  Tags:分库分表   点击:(17)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  dbaplus社群    Tags:SQL   点击:(13)  评论:(0)  加入收藏
应对慢SQL的致胜法宝:7大实例剖析+优化原则
大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什...【详细内容】
2024-03-14  京东云开发者    Tags:慢SQL   点击:(13)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12    InfoQ  Tags:数据库   点击:(37)  评论:(0)  加入收藏
SQL优化的七个方法,你会哪个?
一、插入数据优化 普通插入:在平时我们执行insert语句的时候,可能都是一条一条数据插入进去的,就像下面这样。INSERT INTO `department` VALUES(1, '研发部(RD)', &#39...【详细内容】
2024-03-07  程序员恰恰  微信公众号  Tags:SQL优化   点击:(24)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条