目录
1.Hbase和关系型数据库的区别
关系型数据库 | Hbase | |
存储 | 适合结构化数据,单机存储 | 适合结构化和半结构数据的松散数据,分布式存储 |
功能 | (1)支持ACID (2)支持join (3)使用主键PK (4)数据类型:int、varchar等 | (1)仅支持单行事务 (2)不支持join,把数据糅合到一张大表 (3)行键 row key (4)数据类型:byte[] |
2.Hbase和HDFS的区别
HDFS | Hbase | |
功能 | (1)具有高吞吐量,是一个非常适合存储大型文件的分布式文件系统。 (2)适合于批量数据处理, 主要应用离线OLAP, 不支持随机读写(即:无法在文件中快速查询某个数据) | (1)基于hadoop, 和 HDFS是一种强依赖关系, HBase的吞吐量不是特别高, 支持高效的随机读写特性(即:大型表提供快速记录查找(和更新))为 (2)HBase内部将大量数据放在HDFS中名为「StoreFiles」的索引中,以便进行高速查找。 (3) Hbase比较适合做快速查询等需求,而不适合做大规模的OLAP应用。 |
思考:HBase是基于HDFS, 但是HDFS并不支持随机读写特性, 但是HBase却支持高效的随机读写特性, 两者貌似出现了一定的矛盾关系?
HBase是基于HDFS之上的一个分布式的列存储数据库,而HDFS是一个分布式文件系统。虽然HDFS本身不支持随机读写,但是HBase通过其自身的结构和实现方式,可以在HDFS之上实现高效的随机读写特性。
具体来说,HBase将数据按行分片存储在HDFS上,每个数据行可以根据其行键进行快速定位和访问。HBase还采用了B树索引和布隆过滤器等技术来加速随机查询的速度。同时,HBase还通过缓存、批量操作等手段来提高随机写入的性能。因此,HBase可以在HDFS之上实现高效的随机读写,从而满足更广泛的应用需求。
3.Hbase和Hive的区别
Hbase | Hive |
1. NoSQL数据库。 2. 是一种面向列存储的非关系型数据库。 3. 用于存储结构化和非结构化的数据。 4. 适用于单表非关系型数据的存储,不适合做关联查询,类似JOIN等操作。 5. 基于HDFS。 6. 数据持久化存储的体现形式是Hfile,存放于DataNode中,被ResionServer以region的形式进行管理。 7. 延迟较低,接入在线业务使用. 8. 面对大量的企业数据,HBase可以直线单表大量数据的存储,同时提供了高效的数据访问速度。 | 1. 数据仓库工具。 2. Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询。 3. 用于数据分析、清洗。 4. Hive适用于离线的数据分析和清洗,延迟较高 5. 基于HDFS、MapReduce。 6. Hive存储的数据依旧在DataNode上,编写的HQL语句终将是转换为MapReduce代码执行。 |
总结 |
---|
1.Hive和Hbase是两种基于Hadoop的不同技术实现。 (1)Hive是一种类SQL的引擎,并且运行MapReduce任务。 (2)Hbase是一种在Hadoop之上的NoSQL 的Key/value数据库。 2.Hive可以用来进行统计查询,HBase可以用来进行实时查询,数据也可以从Hive写到HBase,或者 从HBase写回Hive。 |