内容简介
一、初识Hive
1.Hive的基本概念
Hive是Apache社区的开源项目,是建立在Hadoop之上的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。
也就是说,Hive是一个数据仓库工具,它不提供数据存储功能,数据存储在Hadoop集群上,其本质是对HDFS结构化数据的管理,为其建立一张张的表,并对MapReduce进行封装,通过类SQL语句处理数据,Hive会将类SQL语句转化为MapReduce作业跑在YARN上。
2.Hive的适用场景
Hive 并不适合那些需要低延迟的应用,例如,联机事务处理(OLTP)。Hive 查询操作过程严格遵守Hadoop MapReduce 的作业执行模型,Hive 将用户的HiveQL 语句通过解释器转换为MapReduce 作业提交到Hadoop 集群上,Hadoop 监控作业执行过程,然后返回作业执行结果给用户。Hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。
3.Hive执行作业的过程
1.Execute Query:hive界面如命令行或Web UI将查询发送到Driver(任何数据库驱动程序如JDBC、ODBC,等等)来执行。
2.Get Plan:Driver根据查询编译器解析query语句,验证query语句的语法,查询计划或者查询条件。
3.Get Metadata:编译器将元数据请求发送给Metastore(任何关系型数据库)。
4.Send Metadata:Metastore将元数据作为响应发送给编译器。
5.Send Plan:编译器检查要求和重新发送Driver的计划。到这里,查询的解析和编译完成。
6.Execute Plan:Driver将执行计划发送到执行引擎。
7.Execute Job:Hadoop内部执行的是mapreduce工作过程,任务执行引擎发送一个任务到资源管理节点(ResourceManager),资源管理器分配该任务到任务节点,由任务节点上开始执行mapreduce任务。
7.1 Metadata Ops:在执行引擎发送任务的同时,对hive的元数据进行相应操作。
8.Fetch Result:执行引擎接收数据节点(data node)的结果。
9.Send Results:执行引擎发送这些合成值到Driver。
10.Send Results:Driver将结果发送到Hive接口。
4.Hive与HBase的区别
1.HBase是建立在Hadoop之上的NoSQL,是非关系型数据库,Hive是数据仓库,不是数据库。
2.HBase提供海量数据的随机定位和实时读写,毫秒级别内响应查询请求,Hive的查询并不能在短时间内响应。
3.HBase只提供数据的存储和查询功能,没有数据的处理能力,Hive提供类SQL的方式对数据进行处理,底层转变为MapReduce跑在YARN上。
4.Hive和HBase是两种基于Hadoop的不同技术,Hive是一种类SQL的引擎,并且运行MapReduce任务,Hbase是一种在Hadoop之上的NoSQL 的Key/Value数据库。
二、Hive的安装与配置
Hive是建立在Hadoop之上的类SQL引擎,因此在安装Hive之前首先安装Hadoop集群并运行。详情请移步:Hadoop完全