栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hive代码分析报告(一):Hive安装使用、代码分析工作概述

Hive代码分析报告(一):Hive安装使用、代码分析工作概述

2021SC@SDUSC

目录

Hive介绍

Hive的安装部署

安装环境

安装步骤

初步使用

Hive源码分析及任务分工


Hive介绍

Hive是基于 Hadoop 的一个适用于海量数据的数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能(HQL)。其本质是将类SQL语句转化为MapReduce程序,从而避免了去写 MapReduce程序,减少开发人员的学习成本。

Hive的安装部署

安装环境

使用VMware,Linux系统为CentOS-7

安装步骤

1.安装hive的前提准备:

提前在Linux系统中安装配置jdk、MySql

2.Hadoop安装过程:

选择伪分布式单机部署,在这之前还要进行进行配置:

修改Linux网络参数文件;

根据安装说明,配置core-site.xml、hdfs-site.xml、mapred-site.xml等文件;

在profile中添加环境变量并执行source /etc/profile;

执行hdfs namenode -format初始化,start-all.sh来启动hadoop。

至此,hadoop已经可以使用了。

3.安装hive

1) 把 apache-hive-3.1.2-bin.tar.gz 置于 linux 的/opt/software 目录下

2) 解压 apache-hive-3.1.2-bin.tar.gz 到/opt/module/ 目录下面

[root@hadoop102 software]$ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/

3)修改 apache-hive-3.1.2-bin.tar.gz 的名称为 hive

[root@hadoop102 software]$ mv /opt/module/apache-hive-3.1.2-bin/opt/module/hive

4)修改/etc/profile.d/my_env.sh,添加环境变量

[root@hadoop102 software]$ sudo vim /etc/profile.d/my_env.sh

5)添加内容
 

#HIVE_HOME

export HIVE_HOME=/opt/module/hive

export PATH=$PATH:$HIVE_HOME/bin

6) 初始化元数据库

[root@hadoop102 hive]$ bin/schematool -dbType derby -initSchema

7)将元数据库的地址改为MySql

将 MySQL 的 JDBC 驱动拷贝到 Hive 的 lib 目录下

[root@hadoop102 software]$ cp /opt/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib

8)在$HIVE_HOME/conf 目录下新建 hive-site.xml 文件

文件内容如下:






javax.jdo.option.ConnectionURL
jdbc:mysql://hadoop102:3306/metastore?useSSL=false



javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver



javax.jdo.option.ConnectionUserName
root



javax.jdo.option.ConnectionPassword
000000



hive.metastore.schema.verification
false



hive.metastore.event.db.notification.api.auth
false



hive.metastore.warehouse.dir
/user/hive/warehouse

9)登陆 MySQL

[root@hadoop102 software]$ mysql -uroot -p000000

10)新建 Hive 元数据库

mysql> create database metastore;

mysql> quit;

11)初始化 Hive 元数据库

[root@hadoop102 software]$ schematool -initSchema -dbType mysql -verbose

这样,就将Hive的元数据库配置在了MySQL数据库里,至此,就初步完成了Hive的安装。

初步使用

将hive元数据配置到了MySQL中之后再开启hive。

1)启动 Hive

[root@hadoop102 hive]$ bin/hive

2)使用 Hive查看表、执行简单SQL语句

 通过运行时间,我们也能清晰的看出,hive处理小规模数据没有什么优势,它的优势在于大数据的处理。

至此,hive的安装工作就基本完成了。

Hive源码分析及任务分工

为了更好的解读源码,需要对Hive的基本架构和运行原理有一定了解。经查询学习,Hive正常运行时需要主要组件有如下几部分:

1. 用户接口

 主要有CLI(command-line interface)、JDBC/ODBC(jdbc 访问 hive) 等

2.元数据:metastore

元数据就是数据的数据,包括:表名、表所属的数据库、表的拥有者、列/分区字段、表的类型、表的数据所在目录等;

3. 驱动器(重点)

(1)解析器:将 SQL 字符串转换成抽象语法树(AST);对 AST 进行语法分析。

(2)编译器:将 AST 编译生成逻辑执行计划。

(3)优化器:对逻辑执行计划进行优化。

(4)执行器:把逻辑执行计划转换成可以运行的物理计划。

hive的核心:HQL-->MR的编译主流程

实际上,对于hive的功能,最直观简单理解的说法,就是把一条sql进行解析成mapreduce任务,去给hadoop执行,因此hive的核心,就是怎么去解释sql。我们的代码分析将紧紧围绕这个中心线进行。

一条语句,首先要经过用户接口进入,提交给驱动引擎,这是整个流程的第一步,具体到项目源码,这项工作由用户接口(CLI)完成,对应代码主要在cli包里,由我负责这其中一些关键代码的解读。

在cli提交作业给driver后,就来到了hive工作的关键部分,这是hive的核心和重点,驱动引擎中主要有编译器compiler、runtime和一些工具,主要位于项目的ql包内。这部分代码的分析由小组成员分工完成。

在编译流程中,首先进行的是语法分析,将HQL转化为抽象语法树AST Tree,第二个步骤,是从AST到QB再到Operator Tree的转换过程,由Hive的语义分析框架完成,该部功能对应的代码主要位于ql包下的Semantic analyzerd等类中。

Hive的语义分析框架的代码量较大(仅Semantic analyzer类代码量就超过14000行),当然这是因为从输入的ASTTree开始,后续的QB的生成,逻辑执行计划、逻辑执行计划的优化、物理执行计划的切分、物理执行计划的优化、以MR任务的生成全部都在些语义分析代码的逻辑中。

这些流程的源代码的分析将由我和队友合作进行分析,其中我的主要工作是编译流程中第二步AST-->QB对应的功能函数进行阅读分析。综上,我们已完成了Hive基本知识的了解、安装。对于源码分析,我主要负责:

①阅读分析用户接口cli中部分关键代码

②阅读分析编译流程中第二大步骤语义分析框架中的关键代码。

希望通过本次项目,可以进一步提高自己的代码阅读能力和分析能力,提高解决困难问题的能力。

end

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/280659.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号