同期文章:
HDFS知识体系(知其然,知其所以然) - 掘金 (juejin.cn)
YARN:分布式资源管理框架 - 掘金 (juejin.cn)
一文了解MapReduce的前世今生 - 掘金 (juejin.cn)
一文了解Hive的前世今生 - 掘金 (juejin.cn)
在学大数据内容的过程中,Hive和HBase是两个非常重要的内容,对于初学者而言容易混淆。所以通过对比的方法,能够帮助我们对这两个组件有一个清晰的认识和定位。
首先还要从两者的概念入手。
一、 Hive与Hbase分别是什么
Hive
Hive是运行在Hadoop上的一个工具,准确地讲是一个搜索工具。
当对海量数据进行搜索时,Hadoop的计算引擎是MapReduce。但是对MapReduce的操作和编程是非常复杂的。于是Hive的存在就让复杂的编程过程简化成了用SQL语言对海量数据的操作。这大大减轻了程序员的工作量。可以说,Hive的存在让海量数据的增删改查更加方便。
其实从Hive的logo就可以看出Hive让大象变成了小蜜蜂,化繁为简是它最本质的亮点。
Hbase
再来说说HBase,它是Hadoop的子项目,当然也可以理解为一个工具。
Hadoop的数据运算是由MapReduce完成的,而数据存储是由HDFS完成的。HDFS是分布式存储,这是Hadoop存储数据的特点,但由此带来的问题就是数据的无序和散乱。
HBase的产生,很好地解决了这一问题。HBase能够把这些数据映射成一张哈希表,那么,这些数据一旦成为具有实际存储意义的表之后,就由无序变得有序,从而对数据搜索和操作的效率大大提高了
总结
hive可以认为是MapReduce的一个包装。hive的意义就是把好写的hive的sql转换为复杂难写的MapReduce程序。
hbase可以认为是HDFS的一个包装。他的本质是数据存储,是个NoSql数据库;hbase部署于HDFS之上,并且克服了hdfs在随机读写方面的缺点。
二、 Hive与Hbase的联系与区别
相同点
HBase 和 Hive 都是架构在 Hadoop 之上,用 HDFS 做底层的数据存储,用 MapReduce 做数据计算
所以这俩玩意儿真的很不一样。
不同点
对比项 | Hive | HBase |
---|---|---|
设计初衷 | 为分析而生的ETL工具,降低MapReduce编程复杂度 | 为查询而生的NoSQL数据库,弥补Hadoop不支持实时查询的缺陷 |
数据存储 | 纯逻辑表,依赖HDFS存储 | 物理表,在HDFS上构建超大内存Hash表存储索引 |
存储方式 | 行式存储 | 列式存储,准确来说是列族存储 |
数据类型 | 只适用结构化数据 | 适合结构化和半结构化数据 |
查询语言 | 支持SQL查询 | 不支持SQL,有自己的查询语言 |
查询方式 | 基于MapReduce批处理,不支持单行记录操作,延迟较高 | 单行记录的实时CRUD,响应速度快 |
优势 | 简化MapReduce编程,通过SQL实现数据分析和ETL | 高效的实时查询和读写操作 |
适用场景 | 离线数据分析、数据仓库 | 频繁的在线查询和事务处理 |
三、适用场景
Hive和HBase各自的优势决定了它们不同的适用场景。
Hive使用Hadoop进行批处理,所以适合对历史数据进行分析挖掘。它全面支持SQL查询,可以处理复杂的表关系,进行聚合分组等分析操作。但是存在数据延时的问题,不适合实时查询和频繁的CRUD操作。
Hbase是以key-value形式存储的准实时数据库,支持对大量数据的实时查询和访问。它适合日志存储、内容管理系统等不需要完全结构化的数据的存储。但不适合多表关联、多级索引等复杂关系的应用场景。
总体来说,Hive更适合用于离线的大数据分析和数据仓库应用,利用SQL查询进行数据挖掘;HBase更适合频繁的在线事务处理,需要快速查询和访问大量数据的应用场景。
两者可以很好地配合使用:Hive进行批量的复杂数据分析,HBase存储频繁查询的热点数据。Hive输出的分析结果可以写入HBase,供应用实时查询。两者搭配使用,可以构建高效稳定的数据分析和查询系统。