最近因为在面试中提到了 HBase ,所有对 HBase 有点兴趣想去了解下。
Apache HBase 是 Hadoop 数据库,一个分布式、可伸缩的大数据存储。
HBase是依赖Hadoop的。为什么HBase能存储海量的数据? 因为HBase是在HDFS 的基础之上构建的,HDFS是分布式文件系统。
HDFS
如果你看到 HDFS 这个单词,基本上你就知道在说 Hadoop 了。
要知道,所有针对大数据的处理都是从存储开始的,如果存储一团糟,效率低下,那么大数据的处理也没有办法实现。
HBase 就是在 HDFS 的基础上创建一个 NoSQL,简单点来说就是在基于 Hadoop 的文件系统基础上,我们提供一个 NoSQL。
MongoDB
一说到 NoSQL,首先想到的可能就是 MongoDB 了。
为什么大的互联网公司包括金融行业都在 HBase 呢?
原因就在于写入的速度,hbase 由于只维护一个主键,写入的速度要比 MongoDB 这种要维护所有索引的数据库快多了。hbase占用两台机器能完成的事情,MongoDB要占用更多的机器。
但是代价就是 hbase 记录下东西以后,只能事后通过全表检索或按照索引范围的方式进行整体分析,而不能对具体每个人的数据进行实时分析,更强调数据分析能力而不是实时数据查询能力。
举个例子,对于用户访问网站的大量数据,我们需要怎么进行分析呢?
因为这些数据的价值低,但是量很大,非常大。
因此 Hbase 对这类数据的处理是有先天有优势的,MongoDB 通常就没有太大有优势了。
对于一些非实时的分析数据,我们使用 hbase 可能更加有优势。