@[toc]java
它是一个分布式计算+分布式文件系统,前者其实就是 MapReduce,后者是 HDFS 。后者能够独立运行,前者能够选择性使用,也能够不使用sql
通俗的说是一个数据仓库,仓库中的数据是被hdfs管理的数据文件,它支持相似sql语句的功能,你能够经过该语句完成分布式环境下的计算功能,hive会把语句转换成MapReduce,而后交给hadoop执行。这里的计算,仅限于查找和分析,而不是更新、增长和删除。数据库
它的优点是对历史数据进行处理,用时下流行的说法是离线计算,由于它的底层是MapReduce,MapReduce在实时计算上性能不好。它的作法是把数据文件加载进来做为一个hive表(或者外部表),让你以为你的sql操做的是传统的表。markdown
通俗的说,hbase的做用相似于数据库,传统数据库管理的是集中的本地数据文件,而hbase基于hdfs实现对分布式数据文件的管理,好比增删改查。也就是说,hbase只是利用hadoop的hdfs帮助其管理数据的持久化文件(HFile),它跟MapReduce没任何关系。nosql
hbase的优点在于实时计算,全部实时数据都直接存入hbase中,客户端经过API直接访问hbase,实现实时计算。因为它使用的是nosql,或者说是列式结构,从而提升了查找性能,使其能运用于大数据场景,这是它跟MapReduce的区别。分布式
hadoop是hive和hbase的基础,hive依赖hadoop,而hbase仅依赖hadoop的hdfs模块。oop
hive适用于离线数据的分析,操做的是通用格式的(如通用的日志文件)、被hadoop管理的数据文件,它支持类sql,比编写MapReduce的java代码来的更加方便,它的定位是数据仓库,存储和分析历史数据。性能
hbase适用于实时计算,采用列式结构的nosql,操做的是本身生成的特殊格式的HFile、被hadoop管理的数据文件,它的定位是数据库,或者叫DBMS。大数据
hive能够直接操做hdfs中的文件做为它的表的数据,也能够使用hbase数据库做为它的表。spa