hive学习

发布时间 2023-03-31 07:54:22作者: 张少凯

什么是hive

hive是由Facebook开源,基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能。
hive主要是用来做海量数据的分析和计算。
hive是一个Hadoop客户端,用于将HQL(hive SQL)转化成mapreduce程序。
hive中每张表的数据都存储在hdfs。
hive分析数据底层的实现是mapreduce(也可配置为spark或者tez)
hive执行程序运行在yarn上。

hive架构

hive底层架构是Hadoop
hive执行组件分为metastore和hiveserver2
metastore提供元数据访问接口。只负责提供元数据接口,不负责存储。通常存储在MySQL数据库或者derby数据库中。推荐MySQL
hiveserver2提供jdbc或者ODBC访问接口,提供用户认证的相关功能。
hive客户端hive client分为CLI或者jdbc/ODBC
安装了hive的机器可以使用命令行客户端CLI,其他机器使用jdbc协议或者ODBC协议访问。

hive执行流程简介

1. 用户创建table,create table
2. metastore会把表保存到元数据中,记录对应表的路径。
3. 用户建表指定了hdfs文件路径,跟metastore形成映射关系。
4. 用户根据业务需要编写SQL执行查询。调用driver驱动编译SQL。如果使用的命令行客户端,则driver运行在CLI中。如果使用的是jdbc或者ODBC,则driver运行在jdbc/ODBC上。driver的主要作用就是将SQL编译成最终的mapreduce程序。需注意编译过程中需要用到元数据信息。
5. 编译完成后,driver就会将mapreduce程序提交到yarn上运行,还可以提交到tez/spark等计算引擎,如果是插入语句,将计算结果写到hdfs目标路径。如果是查询语句,将结果返回给hive client客户端。

driver具体工作(词法分析和语法分析)

1. 解析器sqlParser:将SQL字符转换成抽象语法树AST。
2. 语义分析semantic analyzer:将AST进一步划分为queryblock。
3. 逻辑计划生成器logic plan gen:将语法树生成逻辑计划。
4. 逻辑优化器logical optimizer:对逻辑计划进行优化。
5. 物理计划生成器physical plan gen:根据优化后的逻辑计划生成物理计划。
6. 物理优化器physical optimizer:对物理计划进行优化。
7. 执行器execution:执行该计划,得到查询结果并返回客户端。
谓词下推:将SQL中的filter操作尽量往前移。
小表:能够缓存在给定的内存当中的表叫做小表。
hive建表可以指定hdfs路径,如果没指定会使用默认路径,/user/hive/warehouse/tmp
hive自带了derby数据库可以用来保存元数据。路径存在hive/metastore_db中。
只能有一个hive进程使用metastore_db。如果存在已经运行的hive进程占用了metastore_db,再启动hive会报错。

hive安装

1.创建元数据库。生产环境下hive元数据存储在MySQL中。安装MySQL,创建名为metastore的数据库。用来存储元数据。
2. 放入驱动需要将MySQL的jdbc驱动放到hive的lib目录下,
3. 配置文件,需要在conf目录下创建hive-site.xml文件,指定jdbc连接信息url,password,工作目录等。
4. 初始化hive元数据库bin/schematool -dbType mysql -initSchema -verbose。
5. 验证是否安装成功 bin/hive。
6. 查看MySQL中的元数据。登录MySQL,mysql -uroot -p 123456
show databases;use metastore;show tables;select * from DBS;TBL表;SDS表;

hive服务部署

hive的hiveserver2服务的作用是提供jdbc/ODBC接口,为用户提供远程访问hive数据的功能。