HBase架构设计是怎样的

发布时间:2021-12-09 09:44:19 作者:iii
来源:亿速云 阅读:129

本篇内容介绍了“HBase架构设计是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Hadoop生态的分布式数据库

1、什么是分布式数据库?

从狭义的理解就是分布式关系型数据库,主要特指目前热门的NewSQL。

从广义的理解,分库分表的传统关系型数据库,传统关系型数据库集群,关系型数据库的主从架构,分布式KV数据库(例如:HBase),分布式文档数据库(例如:MongoDB),分布式关系数据库(例如:TiDB)等,统称为分布式数据库。

本文主要讲Google一脉相承的Hadoop生态下的分布式数据库架构设计,以及传统RDBMS与NoSQL的分布式环境下的一致性对比。

2、Hadoop HDFS的数据存储模型

最早Google发明了GFS分布式文件系统,之后对应的开源项目就是鼎鼎大名的Hadoop HDFS。

GFS/HDFS的特点表现在顺序的、成块的、无索引的向文件块中写入数据,并在集群环境中按块(block)均匀分布存储,使用时再根据MapReduce、Spark的并行任务,按块批次的读取分析。这样就把写入和并行读取的性能发挥到了极致,具备了任何建立索引的数据库都无法比拟的读写速度。

HBase架构设计是怎样的

HDFS的数据写入结构示意图

上图是一个写入HDFS数据的例子,我们需要知道HDFS这些事情:

3、HBase的架构设计

为了更好的理解HBase/Bigtable,一定需要先铺陈一下它们所依赖的分布式文件系统基础环境,然后再看看这些巧夺天工的分布式数据库设计如何形成的。

由于GFS/HDFS集群的高性能设计是建立在放弃随机查找的基础之上。那么如何既能拥有随机查找的特性,又能充分利用好HDFS/GFS的集群优势,而且还能在分布式环境下,具备数据写入的强一致性呢?这才涌现出了HBase/Bigtable这类基于分布式文件系统的分布式数据库。

但大家要注意了,实际上HBase/Bigtable的随机查找设计目标并不是解决复杂的join关联查找或二次索引范围查找,而是实现简单的一个K-V查询模型,满足海量数据的存放条件下,通过主键查找结果,能达到毫秒级响应的数据库。

HBase架构设计是怎样的

HBase的数据写入结构示意图

上图就是HBase的写入过程以及HDFS作为物理层支撑的架构示意图。

HBase按照LSM-Tree索引加上SSTable数据结构建立了NoSQL常用的数据存储模型。写入过程分成了下面几个部分:

3、HDFS与HBase的协作配合

从上述的HDFS和HBase系统的配合中(GFS与BigTable同理)我们可以看到Hadoop生态体系设计的巧妙结构:

最关键的就是HBase与HDFS的分工思想,HBase解决业务数据记录写入,K-V随机查找(毫秒级),由Region Server控制的行级事务等一些列分布式数据库特征;而HDFS解决小文件汇聚成大文件的高性能处理,分布式文件系统的海量存储,数据多副本的可靠性,以及成为Mapreduce、Spark、Hive等其他框架与HBase之间协作的基础平台。

HBase架构设计是怎样的

最后再说说有些NoSQL的弱一致性为什么就可以被接受? 

回顾一下最开始的MySQL的异步模式复制,它为什么是MySQL的默认复制模式? 

若满足最终一致性,那么这类分布式系统选择了CAP定理中的AP,就是说为了保证系统内部无论是否出错,都会给客户响应。代价就是分布式各节点的数据副本有可能不一致,但这个问题不是此类系统业务最在乎的事情,往往系统的高性能,并能为客户端提供快速响应力才是关键目标,MySQL的默认主从复制如此,有些NoSQL亦如此。

传世的关系模型

首先从数据库的表达力来讲,并不是NoSQL要强于关系模型,事实上SQL的表达力是无出其右的,否则就不会兴盛四十年而不衰,就不会有Hive SQL、Spark SQL、Presto、Impala这些以支持SQL交互为起点的NoSQL上层框架存在的必须性。

看吧,还没到NewSQL这一代的时候,返祖的现象就已经出现了!

1、我们再温故知新一下什么是关系模型:

关系型模型之父Edgar F. Codd,在1970年Communications of ACM 上发表了《大型共享数据库数据的关系模型》这就是永恒的经典,关系模型的语义设计达到了40年来普世的易于理解,语法的嵌套,闭环,完整。

HBase架构设计是怎样的

关系型模型之父Edgar F. Codd

原始的关系模型:

原始理论具体到实现再翻译成我们好理解的描述:结构、完整性、操作就构成了现在传统数据库的关系模型。

结构:就是我们经常要先对数据库预先定义的表名和字段(名称、类型)

完整性:就是表的主键不能为空,表与表之间的主外键关联必须保证是完整的,外键一定是能找到主键的。

操作:那就是SQL表达式啦,SQL的子查询就是典型的闭包(Closure),可以形成嵌套表达式。

2、虽然NoSQL很火,但我们这个世界没法 NO SQL

HBase/Bigtable可以认为是NoSQL的典型代表

恰恰NoSQL发展至今,出现了Hive SQL,Spark SQL,Presto,Impala,直到基于Google Spanner论文的TIDB,CockroachDB等NewSQL的不断涌现,才让我们用实践证明,无论是NoSQL也好,NewSQL也罢,它们的查询语言客户端又回到了SQL。

我们只是在大数据领域需要替换关系型数据库的存储逻辑,使得数据库更分布式化,更容易实现扩展。这是符合单机性能到了天花板后,必须横向扩展的硬需求,但这也并不是说关系模型就过时了!

像HBase/Bigtable这样的NoSQL,大多数采用了LSM-Tree的索引机制,来替换RDBMS的B-Tree机制,这么做都是为了能实现内存与磁盘,写入与查找的更平衡利用。

它们又用数据分片的水平切分替换RDBMS的分库分表的垂直切分,让节点与集群的水平伸缩性更为自动化,而不是像分库分表那样进行人工复杂的介入。

TiDB这些NewSQL的出现恰恰是在缝合关系模型和分布式存储之间的裂缝,面向客户端依然是关系模型,强化分布式业务更新的强一致性(分布式事务,这是最难的最复杂的地方),面向存储则坚定的选择K-V模型。

例如TIDB的TIKV集群采用的就是rocksdb,rocksdb的底层索引机制又和HBase/Bigtable采用相同设计机制的又一个nosql成员。

因此并不是Google的Spanner论文以及F1,TiDB这些实现技术开了历史的倒车,恰恰是对狂热的nosql运动的一种反思,对成为经典的SQL关系模型理论的一种认真思考和融合。

任何新技术都是站在前辈的基础上开启的,我们总要回头望望,反思新技术的运用到底我们得到了什么,又失去了什么!

“HBase架构设计是怎样的”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. HBase的工作机制是怎样的
  2. 什么是HBase

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

hbase

上一篇:如何进行react Hook的原理分析

下一篇:如何进行v8源码解析hashmap

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》