Hbase 是什么?
Hbase 是一个架构在 Hdfs 文件系统上的列式存储, 是开源的, 分布式, 面向列的数据库. 适合于非结构化数据存储的数据库.
Hbase 是一个高可靠, 高性能, 面向列, 可伸缩的分布式存储系统, 可以在廉价的 PC Server 搭建大规模结构化存储集群.
1,HBase 位于 Hadoop 生态系统的结构化存储层.
image
2,HDFS 作为其底层的文件存储
3,MapReduct 为 Hbase 提供高性能的计算能力
4,Zookeeper 为 HBase 提供了稳定的服务和 failover 的能力
image
Hive 是什么?
hive 是一个基于 Hadoop 的一个数据仓库工具. 可以将结构化数据映射为一张数据库表, 并且提供 sql 的查询能力, 可以将 sql 换换为 MapReduce 任务进行.
下面我们看看 Hive 的架构图:
1, 用户接口, hive 主要有三个接口, CLI(CLI 启动的时候会同时气筒一个 Hive 的副本),Client(hive 的客户端, 连结 hive server),web UI(通过浏览器访问)
2, 元数据存储, hive 将元数据存储在数据库中如: MySQL.
3,Driver(解释器, 编译器, 优化器, 执行器): 完成词法分析, 语法分析, 优化, 编译, 优化以及查询计划的生成, 随后由 MapReduce 使用.
4,Hadoop ,hive 的数据存储在 Hdfs 中. 大部分的查询由 MapReduce 完成.
image
Hbase
上面我们分别看了 Hbase 的特点, hive 的特点, 那么 Hbase 和 Hive 的差别是什么以及各自的使用场景是什么?
Hbase 和 Hive 二者都是以 Hdfs 为文件存储.
Hbase 支持列扩展, 可以对单元格修改. 采取 K-V 的设计, 因此查询效率比较高, 一般用于延迟忍耐低的场景; 还有就是经常需要扩展属性, 修改属性场景.
Hbase 的查询一般通过命令窗口进行, 语句比较负责, 但是 hive 的采用标准的 sql 语法, 门槛低, 上手简单. 当然 Hbase 也有 Phoenix 可以去支持 sql 这样的语法操作.
下面看看 hbase 具体的应用场景:
千万并发, PB 存储, KV 基础存储, 动态列, 强同步, 稀疏表, 二级索引, SQL
image
对象存储: 头条类, 新闻类的的新闻, 网页, 图片存储在 HBase 之中, 一些病毒公司的病毒库也是存储在 HBase 之中.
时序数据: HBase 之上有 OpenTSDB 模块, 可以满足时序类场景的需求.
推荐画像: 用户的画像, 是一个比较大的稀疏矩阵. 蚂蚁的风控就是构建在 HBase 之上.
时空数据: 主要是轨迹, 气象网格之类, 滴滴打车的轨迹数据主要存在 HBase 之中, 另外在技术所有大一点的数据量的车联网企业, 数据都是存在 HBase 之中
CubeDB OLAP:Kylin 一个 cube 分析工具, 底层的数据就是存储在 HBase 之中, 不少客户自己基于离线计算构建 cube 存储在 hbase 之中, 满足在线报表查询的需求.
消息 / 订单: 在电信领域, 银行领域, 不少的订单查询底层的存储, 另外不少通信, 消息同步的应用构建在 HBase 之上.
消息 / 订单: 在电信领域, 银行领域, 不少的订单查询底层的存储, 另外不少通信, 消息同步的应用构建在 HBase 之上.
Hive 不能支持列扩展, 支持追加, 好像在新版本中可以支持修改, 但是效率比较低. Hive 处理的数据的吞吐量高, 文件越大, hive 的优势就约明显. 一半用于 延迟忍耐高的场景.
下面再来看看 Hive 的具体使用场景:
1, 分析网络日志.
2,ETL 清洗数据.
3, 构建数据仓库.
4, 数据挖掘
最后在总结: Hbase 和 Hive 本身都不能存储数据. 二者都是对 Hdfs 上的文件在做了一次组织. 从而适应不同的场景. Hbase 在与查询, 动态列场景更有优势, 但是无法进行数据分析和挖掘. 二 Hive 本身无法在低延迟的场景下使用. Hive 可以处理大量数据的 ETL 清洗. 构建统一的标准的数据仓库, 从而提供基础数据, 共上层数据分析. 所以 hive 更加偏向于数据分析.
来源: http://www.jianshu.com/p/290a13b9b85c