Hbase和Hive以及传统数据库的区别

11 篇文章 0 订阅

一、Hbase和Hive

HBase 是一种类似于数据库的存储层,也就是说 HBase 适用于结构化的存储。并且 HBase 是一种列式的分布式数据库。

HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。属于非关系型数据库。

HBase是基于Google BigTable模型开发的,典型的key/value系统;

HBase 底层依旧依赖 HDFS 来作为其物理存储,这点类似于 Hive。

逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像是一个multi-dimensional map

1.实时性:

Hive 适合用来对一段时间内的数据进行分析查询,例如,用来计算趋势或者网站的日志。Hive 不应该用来进行
实时的查询(Hive 的设计目的,也不是支持实时的查询)。因为它需要很长时间才可以返回结果;

HBase 则非适合用来进行大数据的实时查询,例如 Facebook 用 HBase 进行消息和实时的分析。

2.部署:

Hive 一般只要有 Hadoop 便可以工作。

HBase 则还需要 Zookeeper 的帮助(Zookeeper,是一个用来进行布式协 调的服务,这些服务包括配置服务,维护元信息和命名空间服务)

3.SQL查询

HBase 本身只提供了 Java 的 API 接口,并不直接支持 SQL 的语句查询。

Hive 则可以直接使用 HQL(一种类SQL 语言)。

如果想要在 HBase 上使用 SQL,则需要联合使用 Apache Phonenix,或者联合使用 Hive 和HBase。
但是和上面提到的一样,如果集成使用 Hive 查询 HBase 的数据,则无法绕过 MapReduce,
那么实时性还是有一定的损失。Phoenix 加 HBase 的组合则不经过 MapReduce 的框架,
因此当使用 Phoneix加 HBase 的组成,实时性上会优于 Hive 加 HBase 的组合。

4.存储层:

默认情况下 Hive 和 HBase 的存储层都是 HDFS。

但是 HBase 在一些特殊的情况下也可以直接使用本机  的文件系统。例如 Ambari 中的 AMS 服务直接在本地文件系统上运行 HBase

二、Hbase与传统数据库(RDBMS,全称为 Relational Database Management System)

表 1. HBase 与 RDBMS 的区别

 HbaseRDBMS
硬件架构类似于 Hadoop 的分布式集群,硬件成本低廉传统的多核系统,硬件成本昂贵
容错性由软件架构实现,由于由多个节点组成,所以不担心一点或几点宕机一般需要额外硬件设备实现 HA 机制
数据库大小PBGB、TB
数据排布方式稀疏的、分布的多维的 Map以行和列组织
数据类型Bytes丰富的数据类型
数据操作插入、查询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系传统数据库通常有各式各样的函数和连接操作
数据维护Hbase的更新实际上是插入了新的数据传统数据库只是替换和修改
事物支持ACID 只支持单个 Row 级别全面的 ACID 支持,对 Row 和表
查询语言只支持 Java API (除非与其他框架一起使用,如 Phoenix、Hive)SQL
索引只支持 Row-key,除非与其他技术一起应用,如 Phoenix、Hive支持
吞吐量百万查询/每秒数千查询/每秒
事务Hbase只可以实现单行的事务性,意味着行与行之间、表与表之前不必满足事务性传统数据库是可以实现跨行的事务性

存储模式:

Hbase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的,
这样的好处是数据即是索引,访问查询涉及的列大量降低系统的I/O,并且每一列由一个线程来处理,
可以实现查询的并发处理;

传统数据库是基于表格结构和行存储,其没有建立索引将耗费大量的I/O并且建立索引和物化试图需要
耗费大量的时间和资源。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值