Hbase组件的一些相关知识


前言

在进行大数据开发等相应应用中,除了一些常用的大数据组件,利用Hive外,也有一些其他类型的组件,比如专属于大数据领域的Hbase开源数据库,在此对其进行了相应的总结。


一、Hbase是什么

HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

二、Hbase用来做什么

海量数据存储:
上百亿行 x 上百万列 并没有列的限制
当表非常大的时候才能发挥这个作用, 最多百万行的话,没有必要放入Hbase 中
准实时查询:
百亿行 x 百万列,在百毫秒以内
存储大量结果集数据,并提供低延迟的随机查询。说的通俗一些,就是一个超级版的数据库,相比较与mysql、postgresql和oracle、sqlserver等关系型数据库而言,能够存储的数据量更大(比关系型数据库大很多很多),同时查询延迟相比较与其他hadoop产品(pig、hive)要低。

三、Hbase的优势是什么

a.容量巨大
HBase 的单表可以有百亿行、百万列,可以在横向和纵向两个维度插入数据,具有很大的弹性。
当关系型数据库的单个表的记录在亿级时,查询和写入的性能都会呈现指数级下降,这种庞大的数据量对传统数据库来说是一种灾难,而 HBase 在限定某个列的情况下对于单表存储百亿甚至更多的数据都没有性能问题。
HBase 采用 LSM 树作为内部数据存储结构,这种结构会周期性地将较小文件合并成大文件,以减少对磁盘的访问。
b.列存储
与很多面向行存储的关系型数据库不同,HBase 是面向列的存储和权限控制的,它里面的每个列是单独存储的,且支持基于列的独立检索。通过下图的例子来看行存储与列存储的区别。
在这里插入图片描述
从上图可以看到,行存储里的一张表的数据都放在一起,但在列存储里是按照列分开保存的。在这种情况下,进行数据的插入和更新,行存储会相对容易。而进行行存储时,查询操作需要读取所有的数据,列存储则只需要读取相关列,可以大幅降低系统 I/O 吞吐量。
c.稀疏性
通常在传统的关系性数据库中,每一列的数据类型是事先定义好的,会占用固定的内存空间,在此情况下,属性值为空(NULL)的列也需要占用存储空间。
而在 HBase 中的数据都是以字符串形式存储的,为空的列并不占用存储空间,因此 HBase 的列存储解决了数据稀疏性的问题,在很大程度上节省了存储开销。所以 HBase 通常可以设计成稀疏矩阵,同时这种方式比较接近实际的应用场景。
d.扩展性强
HBase工作在HDFS之上,理所当然地支持分布式表,也继承了HDFS 的可扩展性。HBase 的扩展是横向的,横向扩展是指在扩展时不需要提升服务器本身的性能,只需添加服务器到现有集群即可。
HBase表根据 Region 大小进行分区,分别存在集群中不同的节点上,当添加新的节点时,集群就重新调整,在新的节点启动 HBase 服务器,动态地实现扩展。这里需要指出,HBase 的扩展是热扩展,即在不停止现有服务的前提下,可以随时添加或者减少节点。
e.高可靠性
HBase 运行在 HDFS 上,HDFS 的多副本存储可以让它在岀现故障时自动恢复,同时 HBase 内部也提供 WAL 和 Replication 机制。
WAL(Write-Ahead-Log)预写日志是在 HBase 服务器处理数据插入和删除的过程中用来记录操作内容的日志,保证了数据写入时不会因集群异常而导致写入数据的丢失;而 Replication 机制是基于日志操作来做数据同步的。
当集群中单个节点出现故障时,协调服务组件 ZooKeeper 通知集群的主节点,将故障节点的 HLog 中的日志信息分发到各从节点进行数据恢复。

四、为什么用Hbase

HBase的存储是基于Hadoop的。Hadoop 是这些年崛起的拥有着高性能,高稳定,可管理的大数据应用平台。Hadoop已经快要变为大数据的代名词了,基于Hadoop衍生出了大量优秀的开源项目。
Hadoop实现了一个分布式文件系统HDFS。HDFS有高容错性的特点,被设计用来部署在低廉的硬件上;而且它提供高吞吐量以访问应用程序的数据,适合那些有着超大数据集的应用程序。基于Hadoop意味着HBase与生俱来的超强的扩展性和吞吐量。
HBase采用的是Key/Value的存储方式,这意味着,即使随着数据量增大,也几乎不会导致查询的性能下降。HBase又是一个列式数据库(对比于传统的行式数据库而言),当你的表字段很多的时候,你甚至可以把其中几个字段放在集群的一部分机器上,而另外几个字段放到另外一部分机器上,充分分散了负载压力。然而,如此复杂的存储结构和分布式的存储方式带来的代价就是:哪怕只是存储少量数据,它也不会很快。所以我常常跟人说:
“HBase并不快,只是当数据量很大的时候它慢的不明显”

五、Hbase解决了什么问题

Hbase解决了当数据库量足够多时,如何处理十亿或者百亿行数据的问题,此时相对于传统的数据库,Hbase就成为了一个很好的选项,其不需要辅助索引,静态类型的列,事务等特性。应用场景有以下:
1.存储业务数据:不同小区的人口信息、个人的定位信息等
2.存储日志数据:登录日志、中间件访问日志、推送日志、业务操作日志等信息
3.存储业务附件:图像、视频、文档等附件信息

总结

总的来说,Hbase是一种基于大数据的专用数据库,其主要存储非结构化数据,其优点在于保持了良好的扩展性。在进行大量数据处理的时候仍能保持优良的性能。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HBase和Hive是在大数据架构中协作关系的两个组件。Hive是一种类SQL的引擎,可以运行MapReduce任务,用于进行统计查询。而HBase是一种在Hadoop之上的NoSQL的key-value数据库,可以用于实时查询。两者可以通过API接口互相通信来实现整合。通过HBaseStorageHandler,Hive可以获取到Hive表所对应的HBase表名、列簇和列,以及创建和删除HBase表等操作。HBase是构建在HDFS上的分布式数据库,具有高可靠性、高性能、列储、可伸缩和实时读写等特点。与MySQL相比,HBase是列式储,适用于大数据领域。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Hive与HBase之间的区别和联系](https://blog.csdn.net/weixin_44894162/article/details/126280823)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Hive与Hbase的区别与联系](https://blog.csdn.net/weixin_42011858/article/details/127649012)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Hbase/Hive知识概要](https://blog.csdn.net/TU_JCN/article/details/125667427)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值