Hive & HBase & MySQL

参考

定义

MySQL

关系型数据库,主要面向 OLTP,支持事务,支持二级索引,支持 SQL,支持主从,Group Replication 架构模型。

HBase

Hadoop Database 的简称,基于 Hadoop 的数据库,是面向列的分布式 NoSQL 数据库,基于 HDFS,支持海量数据读写(尤其是写),支持上亿行,上百万列,比较适合 OLAP。天然分布式,主从架构,不支持事务,不支持二级索引。主要适用于海量明细数据的随机实时查询。

Hive

Hive 是 Hadoop 的数据仓库,主要是让开发人员通过 SQL 来计算和处理 HDFS 上的结构化数据,适用于离线的批量数据计算。

数据存储方式

MySQL

行存储,MySQL 行存储的方式比较适合 OLTP 业务。

Hbase

HBase 不是行式存储,也不是完全的列式存储,而是面向列族的列族式存储。

HBase 的每一列数据在底层都是以 Key / Value 形式存储的,而针对一行数据,同一列族的不同列的数据是顺序相邻存放的,这种模式实际上是行式存储;而如果一个列族下只有一个列的话,就是一种列式存储。因此我们可以说HBase是一种列族式存储。

HBase 通过存储 Key / Value 来工作。支持四种主要操作:增加或更新行,查看一个范围内的 KEY 的 VALUE,获取指定行,删除指定「行,列,或列的版本」。(Hot Key + 同一对象不同时间的数据放在一起)。

Hive

通过元数据来描述 HDFS 上的结构化文本数据,即定义一张表来描述 HDFS 上的结构化文本,包括列名,数据类型等,便于处理数据。很多 SQL On Hadoop 的计算引擎均用的是 Hive 的元数据。

引擎

Hive

通过 SQL 来处理和计算 HDFS 的数据,Hive 会将 SQL 翻译为 MapReduce 来处理数据。

HBase

HBase 是 Google BigTable 的开源实现,底层存储引擎是基于 LSM-Tree 数据结构设计的。

总结

Hive 和 HBase 是两种基于 Hadoop 的不同技术
Hive 是类 SQL 引擎,运行 MapReduce 任务
HBase 是在 Hadoop 之上的 NoSQL Key / Value 数据库

默认情况下 HBase 只对 RowKey 做了单列索引,所以 HBase 能通过 RowKey 进行高效的的单点查询及小范围扫描。HBase 索引还是比较单一的,通过非 RowKey 列查询性能比较低,除非对非 Rowkey 列做二级索引,否则不建议根据非 Rowkey 列做查询。

HBase 的二级索引一般是基于 HBase 协处理器实现,目前比较成熟的方案可以使用 Phoenix,HBase 集成 Phoenix 构建二级索引实践,Phoenix 不仅能够为 HBase 提供二级索引能力,还扮演着 HBase 的 SQL 层,增强了 HBase 即席查询的能力。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容