Hbase是什么?
Hbase是一个架构在Hdfs文件系统上的列式存储,是开源的,分布式,面向列的数据库。适合于非结构化数据存储的数据库。
Hbase是一个高可靠、高性能、面向列、可伸缩的分布式存储系统,可以在廉价的PC Server搭建大规模结构化存储集群.
1,HBase位于Hadoop生态系统的结构化存储层。
2,HDFS作为其底层的文件存储
3,MapReduct为Hbase提供高性能的计算能力
4,Zookeeper为HBase提供了稳定的服务和failover的能力
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完成。
Hbase
上面我们分别看了Hbase的特点,hive的特点,那么Hbase和Hive的差别是什么以及各自的使用场景是什么?
Hbase和Hive 二者都是以Hdfs为文件存储。
Hbase支持列扩展,可以对单元格修改。采取K-V的设计,因此查询效率比较高,一般用于延迟忍耐低的场景;还有就是经常需要扩展属性,修改属性场景。
Hbase的查询一般通过命令窗口进行,语句比较负责,但是hive的采用标准的sql语法,门槛低,上手简单。当然Hbase也有Phoenix可以去支持 sql这样的语法操作。
下面看看hbase具体的应用场景:
千万并发、PB存储、KV基础存储、动态列、强同步、稀疏表、二级索引、SQL
对象存储:头条类、新闻类的的新闻、网页、图片存储在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更加偏向于数据分析。