第一章:了解HBase

HBase

第一章:HBase是什么?



一、前言

Hbase是Apache基金会的Hadoop项目的一部分,使用java语言实现的将HDFS作为底层文件存储系统
2006 年 11 月,Google 公司发表了论文 Bigtable: A Distributed Storage System for Structured Data,但是源码没有对外开放。
2007 年 2 月,项目发起人根据 Bigtable 的技术论文提出了作为 Hadoop 模块的 HBase 原型
由于HDFS依赖Hadoop,所以它的发布也与Hadoop同步。
在 2010 年 HBase 成为 Apache 的顶级项目,此时的 HBase 已经基本实现了 Bigtable 论文中提出的功能。
HBase 虽然基于 Bigtable 的开源实现,但它们之间还是有很多差别的,Bigtable 经常被描述成键值数据库,而 HBase 则是面向列存储的分布式数据库。

二、HBase的优点?

容量大

HBase 的单表可以有百亿行、百万列,可以在横向和纵向两个维度插入数据,具有很大的弹性。
当关系型数据库的单个表的记录在亿级时,查询和写入的性能都会呈现指数级下降,这种庞大的数据量对传统数据库来说是一种灾难,而 HBase 在限定某个列的情况下对于单表存储百亿甚至更多的数据都没有性能问题。
HBase 采用 LSM 树作为内部数据存储结构,这种结构会周期性地将较小文件合并成大文件,以减少对磁盘的访问

按列存储

行存储是按行保存的,即在内存中数据是存完一行存下一行的,而列存储是按列分开保存的。
传统数据库是按行存储的,在进行插入和读取是,行存储需要遍历所有数据库,而列存储则只需要读取相关列,有效降低了系统吞吐量

稀疏性

在关系型数据库中,每列都要指定数据类型,当属性值为空或没有完全占用给的空间时,会造成空间浪费
而在HBase中,不需要指定数据类型。每个值都为cell,cell 中的数据是没有类型的,全部是字节码形式存贮。这样的优点是为空的列并不占用存储空间,也不需要固定的给每个列定义数据类型,分配存储空间,减小了空间资源的浪费。
因此 HBase 的列存储解决了数据稀疏性的问题,在很大程度上节省了存储开销。所以 HBase 通常可以设计成稀疏矩阵,同时这种方式比较接近实际的应用场景。

高可靠性

HBase在设计时就考虑到高可用(HA)的问题,所以HBase自带高可用。当主节点出现故障时,高可用会立马让其它节点顶替出故障的节点,并发出警告。
当其它节点出现故障时,HBase会协调服务组件 ZooKeeper 通知集群的主节点,将故障节点的 HLog 中的日志信息分发到各从节点进行数据恢复防止数据丢失。


三、总结

HBase 是一个开源的、分布式的、版本化的非关系型数据库,它利用 Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS)提供分布式数据存储

HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库,与数据库存储结构完全不同(这个后期会发)


注:HBase自带高可用,且基于HDFS,所以使用前要先开启集群和启动zookeeper,且不需要后期配置高可用,目前高版本的Hadoop也是自带高可用,不需要后期经过复杂的配置。




参考文章:http://c.biancheng.net/view/6500.html

猜你喜欢

转载自blog.csdn.net/tyh1579152915/article/details/109058091