Hive从概念到原理

Hive是一个数据仓库基础工具,它是建立在Hadoop之上的数据仓库,在某种程度上可以把它看做用户编程接口(API),本身也并不存储和处理数据,依赖于HDFS存储数据,依赖MR处理数据。它提供了一系列对数据进行提取、转换、加载的工具。依赖于HDFS存储数据,依赖MR处理数据。在Hadoop中用来处理结构化数据。Hive查询语言采用Hive为MapReduce处理结构化数据。Hive不是实时查询语言。

一、数据仓库概念:

面向主题的,集成的,相对稳定的,反映历史变化的数据集和,用于支持管理决策。

根本目的:

数据仓库的管理和应用

Hive从概念到原理

 

数据仓库和数据库的区别:数据仓库的数据是稳定的,只读的,数据仓库存储历史数据,数据库只能保留某个时刻的特性,而数据仓库则保留了所有的历史数据。(用于帮助企业分析、决策)

传统数据仓库面临的挑战:1、面对实时海量数据,无法满足快速增长的海量数据存储要求2、无法有效处理不同类型数据3、计算和处理能力不足

二、Hive

基于hadoop平台的一个数据仓库工具,底层hadoop平台之上。

Hive本身不支持数据的存储和处理,但它给用户提供了一个编程接口,类似于SQL

借助HDFS存储数据和MapReduce处理数据,借鉴SQL语言设计了新的查询语言HQL,提供HiveQL语句来运行具体的 MapReduce任务。

两个方面特性:

1、采用批处理方式处理海量数据

1)Hive会把HiveQL语句转换成MapReduce任务进行运行

2)数据仓库存储的是静态数据,对静态数据分析适合采用批处理方式,不需要快速响应,数据本身不会频繁变化

2、提供了一系列对数据进行提取、转换、加载(ETL)的工具

Hive从概念到原理

 

HBase和hive是互补的关系,Hive是进行批处理的工具,而HBase可以对实时数据进行分析

Hive从概念到原理

Hive从概念到原理

 

Hive对外访问接口

CLI:命令行工具

HWI:Hive Web Interface 是Hive的web接口

JDBC和ODBC:开放数据库连接接口

Thrift Server:基于Thrift架构开发的接口,允许外界通过这个接口实现对Hive仓库的RPC调用

驱动模块:driver 把Hive输入的HQl语句转换成MapReduce作业。

元数据存储模块Metastore

Hive HA基本原理:高可用性Hive解决方案。

Hive从概念到原理

三、SQL转换成MapReduce作业

hive本身不做数据存储和处理,它是通过HQL语句转换成MapReduce作业进行数据处理的。

两个步骤:SQL语句转换成Mapreduce作业的基本原理;Hive中sql语句转换成MapReduce作业

连接:用MapReduce实现数据库的连接操作。

1、SQL语句转换成Mapreduce作业的基本原理举例:

编写map处理逻辑--->map处理逻辑输入关系数据库的表-->转换成键值对-->执行shffle操作和reduce操作

Group by 实现

Hive从概念到原理

2、SQL转换成MapReduce作业

四、Impala

Impala 提供了类似hive的数据仓库,允许通过sql查询底层数据。可以通过Impala进行实时查询,性能是Hive的三倍。Cloudera公司开发的新型查询系统,impala也是构建在底层hdfs和hbase之上 。

 

五、Hive安装和基本操作

安装:要求jdk1.6以上,hadoop

配置:参照模板文件.template对hive-site.xml进行配置

安装步骤基本同hadoop,先解压再配置环境变量等。这里要注意一个问题。

hive三种模式:内嵌模式、本地模式(以Mysql作为元数据存储的数据库)、分布式模式(存储在HDFS

内嵌模式具体安装请看另一篇博客:https://blog.****.net/qq_38048590/article/details/82112459

1、内嵌模式

在运行Hive命令行时,若我们使用内嵌模式。则需要先运行schematool 命令进行初始化操作

schematool -dbType <db type> -initSchema

运行此操作之后,由于hive使用hadoop,因此必须在hdfs中创建 /tmp 和/user/hive/warehouse目录,并赋予g+m权限。

 $ $HADOOP_HOME/bin/hadoop fs -mkdir       /tmp

  $ $HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse

  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp

  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse

运行完这两步之后才能,用hive命令启动cli。否则1启动失败,或者2启动成功,但执行相关操作的时候会报错.

基本操作:创建数据库、创建表、查询等

 

六、Hive工作原理

1、执行查询:Hive接口,命令行或 web UI发送查询驱动程序

2、get Plan:驱动程序查询编译器

3、词法分析/语法分析

4、语义分析

5、逻辑计划产生

6、逻辑计划优化

7、物理计划生成

8、物理计划优化

9、物理计划执行

10、查询结果返回