我们为什么需要HBase?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

我们为什么需要HBase?

2019-12-23 10:02:07 1389 1

转载自:http://www.hbase.group/article/17

我们肯定听说过HBase,但是对于HBase的了解可能仅仅是它是Hadoop生态圈重要的一员,它是大数据技术圈一个很强的开源项目。然后内心os:它很屌,但是我用mysql/oracle。

一门技术的兴起,一个优秀的开源项目的存在肯定是有它所存在的意义,正如大数据一样,正是因为随着时间的发展,随着技术的发展导致我们每天的数据增量达到一个非常庞大的状态,同时在数据之中又能挖掘到很多有用的信息。所以才有了大数据技术的飞速发展。那么,我们为什么需要HBase,什么时候需要HBase呢?

HBase是什么?

HBase(Hadoop Database) 是一个高可靠性,高性能,可伸缩,面向列的分布式数据库(也许叫做存储系统会更加贴切)。

就跟Hadoop本身也是起源与Google发布的GFS和MapReduce相关的论文一样,HBase是Google BigTable的开源实现。它整体的架构与BigTable很类似。例如:Google BigTableHBase利用GFS作为文件存储系统利用HDFS作为文件存储系统运行MapReduce处理存储的海量数据同样利用Hadoop MapReduce处理海量数据利用Chubby作为协同服务利用Zookeeper作为协同服务

HBase与Hadoop的关系非常紧密,Hadoop的HDFS提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定性及failover机制的保障。同时其他周边产品诸如Hive可以与HBase相结合使在HBase进行数据统计处理变得简单,Sqoop为HBase提供了方便的RDBMS数据导入功能,使传统数据库的数据向HBase中迁移变得容易,Spark等高性能的内存分布式计算引擎也可能帮助我们更加快速的对HBase中的数据进行处理分析。

大数据的水很深,但是范围适中。初学者都是扎根于Hadoop的生态圈,HBase是必学技能之一

为什么选择HBase?而不是Mysql或者Oracle

当我们开始学习一门技术的时候总是习惯于将它们与已有的技术进行对比。当我们刚接触python的时候会发现它的简洁与效率,当我们刚接触php的时候也会探寻为啥它是最好的语言没有之一。。。

那么HBase经常会和常见的关系型数据库进行对比:

HBase Mysql or Oracle列式,Nosql数据库行式,关系型数据库只支持byte类型支持多种数据类型支持海量数据存储支持大量数据存储只支持基于rowkey的索引支持每秒百万查询吞吐量每秒数千查询吞吐量事务只支持到row级别完整的事务适合时间序列或者随机查询适合复杂查询,多表关联等数据维护形式单一,更新支持多个版本存在数据增删改查非常方便,直接修改原有数据

其实两者的对比毫无意义,因为两者适用于不同的场景

HBase作为一个NoSQL,不支持完整的事务性,而且仅仅支持基于RowKey的索引,在性能上不如memcached和redis。但是在海量数据,持久化存储方便比内存类型的NoSQL强的多,作为文档型NoSQL在分布式存储上比mongoDB做切分和MapReduce分析也简单方便的多。这一切都源于HBase本身基于Hadoop,可以简单的通过增加廉价节点的方式进行扩展,对于数据本身就可以很好的进行水平切分,同时和HDFS,MapReduce,Spark等结合的很好。不仅可以方便的进行存储同时可以更加方便的对数据进行处理和运算,这才是HBase最核心的特性。这些都是常见的关系型数据库无法比拟的。比其他常见的NoSQL也要强出不少。

当然,HBase并不能解决所有的问题,所以才会有那么多的NoSQL和SQL

HBase典型的应用场景就是不断的插入新的信息。对于持续的大量的插入可以达到每秒百万的吞吐量。对于已有的数据修改的频率是很小的。 Google用自己的BigTable存储互联网上新生成的网页,Facebook的messenger是基于HBase实现的。

举个栗子

在大数据相关的应用之中,假设你要存储用户的地址和喜好。这些当然可以存储到关系型数据库之中,但是假设用户从上海搬到了北京。那么之前上海的地址就要update覆盖掉吗?这种应用场景下,我们需要计算分析用户的整个人生周期的活动记录和喜好,进而推测他的行为,收入,知识层次,信用等等。这些历史行为是不能被丢弃的,所以HBase可以很好的适应这样的场景。

摘自知乎:《HBase为什么火?它适用于哪些业务场景》中向磊的回答。

对于海量小文件存储HBase也是非常适合的。对比于支持文档型数据存储的MongoDB,HBase写优先于随机读,MongoDB的写性能不如读性能。两者虽然都支持MapReduce但是HBase对MapReduce的支持更好,同时HBase本身就支持水平切分,在数据分片上也有很大的优势。同时HBase本身就支持多个版本,对于多版本的数据存储也很方便。Mongo对于复杂查询支持较好,但是我们HBase也有Phoenix。

取消 提交回答
全部回答(1)
相关问答

1

回答

当HBase启动的时候会发生什么?

2021-12-05 23:56:44 267浏览量 回答数 1

1

回答

js中 乘怎么表示

2018-05-10 19:59:23 1710浏览量 回答数 1

4

回答

为什么

2017-04-06 17:56:44 1628浏览量 回答数 4

4

回答

为什么,为什么,为什么

2017-03-10 22:16:23 3844浏览量 回答数 4

3

回答

为什么访问被禁止403

2017-02-04 19:53:11 2816浏览量 回答数 3

1

回答

不知道需要用什么产品

2016-04-27 15:20:07 1796浏览量 回答数 1

1

回答

为什么??

2015-09-21 22:56:19 3135浏览量 回答数 1

4

回答

为什么

2015-05-17 17:05:26 3625浏览量 回答数 4

3

回答

为什么

2014-08-22 21:06:29 4068浏览量 回答数 3

6

回答

为什么

2012-07-08 06:55:17 11982浏览量 回答数 6
+关注
0
文章
776
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载