IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 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 文件

文件内容如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc 连接的 URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
</property>
<!-- jdbc 连接的 Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- jdbc 连接的 username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc 连接的 password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>000000</value>
</property>
<!-- Hive 元数据存储版本的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!--元数据存储授权-->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
<!-- Hive 默认在 HDFS 的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
</configuration>

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

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-01 16:56:57  更:2021-10-01 16:57:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:36:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码