如何区分Hive与HBase

  如何区分Hive与HBase,要想区分Hive与HBase是有必定难度的。下面是给你们整理的关于从其各自的定义、特色、限制、应用场景等角度来进行分析,以帮助你们更好的理解、区分Hive和HBase。
  HBase是什么?
  ApacheHBase是运行于HDFS顶层的NoSQL(NotOnlySQL,泛指非关系型的数据库)数据库系统。区别于Hive,HBase具有随即读写功能,是一种面向列的数据库。HBase以表的形式存储数据,表由行和列组成,列划分为若干个列簇(rowfamily)。例如:一个消息列簇包含了发送者、接受者、发送日期、消息标题以及消息内容。每一对键值在HBase会被定义为一个Cell,其中,键由row-key(行键),列簇,列,时间戳构成。而在HBase中每一行表明由行键标识的键值映射组合。Hbase目标主要依靠横向扩展,经过不断增长廉价的商用服务器,来增长计算和存储能力。
  Hive是什么?
  ApacheHive是一个构建于Hadoop(分布式系统基础架构)顶层的数据仓库,注意这里不是数据库。Hive能够看做是用户编程接口,它自己不存储和计算数据;它依赖于HDFS(Hadoop分布式文件系统)和MapReduce(一种编程模型,映射与化简;用于大数据并行运算)。其对HDFS的操做相似于SQL—名为HiveQL,简称HQL,它提供了丰富的SQL查询方式来分析存储在HDFS中的数据;HQL通过编译转MapReduce做业后经过本身的SQL去查询分析须要的内容;这样一来,即便不熟悉MapReduce的用户也能够很方便地利用SQL语言查询、汇总、分析数据,下降学习成本,提升工做效率。而MapReduce开发人员能够把己写的mapper和reducer做为插件来支持Hive作更复杂的数据分析。
  特性
  听从JDBC的Hive不但可让具SQL知识的用户来间接执行MapReduce做业,同时里面也整合了目前基于SQL的操做工具。不过,因为默认的数据读取是全表遍历的,其时间的耗费也不可避免地相对较大。尽管如此,不尽相同的Hive分区方法,其遍历读取的数据量也是可以有所限制的。Hive分区容许对存储在独立文件上的数据进行筛选查询,返回的是筛选后的数据。例如针对日期的日志文件访问,前提是该类文件的文件名包含日期信息。
  HBase以键值对的形式储存数据。其包含了4种主要的数据操做方式:
  1.添加或更新数据行
  2.扫描获取某范围内的cells
  3.为某一具体数据行返回对应的cells
  4.从数据表中删除数据行/列,或列的描述信息
  列信息可用于获取数据变更前的取值(透过HBase压缩策略能够删除列信息历史记录来释放存储空间)。
  限制
  Hive不支持常规的SQL更新语句,如:数据插入,更新,删除。由于其对数据的操做是针对整个数据表的。同时该特色也使得数据查询用时以数分钟甚至数小时来进行计算。此外,其MapReduce转换过程必须听从预约义的转换规则。
  HBase的数据查询是有一套属于本身相似SQL的操做语言的,这个须要必定的学习来掌握。此外,要运行HBase,ZooKeeper是须要配备的。ZooKeeper是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
  应用举例
  Hive适用于离线网络日志等数据量大、静态的数据查询。例如:用户消费行为记录,网站访问足迹等。可是不适用于联机实时在线查询的场合。
  HBase能在大数据联机实时查询场合大展身手。例如:Fackbook就利用其对用户间的传送的消息进行联机实时分析。数据库

相关文章
相关标签/搜索