HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。(来源:https://baike.baidu.com/item/HBase/7670213?fr=aladdin)
HBase是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的一部分。
HDFS和HBase
HDFS HBase
HDFS是适于存储大容量文件的分布式文件系统。 HBase是建立在HDFS之上的数据库。
HDFS不支持快速单独记录查找。 HBase提供在较大的表快速查找
它提供了高延迟批量处理;没有批处理概念。 它提供了数十亿条记录低延迟访问单个行记录(随机存取)。
它提供的数据只能顺序访问。 HBase内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。
HBase是一个面向列的数据库,在表中它由行排序。表模式定义只能列族,也就是键值对。一个表有多个列族以及每一个列族可以有任意数量的列。后续列的值连续地存储在磁盘上。表中的每个单元格值都具有时间戳。总之,在一个HBase:
• 表是行的集合。
• 行是列族的集合。
• 列族是列的集合。
• 列是键值对的集合。
HBase数据表结构包括:
1、行键Row Key:主键是用来检索记录的主键,访问hbasetable中的行。
2、列族Column Family:Table在水平方向有一个或者多个ColumnFamily组成,一个ColumnFamily中可以由任意多个Column组成,即ColumnFamily支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。
3、列column:由Hbase中的列族ColumnFamily + 列的名称(cell)组成列。
4、单元格cell:HBase中通过row和columns确定的为一个存贮单元称为cell。
5、版本version:每个 cell都保存着同一份数据的多个版本。版本通过时间戳来索引。
结构图:
HBase有三个主要组成部分:客户端库,主服务器和区域服务器。区域服务器可以按要求添加或删除。
主服务器的作用:
1、分配区域给区域服务器并在Apache ZooKeeper的帮助下完成这个任务
2、处理跨区域的服务器区域的负载均衡。它卸载繁忙的服务器和转移区域较少占用的服务器
3、通过判定负载均衡以维护集群的状态
4、负责模式变化和其他元数据操作,如创建表和列
区域服务器的作用:
1、与客户端进行通信并处理数据相关的操作
2、句柄读写的所有地区的请求
3、由以下的区域大小的阈值决定的区域的大小
Zookeeper的作用:
1、Zookeeper管理是一个开源项目,提供服务,如维护配置信息,命名,提供分布式同步等
2、Zookeeper代表不同区域的服务器短暂节点。主服务器使用这些节点来发现可用的服务器
3、除了可用性,该节点也用于追踪服务器故障或网络分区
4、客户端通过与zookeeper区域服务器进行通信
5、在模拟和独立模式,HBase由zookeeper来管理
HBase介绍
最新推荐文章于 2021-12-29 18:30:12 发布