Hive vs HBase (配合使用才是最佳方案)

前言

Hive和HBase是Hadoop生态圈两个非常重要的技术,但对于初学者很容易进行混淆,因此这里做一个简单的总结,希望能帮助大家缕出一条比较清晰的思路
Hive vs HBase (配合使用才是最佳方案)_第1张图片

一句话概括

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用于分析查询

可能存在的误区

  1. HBase超级快?
    HBase采用的是Key/Value的存储方式,这意味着,即使随着数据量增大,也几乎不会导致查询的性能下降。HBase又是一个列式数据库(对比于传统的行式数据库而言),当你的表字段很多的时候,你甚至可以把其中几个字段放在集群的一部分机器上,而另外几个字段放到另外一部分机器上,充分分散了负载压力。然而,如此复杂的存储结构和分布式的存储方式带来的代价就是:哪怕只是存储少量数据,它也不会很快
    一句话概括:
    HBase并不快,只是当数据量很大的时候它慢的不明显

  2. HBase是数据库,可以做数据分析?
    凡事都不可能只有优点而没有缺点。数据分析是HBase的弱项,因为对于HBase乃至整个NoSQL生态圈来说,基本上都是不支持表关联的。当你想实现group by或者order by的时候,你会发现,你需要写很多的
    代码来实现MapReduce。
    因此,请不要盲目地使用HBase。

  3. HBase数据库可以在任何场景下都可以采用?
    以下情况请不要使用HBase,而采用Mysql或Oracle:

  • 主要需求是数据分析,比如做报表
  • 单表数据量不超过千万

因此,相反的场景就建议采用HBase咯:

  • 单表数据量超千万,而且并发还挺高
  • 数据分析需求较弱,或者不需要那么灵活或者实时
  1. 每条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,HBase)