hbase是建立在hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。
hbase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了hadoop的文件系统(hdfs)提供的容错能力。
它是hadoop的生态系统,提供对数据的随机实时读/写访问,是hadoop文件系统的一部分。
人们可以直接或通过hbase的存储hdfs数据。使用hbase在hdfs读取消费/随机访问数据。 hbase在hadoop的文件系统之上,并提供了读写访问。
hbase是一个面向列的数据库,在表中它由行排序。表模式定义只能列族,也就是键值对。一个表有多个列族以及每一个列族可以有任意数量的列。后续列的值连续地存储在磁盘上。表中的每个单元格值都具有时间戳。
总之,在一个hbase:表是行的集合à行是列族的集合à列族是列的集合à列是键值对的集合,如图:
hstore分为menstore和storefiles两部分。
用户写入的数据首先会放入memstore,当memstore满了以后会flush成一个storefile(底层实现是hfile),当storefile文件数量增长到一定阈值,会触发compact合并操作,将多个storefiles合并成一个storefile,合并过程中会进行版本合并和数据删除
hbase其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了hbase i/o的高性能架构。
一个hmaster(管理服务器)控制多个region server(数据服务器);
master职责:
1. 为regionserver分配region;
2. 负责regionserver的负载均衡;
3. 垃圾文件回收;
4. 处理schema请求
zookeeper职责:
region职责:
相同点:都是架构在hadoop之上,都是用hadoop作为底层存储
不同点:
hive:
hbase:
如对本文有疑问, 点击进行留言回复!!
去 HBase,Kylin on Parquet 性能表现如何?
如何找到Hive提交的SQL相对应的Yarn程序的applicationId
如何在 HBase Shell 命令行正常查看十六进制编码的中文?哈哈~
网友评论