Hive从概念到原理
Hive是一个数据仓库基础工具,它是建立在Hadoop之上的数据仓库,在某种程度上可以把它看做用户编程接口(API),本身也并不存储和处理数据,依赖于HDFS存储数据,依赖MR处理数据。它提供了一系列对数据进行提取、转换、加载的工具。依赖于HDFS存储数据,依赖MR处理数据。在Hadoop中用来处理结构化数据。Hive查询语言采用Hive为MapReduce处理结构化数据。Hive不是实时查询语言。
一、数据仓库概念:
面向主题的,集成的,相对稳定的,反映历史变化的数据集和,用于支持管理决策。
根本目的:
数据仓库的管理和应用
数据仓库和数据库的区别:数据仓库的数据是稳定的,只读的,数据仓库存储历史数据,数据库只能保留某个时刻的特性,而数据仓库则保留了所有的历史数据。(用于帮助企业分析、决策)
传统数据仓库面临的挑战:1、面对实时海量数据,无法满足快速增长的海量数据存储要求2、无法有效处理不同类型数据3、计算和处理能力不足
二、Hive
基于hadoop平台的一个数据仓库工具,底层hadoop平台之上。
Hive本身不支持数据的存储和处理,但它给用户提供了一个编程接口,类似于SQL
借助HDFS存储数据和MapReduce处理数据,借鉴SQL语言设计了新的查询语言HQL,提供HiveQL语句来运行具体的 MapReduce任务。
两个方面特性:
1、采用批处理方式处理海量数据
1)Hive会把HiveQL语句转换成MapReduce任务进行运行
2)数据仓库存储的是静态数据,对静态数据分析适合采用批处理方式,不需要快速响应,数据本身不会频繁变化
2、提供了一系列对数据进行提取、转换、加载(ETL)的工具
HBase和hive是互补的关系,Hive是进行批处理的工具,而HBase可以对实时数据进行分析
Hive对外访问接口
CLI:命令行工具
HWI:Hive Web Interface 是Hive的web接口
JDBC和ODBC:开放数据库连接接口
Thrift Server:基于Thrift架构开发的接口,允许外界通过这个接口实现对Hive仓库的RPC调用
驱动模块:driver 把Hive输入的HQl语句转换成MapReduce作业。
元数据存储模块Metastore
Hive HA基本原理:高可用性Hive解决方案。
三、SQL转换成MapReduce作业
hive本身不做数据存储和处理,它是通过HQL语句转换成MapReduce作业进行数据处理的。
两个步骤:SQL语句转换成Mapreduce作业的基本原理;Hive中sql语句转换成MapReduce作业
连接:用MapReduce实现数据库的连接操作。
1、SQL语句转换成Mapreduce作业的基本原理举例:
编写map处理逻辑--->map处理逻辑输入关系数据库的表-->转换成键值对-->执行shffle操作和reduce操作
Group by 实现
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、查询结果返回