Hive vs HBase (配合使用才是最佳方案)
前言
Hive和HBase是Hadoop生态圈两个非常重要的技术,但对于初学者很容易进行混淆,因此这里做一个简单的总结,希望能帮助大家缕出一条比较清晰的思路
一句话概括
Hive是数据仓库,用来分析HDFS上的数据,不过效率低;HBase是数据库,用来更好的组织HDFS上的数据,以便于更加高效的访问HDFS上的数据。
稍微细致的描述
Hive是运行在Hadoop上的一个工具,准确地讲是一个搜索工具。当对海量数据进行搜索时,Hadoop的计算引擎是MapReduce。但是对MapReduce的操作和编程是非常复杂的。于是Hive的存在就让复杂的编程过程简化成了用SQL语言对海量数据的操作。这大大减轻了程序员的工作量。可以说,Hive的存在让海量数据的增删改查更加方便。其实从Hive的logo就可以看出Hive让大象变成了小蜜蜂,化繁为简是它最本质的亮点。
再来说说HBase,它是Hadoop的子项目,当然也可以理解为一个工具。Hadoop的数据运算是由MapReduce完成的,而数据存储是由HDFS完成的。HDFS是分布式存储,这是Hadoop存储数据的特点,但由此带来的问题就是数据的无序和散乱。HBase的产生,很好地解决了这一问题。HBase能够把这些数据映射成一张哈希表,那么,这些数据一旦成为具有实际存储意义的表之后,就由无序变得有序,从而对数据搜索和操作的效率大大提高了。
稍微细致的概括
- Hive是查询引擎,而HBase是专门用户非结构化数据的数据存储
- Hive主要用户批处理(及OLAP),但HBase广泛用于事务处理,其中查询的响应时间不是高度交互的,即OLTP
- 与Hive不同,HBase中的操作在数据库上实时运行,而不是转换为mapreduce作业
- HBase用于实时查询,Hive用于分析查询
可能存在的误区
HBase超级快?
HBase采用的是Key/Value的存储方式,这意味着,即使随着数据量增大,也几乎不会导致查询的性能下降。HBase又是一个列式数据库(对比于传统的行式数据库而言),当你的表字段很多的时候,你甚至可以把其中几个字段放在集群的一部分机器上,而另外几个字段放到另外一部分机器上,充分分散了负载压力。然而,如此复杂的存储结构和分布式的存储方式带来的代价就是:哪怕只是存储少量数据,它也不会很快
一句话概括:
HBase并不快,只是当数据量很大的时候它慢的不明显HBase是数据库,可以做数据分析?
凡事都不可能只有优点而没有缺点。数据分析是HBase的弱项,因为对于HBase乃至整个NoSQL生态圈来说,基本上都是不支持表关联的。当你想实现group by或者order by的时候,你会发现,你需要写很多的
代码来实现MapReduce。
因此,请不要盲目地使用HBase。HBase数据库可以在任何场景下都可以采用?
以下情况请不要使用HBase,而采用Mysql或Oracle:
- 主要需求是数据分析,比如做报表
- 单表数据量不超过千万
因此,相反的场景就建议采用HBase咯:
- 单表数据量超千万,而且并发还挺高
- 数据分析需求较弱,或者不需要那么灵活或者实时
- 每条Hive语句都会出发MapReduce任务?
Hive中对某些情况查询可以避免MapRedeuce任务,也就是所谓的本地模式。
- select * from table;
- 对于where语句中过滤条件只是分区字段的情况(无论是否使用LIMIT语句限制输出记录条数)
SELECT * FROM TABLE_NAME WHERE country = ‘CN’ AND province = ‘Beijing’ LIMIT 100;
- 最好将属性hive.exec.mode.local.auto的值设为true,这样Hive还会尝试使用本地模式执行其他操作
互相搭配使用才是最佳方案
Hive具有高延时的某些限制,而HBase不具备分析功能,将两种技术集成在一起试最佳解决方案。
通常,HBase和Hive在同一Hadoop群集上一起使用。Hive可用作ETL工具,用于批量插入HBase或执行将HBase表中存在的数据与HDFS文件或外部数据存储中存在的数据连接起来的查询。
Hive使用案例
Apache Hive拥有大约0.3%的市场份额,即1902个公司已经在生产中使用Apache Hive。
- Scribd使用Hive进行临时查询,数据挖掘和面向用户的分析
- Hive是Hubspot Hadoop管道不可或缺的一部分,用于近实时Web分析
- 流行的在线广告网络Chitika使用Hive进行数据挖掘和对其4.35亿全球用户群的分析
HBase使用案例
在大数据类别中,HBase的市场份额约为9/1%,即大约有6190家公司使用HBase。公司使用HBase进行时间序列分析或点击流数据存储和分析
- HBase最初的用例是在Google,该公司想为互联网及其用户存储海量数据库
- Facebook使用HBase进行实时分析,计算Facebook点赞次数和进行消息传递
- FINRA金融业监管局使用HBase来存储所有交易图
- Pinterest使用HBase存储图形数据
- Flipboard使用HBase为其用户个性化内容供稿
参考1
参考2
Hive vs HBase (配合使用才是最佳方案)相关推荐
- 网页中嵌入flash的最佳方案
http://solomon.athost.net/?p=549 网页中嵌入flash的最佳方案 各种浏览器差异悬殊,开发者应如何在网页中嵌入flash才是最佳方案?本文介绍的原理亦被应用在swfob ...
- python 解决最佳方案_python使用列表的最佳方案
python使用列表的最佳方案,列表,方式,方法,函数,表达式 python使用列表的最佳方案 易采站长站,站长之家为您整理了python使用列表的最佳方案的相关内容. 经常写Python程序的人,列 ...
- HIVE和HBASE区别
http://www.cnblogs.com/justinzhang/p/4273470.html https://www.zhihu.com/question/21677041 1. 两者分别是什么 ...
- 大数据:Hive和Hbase的区别于优势
1. 前言 最近在研究大数据相关知识,Hive和Hbase是之前本科的时候调研过的两个数据仓库.现在特把这两个数据仓库拿来总结以下,这两个数据仓库各自由各自的特点,可以应用与不同的应用场景.对于大数据 ...
- 浅谈Hive和HBase区别
出处: http://www.cnblogs.com/zlslch/p/5659641.html . 两者分别是什么? Apache Hive是一个构建在Hadoop基础设施之上的数据仓库.通 ...
- hive和hbase区别和联系
作者:有点文 链接:https://www.zhihu.com/question/21677041/answer/185664626 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
- Hive 整合Hbase(来自学习资料--博学谷)
1.摘要 Hive提供了与HBase的集成,使得能够在HBase表上使用HQL语句进行查询 插入操作以及进行Join和Union等复杂查询.同时也可以将hive表中的数据映射到Hbase中. 2.应用 ...
- 查询hive表_大数据中Hive与HBase的区别与联系
二者区别 Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能. Hive本身不存储和计算数据,它完全依赖于HDFS和MapRe ...
- 【华为云技术分享】如何整合hive和hbase
引言 为什么要集成Hive和HBase Hive和Hbase在大数据架构中处在不同位置,Hive是一个构建在Hadoop基础之上的数据仓库,主要解决分布式存储的大数据处理和计算问题,Hive提供了类 ...
最新文章
- 一起谈.NET技术,浅谈如何使用.NET存储XML数据
- linux 错误日志 __ratelimit: XXX callbacks suppressed 原因
- 与阿里云容器服务 ACK 发行版的深度对话第一弹:如何借助 sealer 实现快速构建 部署
- it项目经理带一个项目的完整_如何控制IT项目需求范围?千万别让用户把你带沟里……...
- wdcp安装mysql_安装wdCP,无法连接mysql,解决方法
- pythongui界面复选框数值选择并求和_如何使用Python从图像中分离复选框按钮和复......
- 克罗地亚第二狂想曲难度_黄海保级难度增加,将送强力前锋去富力,与建业竞争半个降级名额...
- python3安装requests_小小-Centos7安装Python3并安装Requests的方法
- 参考文献起止页码怎么写_论文参考文献怎么写?
- 软件测试2019:第七次作业
- [UVALive 3983] Robotruck
- 虎牙面试官:String长度有限制吗?是多少?我:这太...
- android禁止wifi,android – 防止WiFi-direct在不使用时关闭
- cad lisp程序大集_AUTO CAD 命令大集
- 【数据结构】——逆波兰表达式
- 苹果cms详细安装方法
- Multithreading and Synchronization
- IP问问区县级别IP地址库---使用帮助(上篇)
- 什么从什么写短句_照样子写句子.(写清“谁或什么 “在什么地方 “做什么或怎么样 ) 例1:小朋友在河边种树. 例2:麻雀在窝里睡着了. 题目和参考答案——青夏教育精英家教网——...
- steam动态令牌源码(python版本)