zoukankan      html  css  js  c++  java
  • Hive与HBase的区别

    从使用方面讲

    • Hive是一个构建在Hadoop平台上的数据仓库,可以将结构化的数据文件映射为一张数据库表。通过Hive可以使用HQL语言查询存放在HDFS上的数据。HQL是一种类SQL语言,这种语言最终被转化成Map/Reduce。
    • HBase 是基于HDFS平台的Key/Value类型的NoSql数据库,是一个分布式、可扩展、存储海量数据的数据库,并且对与null值保存不占用空间。HBase能够在数据库上实时运行,而不是运行MapReduce任务。HBase被分区成表,表格又进一步分割成列族。列族必须使用Schema定义,列族将某一类型的列集合起来。例如:"message"列族可能包含"to"、"from" 、"date" 、"body"等列。HBase中每一个Key/Value被定义为一个cell,一个完整的cell由rowkey、列族、列、时间戳组成。在HBase中,行是Key/Value映射的集合,整个映射通过rowkey来唯一标识。HBase利用Hadoop的基础设施,可以进行水平扩展。

    两者的特点

    • Hive帮助熟悉SQL的人运行MapReduce任务。运行Hive查询会花费较长时间,因为Hive的默认计算引擎是Hadoop的MapReduce。当然Hive也可以将底层计算引擎更换为Spark/Tez等。
    • HBase通过存储Key/Value类型数据来工作。它支持四种主要的操作:增加或者更新行、查看一个范围内的cell、获取指定的行、删除指定的行、列或者列的版本。HBase数据的版本信息主要用来获取历史数据,每一行的历史数据可以被删除,然后通过HBase 的Compactions可以释放空间。虽然HBase包括表格,但是schema仅仅被表格和列族所要求,列不需要schema。HBase的表包括增加和计数功能。

    限制

    • Hive目前仅支持ORCFile文件格式的数据更新操作(前提是需要开启事务支持),Hive必须提供预先定义好的schema,将文件映射成表。
    • HBase的SQL查询功能可以通过 Apache Phonenix实现,需要提供表的schema。HBase的运行需要zookeeper的支持,zookeeper用来分布式协调服务(配置服务、维护元信息、命名空间服务)

    应用场景

    • Hive主要用户构建基于Hadoop平台的数据仓库,处理大数据量的离线处理工作;
    • HBase适合用来大数据的实时查询、海量数据的存储、离散型数据的存储;

    总结

    Hive和Hbase是两种基于Hadoop的不同技术–Hive是一种类SQL的引擎,并且运行MapReduce任务,HBase是一种在Hadoop之上的NoSQL 的Key/value数据库。当然,这两种工具是可以同时使用的。Hive可以用来进行统计查询,HBase可以用来进行实时查询,数据也可以从Hive写到Hbase,设置再从Hbase写回Hive。

  • 相关阅读:
    SpringMvc执行流程
    Lock wait timeout exceeded; try restarting transaction解决方法
    MySQL删除复杂的重复数据的解决方案(一条数据项中包含多个值的情况)
    数据移植时递归运算查询部门及其下级所有部门的问题
    IDEA常用插件
    mybatis和mybatisPlus中解决实体类字段与数据库关键字冲突问题
    时间日期操作
    spring项目中使用MD5加密方式
    idea如何调出仪表盘
    scanf使用过程中的技巧与坑位
  • 原文地址:https://www.cnblogs.com/sx66/p/12039155.html
Copyright © 2011-2022 走看看