夏梦竹谈Hive vs. HBase的区别
对于刚接触大数据的用户来说,要想区分Hive与HBase是有一定难度的。本文将尝试从其各自的定义、特点、限制、应用场景等角度来进行分析,以作抛砖引玉之用。
Hive是什么?
Apache Hive是一个构建于Hadoop(分布式系统基础架构)顶层的数据仓库,注意这里不是数据库。Hive可以看作是用户编程接口,它本身不存储和计算数据;它依赖于HDFS(Hadoop分布式文件系统)和MapReduce(一种编程模型,映射与化简;用于大数据并行运算)。其对HDFS的操作类似于SQL—名为HQL,它提供了丰富的SQL查询方式来分析存储在HDFS中的数据;HQL经过编译转为MapReduce作业后通过自己的SQL 去查询分析需要的内容;这样一来,即使不熟悉MapReduce 的用户也可以很方便地利用SQL 语言查询、汇总、分析数据。而MapReduce开发人员可以把己写的mapper 和reducer 作为插件来支持Hive 做更复杂的数据分析。
HBase是什么?
Apache HBase是运行于HDFS顶层的NoSQL(=Not Only SQL,泛指非关系型的数据库)数据库系统。区别于Hive,HBase具备随即读写功能,是一种面向列的数据库。HBase以表的形式存储数据,表由行和列组成,列划分为若干个列簇(row family)。例如:一个消息列簇包含了发送者、接受者、发送日期、消息标题以及消息内容。每一对键值在HBase会被定义为一个Cell,其中,键由row-key(行键),列簇,列,时间戳构成。而在HBase中每一行代表由行键标识的键值映射组合。Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
特性
遵从JDBC的Hive不但可以让具SQL知识的用户来间接执行MapReduce作业,同时里面也整合了目前基于SQL的操作工具。不过,由于默认的数据读取是全表遍历的,其时间的耗费也不可避免地相对较大。尽管如此,不尽相同的Hive分区方法,其遍历读取的数据量也是能够有所限制的。Hive分区允许对存储在独立文件上的数据进行筛选查询,返回的是筛选后的数据。例如针对日期的日志文件访问,前提是该类文件的文件名包含日期信息。
HBase以键值对的形式储存数据。其包含了4种主要的数据操作方式:
- 添加或更新数据行
- 扫描获取某范围内的cells
- 为某一具体数据行返回对应的cells
- 从数据表中删除数据行/列,或列的描述信息
列信息可用于获取数据变动前的取值(透过HBase压缩策略可以删除列信息历史记录来释放存储空间)。
限制
Hive不支持常规的SQL更新语句,如:数据插入,更新,删除。因为其对数据的操作是针对整个数据表的。同时该特点也使得数据查询用时以数分钟甚至数小时来进行计算。此外,其MapReduce转换过程必须遵从预定义的转换规则。
HBase的数据查询是有一套属于自己类似SQL的操作语言的,这个需要一定的学习来掌握。此外,要运行HBase,ZooKeeper是需要配备的。ZooKeeper是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
应用举例
Hive适用于网络日志等数据量大、静态的数据查询。例如:用户消费行为记录,网站访问足迹等。但是不适用于联机实时在线查询的场合。
HBase能在大数据联机实时查询场合大展身手。例如:Fackbook就利用其对用户间的传送的消息进行联机实时分析。
小结
Hive与HBase两者是基于Hadoop上不同的技术。Hive是一种能执行MapReduce作业的类SQL编程接口,Hbase是一种非关系型的数据库结构。结合这两者自身的特点,互相结合使用或许能收到相得益彰的效果。例如:利用Hive处理静态离线数据,利用HBase进行联机实时查询,而后对两者间的结果集进行整合归并,从而使得数据完整且永葆青春,为进一步的商业分析提供良好支持。
夏梦竹谈Hive vs. HBase的区别的更多相关文章
- [转]浅谈Hive vs. HBase 区别在哪里
浅谈Hive vs. HBase 区别在哪里 导读:Apache Hive是一个构建于Hadoop(分布式系统基础架构)顶层的数据仓库,Apache HBase是运行于HDFS顶层的NoSQL(=No ...
- Hive和HBase的区别 转载:https://www.cnblogs.com/guoruibing/articles/9894521.html
1.Hive和HBase的区别 1)hive是sql语言,通过数据库的方式来操作hdfs文件系统,为了简化编程,底层计算方式为mapreduce. 2)hive是面向行存储的数据库. 3)Hive本身 ...
- 浅谈Hive vs HBase
Hive是什么? Apache Hive是一个构建于Hadoop(分布式系统基础架构)顶层的数据仓库,注意这里不是数据库.Hive可以看作是用户编程接口,它本身不存储和计算数据:它依赖于HDFS(H ...
- Hive和HBase的区别
一.两者分别是什么: Apache Hive是一个构建在Hadoop基础设施之上的数据仓库.通过Hive可以使用HQL语言查询存放在HDFS上的数据.HQL是一种类SQL语言,这种语言最终被转 ...
- Hive与Hbase的区别
1. 两者分别是什么? Apache Hive是一个构建在Hadoop基础设施之上的数据仓库.通过Hive可以使用HQL语言查询存放在HDFS上的数据.HQL是一种类SQL语言,这种语言最终被 ...
- hive和hbase本质区别——hbase本质是OLTP的nosql DB,而hive是OLAP 底层是hdfs,需从已有数据库同步数据到hdfs;hive可以用hbase中的数据,通过hive表映射到hbase表
对于hbase当前noSql数据库的一种,最常见的应用场景就是采集的网页数据的存储,由于是key-value型数据库,可以再扩展到各种key-value应用场景,如日志信息的存储,对于内容信息不需要完 ...
- hive与hbase的区别与联系
共同点:1.hbase与hive都是架构在hadoop之上的.都是用hadoop作为底层存储 区别:2.Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统,HBa ...
- hive与hbase的联系与区别
hive与hbase的联系与区别: 共同点: 1.hbase与hive都是架构在hadoop之上的.都是用hadoop作为底层存储. 他们的底层是要通过mapreduce分布式计算的,hbase.hi ...
- [转帖]hive与hbase的联系与区别:
https://www.cnblogs.com/xubiao/p/5571176.html 原作者写的很好.. 这里面简单学习总结一下.. 都是bigdata的工具, 都是基于google的bigta ...
随机推荐
- [转] Maven镜像配置
参考:许晓斌的<Maven实战> 镜像是为了提供更快的服务 如图:X就认为是Y的一个镜像. 编辑settings.xml配置中央仓库镜像: <settings> ... < ...
- [转] Form表单中method="post/get'的区别
Form提供了两种数据传输的方式——get和post.虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响.虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一 ...
- codevs 3336 电话网络
#include<iostream> #include<cstdio> #include<cstring> #include<queue> #defin ...
- 001-视频 video
<!DOCTYPE HTML> <html> <body> <video width="320" height="240&quo ...
- eclipse[日文版] 的SVN 上传步骤
可能有些朋友在日企上班,肯定要用到SVN,可是一般就下载和更新,没有用到上传 这里来介绍下上传 1.项目右键 2.点击Share Project 3.点击SVN下一步 4.选择你的上传的服务器地址 5 ...
- DNX概述
1. 什么是.NET执行环境 ? .NET Execution Environment(DNX) 是一个SDK 和运行时环境,它包含所有的你需要创建和运行.net应用程序的组件.它提供一个主机进程,C ...
- sql语句分页代码
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO alter proc sp_SelectInfomationByKeyWord--创建一个存储过程 - ...
- 知识点总结之HTML篇
1.标签语义化: ①.在不依赖样式的情况下,页面能够呈现清晰的结构. ②.如果使用者有视觉障碍,屏幕阅读器会完全根据你的标记来选择读取你的网页. ③.有利于搜索引擎依赖于标记来确定上下文和各个关键字的 ...
- GitHub-修改以下host-ip可加快访问速度
#GitHub START 207.97.227.239 github.com 204.232.175.94 gist.github.com 107.21.116.220 help. ...
- excel设置单元格不可编辑
把允许编辑的单元格选定,右键-设置单元格格式-保护,把锁定前的对钩去掉.再点工具-保护工作表.这样就可以只让你刚才设定的单元格允许编辑,其他不允许.