Hive--可执行SQL的Hadoop数据仓库管理工具
Hive是一个基于HDFS的数据仓库软件,可理解为数据库管理工具;Hive的功能主要有:
1. 支持使用SQL对分布式存储的大型数据集进行读、写、管理,将SQL转化成MapReduce任务执行;
2. 将数据结构映射到已存储的数据中,即将存储在HDFS上结构化的文件内容定义成Hive的外部表。
3. Hive提供了命令行的操作工具和JDBC的开发接口。
我们知道HBase也是基于HDFS的数据库,两者之间有何异同点呢?简言之,Hive和HBase都是Hadoop集群下的工具(bi),Hive是对MapReduce的优化(使用SQL操作MR),而HBase则是HDFS数据存储的大管家。
Hive | HBase | |
出发点 | 使用SQL简化对MapReduce的操作 | 将HDFS上无序的数据映射成有序的表格,便于管理和使用数据 |
数据存储 | 1. Hive是纯逻辑表,无物理存储结构;只定义表格元数据,元数据保存在其他数据库上如MySQL,表格数据存储在HDFS上; 2. Hive是逻辑表,属于稠密型,定义列数,每一行有固定的列数。 |
1. HBase表则是物理表,适合存放非结构化的数据; 2. HBase的存储表存储密度小,用户可以对行定义成不同的列。 |
数据访问 | Hive是在MapReduce的基础上对数据进行处理,而MapReduce的数据处理依照行模式; | HBase为列模式,这样使得对海量数据的随机访问变得可行。 |
使用场景 | 1. Hive使用Hadoop来分析处理数据,而Hadoop系统是批处理系统,所以数据处理存在延时的问题; 2. Hive没有row-level的更新,它适用于大量append-only数据集(如日志)的批任务处理; 3. Hive全面支持SQL,一般可以用来进行基于历史数据的挖掘、分析; 4. Hive主要针对的是OLAP应用,其底层是hdfs分布式文件系统,重点是基于一个统一的查询分析层,支撑OLAP应用中的各种关联,分组,聚合类SQL语句。Hive一般只用于查询分析统计,而不能是 |