Hive部署与应用

单元2 Hive部署与应用

三种部署模式一次打通:内嵌 Derby、本地 MySQL 元数据、远程 HiveServer2 加 Tez 引擎

单元2项目3第4、5周4+4 学时121 页课件6 个知识点

本单元学习目标 摘自课件“学习目标/Target”页

  • 熟悉Beeline,能够运用Beeline提供的命令选项和交互式命令实现对Hive的连接与操作。
  • 掌握Hive的部署,能够根据实际应用需求选择并部署不同模式的Hive环境。
  • 掌握Hive On Tez,能够独立完成Tez的安装并将其配置为Hive的执行引擎。
  • 了解使用DataGrip操作Hive的方法,能够使用DataGrip连接HiveServer2实现对Hive的访问与操作。

单元概述

“工欲善其事,必先利其器。”这句话强调,完成一项工作之前,应先准备好相应的工具。同样,要真正使用Hive完成数据仓库建设与数据分析任务,仅理解相关概念还远远不够,还需要搭建可运行的Hive环境,并掌握常用访问工具的使用方法。本单元将带领读者部署不同模式的Hive环境,并通过Beeline和DataGrip访问和操作Hive,为后续开展HiveQL编写、数据管理与数据分析奠定实践基础。

知识地图

学完本单元,你应该能回答

  1. 内嵌、本地、远程三种模式,差别到底在元数据存哪里?
  2. hive-site.xml 里的关键参数分别控制什么?
  3. 为什么生产环境要用 HiveServer2 + Beeline / DataGrip?
  4. Hive on Tez 相比 MapReduce 快在哪里?

知识链位置

核心知识 点击标题右侧勾选框可标记“已掌握”,进度会保存在本机浏览器

2.1

认识Beeline

熟悉Beeline,能够运用Beeline提供的命令选项和交互式命令实现对Hive的连接与操作。

熟悉Beeline,能够运用Beeline提供的命令选项和交互式命令实现对Hive的连接与操作。

在部署Hive之前,为便于后续验证部署效果,将通过Hive自带的客户端工具Beeline进行连接测试。因此,在介绍Hive部署过程前,先对Beeline的基本概念与使用方式进行讲解。

在Hive的体系架构中,客户端是用户提交查询语句并获取执行结果的直接交互入口。自Hive 2.0起,Beeline逐渐取代旧版Hive CLI,成为官方推荐的标准命令行客户端工具。在Hive 4.1.0中,Beeline已完全取代Hive CLI。

Beeline基于JDBC协议构建,专为连接HiveServer2设计,支持远程访问、身份认证和会话管理等特性,是使用Hive进行交互式查询的主要通道。与Hive CLI不同,Beeline并不会在本地进程中直接启动Hive引擎,而是作为一个轻量级的远程客户端运行。用户在Beeline中编写并提交HiveQL语句后,相关请求会被发送至HiveServer2。

用户可以通过Hive安装目录下的bin目录中的脚本文件beeline启动Beeline。Beeline提供了丰富的命令选项和交互式命令,用于灵活配置连接行为及执行管理操作,具体介绍如下。

交互式命令

命令

选项

1. 命令选项

命令选项在执行脚本文件beeline启动Beeline时使用,用于指定连接地址、认证方式、初始化参数等信息,常用命令选项如表。

课件表格 · 第12页
命令选项语法格式描述
-u-u url用于指定连接HiveServer2的JDBC连接地址
-n-n user用于指定连接HiveServer2时的认证用户。在未启用安全认证机制时,可填写任意用户名,但建议填写具备HDFS访问权限的有效用户,以保障查询任务在执行过程中拥有对底层数据的读写能力。若未指定认证用户,则默认使用用户anonymous。
课件表格 · 第13页
命令选项语法格式描述
-p-p pwd用于指定认证用户对应的密码。在未启用安全认证机制时,认证用户的密码为空
-c-c name用于通过名称为beeline-site.xml的配置文件加载预定义的JDBC连接地址
--hiveconf--hiveconf property=value用于在当前会话中动态设置Hive配置参数,以覆盖配置文件hive-site.xml中同名的配置参数,适用于临时调整配置,无需修改配置文件本身。动态设置的作用范围仅限于当前客户端会话,在会话断开后自动失效
课件表格 · 第14页
命令选项语法格式描述
-e-e query用于在启动Beeline时执行指定的单条HiveQL语句。执行完成后,Beeline自动退出,不进入交互界面
-f-f file_path用于在启动Beeline时执行指定Hive脚本文件中的所有HiveQL语句。执行完成后,Beeline自动退出,不进入交互界面。Hive脚本文件的扩展名通常为hql
-w-w file_path用于从指定文件中读取认证用户的密码,避免使用-p输入密码时暴露明文密码
课件表格 · 第15页
命令选项语法格式描述
--outputformat--outputformat=format用于控制查询结果的输出格式,支持的格式如下。 table:表格形式显示(默认) vertical:垂直列出每条记录的每个字段,适用于字段较多或内容较长的结果 csv2:CSV格式显示 tsv2:TSV格式显示 json:JSON格式显示
--showHeader--showHeader=boolean用于控制查询结果中是否显示表头。true(默认)表示显示;false表示隐藏
课件表格 · 第16页
命令选项语法格式描述
--truncateTable--truncateTable=boolean用于控制查询结果中字段内容过宽时,是否截断显示。true表示截断;false(默认)表示不截断
--incremental--incremental=boolean用于控制查询结果是否以流式方式边查询边显示结果,以降低客户端内存使用。true表示查询结果逐行显示,不会一次性加载所有数据到内存,适用于大结果集;false(默认)表示等待所有结果查询完成并缓存在内存后一次性展示,适用于小结果集
课件表格 · 第17页
命令选项语法格式描述
--silent--silent=boolean用于控制是否启用静默模式。true表示启用静默模式,仅输出查询结果,不包含额外日志信息或提示内容;false(默认)表示关闭静默模式,在输出查询结果的同时输出额外日志信息或提示内容
--verbose--verbose=boolean用于控制查询结果是否显示详细的调试信息。true表示显示;false(默认)表示不显示
--help--help用于显示帮助信息。执行完成后,Beeline自动退出,不进入交互界面
TEXT
<property>
<name>beeline.hs2.jdbc.url.name</name>
<value>url</value>
</property>

配置文件beeline-site.xml需用户手动创建,并存放于Hive安装目录的conf目录中,该文件的基本内容如下。

基本内容

用于指定HiveServer2对应的JDBC连接地址

用于定义连接的唯一标识名称

2. 交互式命令

互式命令在Beeline成功启动后于交互界面中使用,用于连接管理、元数据查询、执行脚本等操作,常用交互式命令如表。

课件表格 · 第19页
交互式命令语法格式描述
!connect!connect url用于指定连接 HiveServer2的JDBC连接地址
!close!close用于关闭当前连接
!closeall!closeall用于关闭所有连接
课件表格 · 第20页
交互式命令语法格式描述
!list!list用于查看所有连接,并显示每个连接的编号
!go!go id用于通过编号切换至已建立的某个连接
!quit!quit用于退出Beeline
!run!run file_path与命令选项-f的作用相同
!script!script file_path用于开启录制,将当前会话后续输入的所有命令都保存到指定文件中。若要停止录制,则直接执行!script即可
课件表格 · 第21页
交互式命令语法格式描述
!set!set property=value与命令选项--hiveconf的作用相同
!sh!sh cmd用于在Beeline中直接执行Shell命令
!history!history用于查看历史命令
!outputformat!outputformat format与命令选项--outputformat的作用相同
!tables!tables用于查看当前数据库中的所有表
!describe!describe table用于查看指定表的结构
!help!help用于显示帮助信息

在启动Beeline时,通过命令选项-u直接指定HiveServer2的JDBC连接地址。

先启动Beeline,进入交互界面后,再通过交互式命令!connect指定HiveServer2的JDBC连接地址。

通过学习Beeline的命令选项与交互式命令,可以总结出使用Beeline连接HiveServer2的两种方式。

TEXT
jdbc:hive2://host:port[/database]

关于HiveServer2连接地址的格式如下。

具体格式

用于指定HiveServer2所在服务器的IP地址或主机名

用于指定HiveServer2的端口号

用于指定当前会话默认使用的数据库

任务:基于内嵌模式部署Hive

2.2

🧪 实战示例

用 Beeline 连 HiveServer2,并执行一条 SQL。

SHELL
beeline -u "jdbc:hive2://hadoop1:10000" -n hadoop -p 123456
-- 进去以后可以执行交互命令
!connect jdbc:hive2://hadoop1:10000          -- 会话内切换连接
!tables                                      -- 列出表
SELECT current_database();                   -- 当前库

💡 ! 开头是 Beeline 自己的命令,不是 SQL。

📄 展开课件原文(第 7–24 页,共 18 页)
第 7 页

2.1 任务:认识Beeline

熟悉Beeline,能够运用Beeline提供的命令选项和交互式命令实现对Hive的连接与操作。

学习目标

第 8 页

在部署Hive之前,为便于后续验证部署效果,将通过Hive自带的客户端工具Beeline进行连接测试。因此,在介绍Hive部署过程前,先对Beeline的基本概念与使用方式进行讲解。

2.1 任务:认识Beeline

第 9 页

在Hive的体系架构中,客户端是用户提交查询语句并获取执行结果的直接交互入口。自Hive 2.0起,Beeline逐渐取代旧版Hive CLI,成为官方推荐的标准命令行客户端工具。在Hive 4.1.0中,Beeline已完全取代Hive CLI。

2.1 任务:认识Beeline

第 10 页

Beeline基于JDBC协议构建,专为连接HiveServer2设计,支持远程访问、身份认证和会话管理等特性,是使用Hive进行交互式查询的主要通道。与Hive CLI不同,Beeline并不会在本地进程中直接启动Hive引擎,而是作为一个轻量级的远程客户端运行。用户在Beeline中编写并提交HiveQL语句后,相关请求会被发送至HiveServer2。

2.1 任务:认识Beeline

第 11 页

用户可以通过Hive安装目录下的bin目录中的脚本文件beeline启动Beeline。Beeline提供了丰富的命令选项和交互式命令,用于灵活配置连接行为及执行管理操作,具体介绍如下。

交互式命令

命令

选项

2.1 任务:认识Beeline

第 12 页

1. 命令选项

命令选项在执行脚本文件beeline启动Beeline时使用,用于指定连接地址、认证方式、初始化参数等信息,常用命令选项如表。

2.1 任务:认识Beeline

命令选项语法格式描述
-u-u url用于指定连接HiveServer2的JDBC连接地址
-n-n user用于指定连接HiveServer2时的认证用户。在未启用安全认证机制时,可填写任意用户名,但建议填写具备HDFS访问权限的有效用户,以保障查询任务在执行过程中拥有对底层数据的读写能力。若未指定认证用户,则默认使用用户anonymous。
第 13 页

1. 命令选项

2.1 任务:认识Beeline

命令选项语法格式描述
-p-p pwd用于指定认证用户对应的密码。在未启用安全认证机制时,认证用户的密码为空
-c-c name用于通过名称为beeline-site.xml的配置文件加载预定义的JDBC连接地址
--hiveconf--hiveconf property=value用于在当前会话中动态设置Hive配置参数,以覆盖配置文件hive-site.xml中同名的配置参数,适用于临时调整配置,无需修改配置文件本身。动态设置的作用范围仅限于当前客户端会话,在会话断开后自动失效
第 14 页

1. 命令选项

2.1 任务:认识Beeline

命令选项语法格式描述
-e-e query用于在启动Beeline时执行指定的单条HiveQL语句。执行完成后,Beeline自动退出,不进入交互界面
-f-f file_path用于在启动Beeline时执行指定Hive脚本文件中的所有HiveQL语句。执行完成后,Beeline自动退出,不进入交互界面。Hive脚本文件的扩展名通常为hql
-w-w file_path用于从指定文件中读取认证用户的密码,避免使用-p输入密码时暴露明文密码
第 15 页

1. 命令选项

2.1 任务:认识Beeline

命令选项语法格式描述
--outputformat--outputformat=format用于控制查询结果的输出格式,支持的格式如下。 table:表格形式显示(默认) vertical:垂直列出每条记录的每个字段,适用于字段较多或内容较长的结果 csv2:CSV格式显示 tsv2:TSV格式显示 json:JSON格式显示
--showHeader--showHeader=boolean用于控制查询结果中是否显示表头。true(默认)表示显示;false表示隐藏
第 16 页

1. 命令选项

2.1 任务:认识Beeline

命令选项语法格式描述
--truncateTable--truncateTable=boolean用于控制查询结果中字段内容过宽时,是否截断显示。true表示截断;false(默认)表示不截断
--incremental--incremental=boolean用于控制查询结果是否以流式方式边查询边显示结果,以降低客户端内存使用。true表示查询结果逐行显示,不会一次性加载所有数据到内存,适用于大结果集;false(默认)表示等待所有结果查询完成并缓存在内存后一次性展示,适用于小结果集
第 17 页

1. 命令选项

2.1 任务:认识Beeline

命令选项语法格式描述
--silent--silent=boolean用于控制是否启用静默模式。true表示启用静默模式,仅输出查询结果,不包含额外日志信息或提示内容;false(默认)表示关闭静默模式,在输出查询结果的同时输出额外日志信息或提示内容
--verbose--verbose=boolean用于控制查询结果是否显示详细的调试信息。true表示显示;false(默认)表示不显示
--help--help用于显示帮助信息。执行完成后,Beeline自动退出,不进入交互界面
第 18 页

<property>

<name>beeline.hs2.jdbc.url.name</name>

<value>url</value>

</property>

配置文件beeline-site.xml需用户手动创建,并存放于Hive安装目录的conf目录中,该文件的基本内容如下。

基本内容

2.1 任务:认识Beeline

1. 命令选项

用于指定HiveServer2对应的JDBC连接地址

用于定义连接的唯一标识名称

第 19 页

2. 交互式命令

互式命令在Beeline成功启动后于交互界面中使用,用于连接管理、元数据查询、执行脚本等操作,常用交互式命令如表。

2.1 任务:认识Beeline

交互式命令语法格式描述
!connect!connect url用于指定连接 HiveServer2的JDBC连接地址
!close!close用于关闭当前连接
!closeall!closeall用于关闭所有连接
第 20 页

2. 交互式命令

2.1 任务:认识Beeline

交互式命令语法格式描述
!list!list用于查看所有连接,并显示每个连接的编号
!go!go id用于通过编号切换至已建立的某个连接
!quit!quit用于退出Beeline
!run!run file_path与命令选项-f的作用相同
!script!script file_path用于开启录制,将当前会话后续输入的所有命令都保存到指定文件中。若要停止录制,则直接执行!script即可
第 21 页

2. 交互式命令

2.1 任务:认识Beeline

交互式命令语法格式描述
!set!set property=value与命令选项--hiveconf的作用相同
!sh!sh cmd用于在Beeline中直接执行Shell命令
!history!history用于查看历史命令
!outputformat!outputformat format与命令选项--outputformat的作用相同
!tables!tables用于查看当前数据库中的所有表
!describe!describe table用于查看指定表的结构
!help!help用于显示帮助信息
第 22 页

1

在启动Beeline时,通过命令选项-u直接指定HiveServer2的JDBC连接地址。

2

先启动Beeline,进入交互界面后,再通过交互式命令!connect指定HiveServer2的JDBC连接地址。

通过学习Beeline的命令选项与交互式命令,可以总结出使用Beeline连接HiveServer2的两种方式。

2.1 任务:认识Beeline

2. 交互式命令

第 23 页

jdbc:hive2://host:port[/database]

关于HiveServer2连接地址的格式如下。

具体格式

2.1 任务:认识Beeline

用于指定HiveServer2所在服务器的IP地址或主机名

用于指定HiveServer2的端口号

2. 交互式命令

用于指定当前会话默认使用的数据库

第 24 页

任务:基于内嵌模式部署Hive

2.2

2.2

基于内嵌模式部署Hive

掌握Hive的部署,能够完成基于内嵌模式部署Hive的操作。

掌握Hive的部署,能够完成基于内嵌模式部署Hive的操作。

内嵌模式是最简单的Hive部署方式,其核心特征是元数据存储与服务组件高度集成。在内嵌模式下,无须启动HiveServer2。同时,Metastore以嵌入方式运行,并使用嵌入式Derby数据库存储元数据。

内嵌模式主要适用于本地单用户开发与功能验证等轻量级场景,不适用于多用户协作环境。其根本原因在于,嵌入式Derby数据库仅支持单会话访问,无法满足多个Hive客户端并发连接的需求,也不具备元数据服务的共享能力。

接下来,以虚拟机Node03为例,演示如何基于内嵌模式部署Hive,具体操作步骤如下。

▸ 课件步骤 01

启动Hadoop集群

在虚拟机Node01执行下列命令启动Hadoop集群。

SHELL
start-dfs.sh
start-yarn.sh

启动HDFS集群

启动YARN集群

▸ 课件步骤 02

上传Hive安装包

将Hive安装包apache-hive-4.1.0-bin.tar.gz上传到虚拟机Node03的/export/software目录中。

▸ 课件步骤 03

安装Hive

将Hive安装至虚拟机Node03的/export/servers目录,具体命令如下。

SHELL
tar -zxvf /export/software/apache-hive-4.1.0-bin.tar.gz -C /export/servers/

▸ 课件步骤 04

重命名目录

将Hive的安装目录重命名为hive-4.1.0,具体命令如下。

SHELL
mv /export/servers/apache-hive-4.1.0-bin/ /export/servers/hive-4.1.0

▸ 课件步骤 05

配置Hive

在Hive安装目录的conf目录下编辑Hive配置文件hive-site.xml,具体命令如下。

SHELL
vi /export/servers/hive-4.1.0/conf/hive-site.xml

▸ 课件步骤 05

在配置文件hive-site.xml中添加如下内容。

点击查看

▸ 课件步骤 06

配置Hive系统环境变量

为了便于Hive的管理和使用,需要在虚拟机Node03中配置Hive系统环境变量。在虚拟机Node03中编辑系统环境变量文件profile,具体命令如下。

SHELL
vi /etc/profile

上述命令执行完成后,在系统环境变量文件profile的末尾添加如下内容。

SQL
export HIVE_HOME=/export/servers/hive-4.1.0
export PATH=$HIVE_HOME/bin:$PATH

▸ 课件步骤 07

初始化系统环境变量

初始化虚拟机的系统环境变量,使系统环境变量文件profile中添加的内容生效,在虚拟机Node03执行如下命令。

SHELL
source /etc/profile

▸ 课件步骤 08

初始化Hive元数据

在嵌入式Derby数据库中完成Hive元数据的初始化操作,构建Hive运行所需的元数据表结构,具体命令如下。

TEXT
schematool -dbType derby -initSchema

上述命令执行完成后,若输出“Initialization script completed”,则说明已在嵌入式Derby数据库中成功完成Hive元数据的初始化。

▸ 课件步骤 09

操作Hive

在内嵌模式下,当用户通过Beeline连接HiveServer2操作Hive时,由于HiveServer2并非作为独立JVM进程运行,而是以嵌入方式与Beeline共处同一JVM进程,所以无须在连接地址中指定主机名和端口号,相应地也无法指定默认访问的数据库。

通过Beeline连接HiveServer2,在虚拟机Node03执行如下命令。

SHELL
beeline -u jdbc:hive2:// -n root

上述命令执行完成后,会在当前目录下生成一个名为derby.log的文件,主要用于记录嵌入式Derby数据库的运行过程、错误信息和调试日志。

▸ 课件步骤 09

当Beeline成功连接HiveServer2后,将自动进入交互界面,如图。

任务:基于本地模式部署Hive

2.3

第37页 · 课件截图
第37页 · 课件截图
📄 展开课件原文(第 25–38 页,共 14 页)
第 25 页

2.2 任务:基于内嵌模式部署Hive

掌握Hive的部署,能够完成基于内嵌模式部署Hive的操作。

学习目标

第 26 页

内嵌模式是最简单的Hive部署方式,其核心特征是元数据存储与服务组件高度集成。在内嵌模式下,无须启动HiveServer2。同时,Metastore以嵌入方式运行,并使用嵌入式Derby数据库存储元数据。

2.2 任务:基于内嵌模式部署Hive

第 27 页

内嵌模式主要适用于本地单用户开发与功能验证等轻量级场景,不适用于多用户协作环境。其根本原因在于,嵌入式Derby数据库仅支持单会话访问,无法满足多个Hive客户端并发连接的需求,也不具备元数据服务的共享能力。

2.2 任务:基于内嵌模式部署Hive

第 28 页

接下来,以虚拟机Node03为例,演示如何基于内嵌模式部署Hive,具体操作步骤如下。

2.2 任务:基于内嵌模式部署Hive

第 29 页

2.2 任务:基于内嵌模式部署Hive

STEP 01

启动Hadoop集群

在虚拟机Node01执行下列命令启动Hadoop集群。

start-dfs.sh

start-yarn.sh

启动HDFS集群

启动YARN集群

STEP 02

上传Hive安装包

将Hive安装包apache-hive-4.1.0-bin.tar.gz上传到虚拟机Node03的/export/software目录中。

第 30 页

2.2 任务:基于内嵌模式部署Hive

STEP 03

安装Hive

将Hive安装至虚拟机Node03的/export/servers目录,具体命令如下。

tar -zxvf /export/software/apache-hive-4.1.0-bin.tar.gz -C /export/servers/

STEP 04

重命名目录

将Hive的安装目录重命名为hive-4.1.0,具体命令如下。

mv /export/servers/apache-hive-4.1.0-bin/ /export/servers/hive-4.1.0

第 31 页

2.2 任务:基于内嵌模式部署Hive

STEP 05

配置Hive

在Hive安装目录的conf目录下编辑Hive配置文件hive-site.xml,具体命令如下。

vi /export/servers/hive-4.1.0/conf/hive-site.xml

第 32 页

2.2 任务:基于内嵌模式部署Hive

STEP 05

配置Hive

在配置文件hive-site.xml中添加如下内容。

点击查看

第 33 页

2.2 任务:基于内嵌模式部署Hive

STEP 06

配置Hive系统环境变量

为了便于Hive的管理和使用,需要在虚拟机Node03中配置Hive系统环境变量。在虚拟机Node03中编辑系统环境变量文件profile,具体命令如下。

vi /etc/profile

上述命令执行完成后,在系统环境变量文件profile的末尾添加如下内容。

export HIVE_HOME=/export/servers/hive-4.1.0

export PATH=$HIVE_HOME/bin:$PATH

第 34 页

2.2 任务:基于内嵌模式部署Hive

STEP 07

初始化系统环境变量

初始化虚拟机的系统环境变量,使系统环境变量文件profile中添加的内容生效,在虚拟机Node03执行如下命令。

source /etc/profile

第 35 页

2.2 任务:基于内嵌模式部署Hive

STEP 08

初始化Hive元数据

在嵌入式Derby数据库中完成Hive元数据的初始化操作,构建Hive运行所需的元数据表结构,具体命令如下。

schematool -dbType derby -initSchema

上述命令执行完成后,若输出“Initialization script completed”,则说明已在嵌入式Derby数据库中成功完成Hive元数据的初始化。

第 36 页

2.2 任务:基于内嵌模式部署Hive

STEP 09

操作Hive

在内嵌模式下,当用户通过Beeline连接HiveServer2操作Hive时,由于HiveServer2并非作为独立JVM进程运行,而是以嵌入方式与Beeline共处同一JVM进程,所以无须在连接地址中指定主机名和端口号,相应地也无法指定默认访问的数据库。

通过Beeline连接HiveServer2,在虚拟机Node03执行如下命令。

beeline -u jdbc:hive2:// -n root

上述命令执行完成后,会在当前目录下生成一个名为derby.log的文件,主要用于记录嵌入式Derby数据库的运行过程、错误信息和调试日志。

第 37 页

2.2 任务:基于内嵌模式部署Hive

STEP 09

操作Hive

当Beeline成功连接HiveServer2后,将自动进入交互界面,如图。

第 38 页

任务:基于本地模式部署Hive

2.3

2.3

基于本地模式部署Hive

掌握Hive的部署,能够完成基于本地模式部署Hive的操作。

掌握Hive的部署,能够完成基于本地模式部署Hive的操作。

本地模式与内嵌模式在部署方式上具有一定相似性,适用于开发与测试环境。但相较于内嵌模式,本地模式的核心优势在于实现了元数据管理的独立化。在本地模式下,元数据不再保存在嵌入式Derby数据库中,而是迁移至外部关系型数据库(如MySQL、PostgreSQL等),从而摆脱了单会话访问的限制,支持多用户并发访问元数据服务。

在本地模式下,由于Hive涉及多会话访问,为实现统一的会话管理,通常将HiveServer2作为独立的JVM进程启动,而Metastore仍然以嵌入方式运行。

HiveServer2支持前台启动和后台启动两种方式,具体介绍如下。

后台

启动

前台

1.前台启动

前台启动是指HiveServer2在当前终端前台运行,会占用对应的终端窗口,且运行日志会实时输出到对应的终端中。若需终止HiveServer2,则用户可通过“Ctrl + C ”组合键或关闭终端窗口实现。

前台启动HiveServer2的命令如下。

SHELL
hive --service hiveserver2

2.后台启动

后台启动是指HiveServer2作为后台进程运行(进程名为RunJar),不占用终端窗口,且在关闭终端后依然保持运行。在后台启动下,运行日志不会实时输出到终端。当HiveServer2启动完成后会返回其对应的进程ID,用户可根据该ID使用kill命令手动终止HiveServer2 的进程。

后台启动HiveServer2的命令如下。

SHELL
hive --service hiveserver2 &

在实际使用中,后台启动HiveServer2时通常需配合日志重定向,将日志输出至指定文件,以便持久化存储和后续问题排查,示例命令如下。

SHELL
nohup hive --service hiveserver2 > /export/data/hiveserver2.log 2>&1 &

需要注意的是,日志重定向时,若指定的文件不存在,系统会自动创建,但文件所在的目录必须事先创建,否则命令将执行失败。

本任务演示基于本地模式部署Hive时,将采用MySQL存储Hive元数据,并沿用前文内嵌模式下已安装的Hive。接下来,将以虚拟机Node03为例,演示MySQL 8.4的安装及Hive本地模式的部署,具体操作如下。

▸ 课件步骤 01

安装MySQL

在虚拟机Node03中在线安装MySQL,具体操作如下。

(1)为确保系统依赖库为最新版本,避免后续安装MySQL时出现兼容性问题,需将系统中已安装的所有软件包更新至最新版本,具体命令如下。

TEXT
dnf update -y

▸ 课件步骤 01

(2)安装适用于CentOS Stream 9的MySQL 8.4社区版仓库配置,具体命令如下。

TEXT
dnf install -y https://dev.mysql.com/get/mysql84-community-release-el9-2.noarch.rpm

▸ 课件步骤 01

(3)安装MySQL社区版服务器,具体命令如下。

TEXT
dnf install -y mysql-community-server

▸ 课件步骤 01

(4)启动MySQL服务并设置开机自动启动,具体命令如下。

SHELL
systemctl enable --now mysqld

▸ 课件步骤 01

(5)获取MySQL为自带的root用户生成的初始密码,具体命令如下。

SHELL
grep 'temporary password' /var/log/mysqld.log

▸ 课件步骤 01

上述命令执行完成后的效果如图。

▸ 课件步骤 01

(6)运行MySQL的安全向导,完成安全配置的初始化,具体命令如下。

mysql_secure_installation

▸ 课件步骤 01

上述命令执行完成后,会依次引导用户完成以下安全配置。

TEXT
Enter password for user root:
New password:

Re-enter new password:

再次输入新密码以确认。

输入root用户的初始密码。

输入root用户的新密码。

TEXT
Change the password for root:

输入y或Y表示重新修改刚设置的新密码,输入其他任意内容则表示保留设置的新密码。

▸ 课件步骤 01

TEXT
Remove anonymous users:
Disallow root login remotely:
Remove test database and access to it:

输入y或Y表示删除默认创建的test数据库,输入其他任意内容则表示保留。

输入y或Y表示删除匿名用户,输入其他任意内容则表示保留匿名用户。

输入y或Y表示禁止root用户远程登录,输入其他任意内容则表示允许。

TEXT
Reload privilege tables now:

输入y或Y表示重新加载权限表以使上述更改生效,输入其他任意内容则表示暂不生效。

▸ 课件步骤 01

上述操作完成后,读者可通过root用户登录MySQL,验证密码是否修改成功,具体命令如下。

SHELL
mysql -u root -p

上述命令执行完成后,在出现提示信息“Enter password:”时,输入之前设置的新密码。若成功进入MySQL命令行界面,则说明密码已修改成功。

▸ 课件步骤 01

(7)为了支持通过远程方式登录MySQL,这里在MySQL中创建一个名为itcast的远程用户并为其分配权限。在MySQL命令行界面执行下列命令。

SQL
CREATE USER 'itcast'@'%' IDENTIFIED BY 'Itcast@2025';
GRANT ALL PRIVILEGES ON *.* TO 'itcast'@'%' WITH GRANT OPTION;
TEXT
FLUSH PRIVILEGES;

创建用户itcast,密码为Itcast@2025,允许在任意主机访问

授予用户itcast对所有数据库和表的全部权限,并允许其授权给其他用户

刷新权限,使配置立即生效

▸ 课件步骤 02

启动Hadoop集群

在虚拟机Node01执行下列命令启动Hadoop集群。

SHELL
start-dfs.sh
start-yarn.sh

启动YARN集群

启动HDFS集群

▸ 课件步骤 03

配置Hive

将已创建的Hive配置文件hive-site.xml重命名为hive-site-derby.xml,使内嵌模式下的Hive配置不再生效,具体命令如下。

SHELL
mv /export/servers/hive-4.1.0/conf/hive-site.xml \

/export/servers/hive-4.1.0/conf/hive-site-derby.xml

▸ 课件步骤 03

上述命令执行完成后,在Hive安装目录的conf目录下再次编辑Hive配置文件hive-site.xml,并添加如下内容。

点击查看

▸ 课件步骤 04

添加MySQL JDBC驱动

将mysql-connector-j-8.4.0.jar添加到Hive安装目录的lib目录中,使Hive能够通过JDBC协议连接MySQL。

▸ 课件步骤 05

初始化Hive元数据

在MySQL的hive数据库中完成Hive元数据的初始化操作,构建Hive运行所需的元数据表结构,具体命令如下。

TEXT
schematool -dbType mysql -initSchema

上述命令执行完成后,若输出“Initialization script completed”,则说明已在MySQL的hive数据库中成功完成Hive元数据的初始化。

▸ 课件步骤 06

启动HiveServer2

以后台启动的运行方式启动HiveServer2,并配置日志重定向,将HiveServer2的日志输出到/export/data目录下的hiveserver2_local.log文件中,具体命令如下。

SHELL
nohup hive --service hiveserver2 > /export/data/hiveserver2_local.log 2>&1 &

▸ 课件步骤 06

▸ 课件步骤 07

操作Hive

通过Beeline连接HiveServer2,在虚拟机Node03执行如下命令。

SHELL
beeline -u jdbc:hive2://localhost:10000 -n root

▸ 课件步骤 07

上述命令执行完成后,成功连接HiveServer2并进入交互界面的效果如图。

任务:基于远程模式部署Hive

2.4

第52页 · 课件截图
第52页 · 课件截图
第64页 · 课件截图
第64页 · 课件截图
第66页 · 课件截图
第66页 · 课件截图
📄 展开课件原文(第 39–67 页,共 29 页)
第 39 页

2.3 任务:基于本地模式部署Hive

学习目标

掌握Hive的部署,能够完成基于本地模式部署Hive的操作。

第 40 页

本地模式与内嵌模式在部署方式上具有一定相似性,适用于开发与测试环境。但相较于内嵌模式,本地模式的核心优势在于实现了元数据管理的独立化。在本地模式下,元数据不再保存在嵌入式Derby数据库中,而是迁移至外部关系型数据库(如MySQL、PostgreSQL等),从而摆脱了单会话访问的限制,支持多用户并发访问元数据服务。

2.3 任务:基于本地模式部署Hive

第 41 页

在本地模式下,由于Hive涉及多会话访问,为实现统一的会话管理,通常将HiveServer2作为独立的JVM进程启动,而Metastore仍然以嵌入方式运行。

2.3 任务:基于本地模式部署Hive

第 42 页

HiveServer2支持前台启动和后台启动两种方式,具体介绍如下。

2.3 任务:基于本地模式部署Hive

后台

启动

前台

启动

第 43 页

1.前台启动

前台启动是指HiveServer2在当前终端前台运行,会占用对应的终端窗口,且运行日志会实时输出到对应的终端中。若需终止HiveServer2,则用户可通过“Ctrl + C ”组合键或关闭终端窗口实现。

前台启动HiveServer2的命令如下。

2.3 任务:基于本地模式部署Hive

hive --service hiveserver2

第 44 页

2.后台启动

后台启动是指HiveServer2作为后台进程运行(进程名为RunJar),不占用终端窗口,且在关闭终端后依然保持运行。在后台启动下,运行日志不会实时输出到终端。当HiveServer2启动完成后会返回其对应的进程ID,用户可根据该ID使用kill命令手动终止HiveServer2 的进程。

后台启动HiveServer2的命令如下。

2.3 任务:基于本地模式部署Hive

hive --service hiveserver2 &

第 45 页

2.后台启动

在实际使用中,后台启动HiveServer2时通常需配合日志重定向,将日志输出至指定文件,以便持久化存储和后续问题排查,示例命令如下。

2.3 任务:基于本地模式部署Hive

nohup hive --service hiveserver2 > /export/data/hiveserver2.log 2>&1 &

需要注意的是,日志重定向时,若指定的文件不存在,系统会自动创建,但文件所在的目录必须事先创建,否则命令将执行失败。

第 46 页

本任务演示基于本地模式部署Hive时,将采用MySQL存储Hive元数据,并沿用前文内嵌模式下已安装的Hive。接下来,将以虚拟机Node03为例,演示MySQL 8.4的安装及Hive本地模式的部署,具体操作如下。

2.3 任务:基于本地模式部署Hive

2.后台启动

第 47 页

STEP 01

安装MySQL

在虚拟机Node03中在线安装MySQL,具体操作如下。

(1)为确保系统依赖库为最新版本,避免后续安装MySQL时出现兼容性问题,需将系统中已安装的所有软件包更新至最新版本,具体命令如下。

dnf update -y

2.3 任务:基于本地模式部署Hive

2.后台启动

第 48 页

STEP 01

安装MySQL

(2)安装适用于CentOS Stream 9的MySQL 8.4社区版仓库配置,具体命令如下。

dnf install -y https://dev.mysql.com/get/mysql84-community-release-el9-2.noarch.rpm

2.3 任务:基于本地模式部署Hive

2.后台启动

第 49 页

STEP 01

安装MySQL

(3)安装MySQL社区版服务器,具体命令如下。

dnf install -y mysql-community-server

2.3 任务:基于本地模式部署Hive

2.后台启动

第 50 页

STEP 01

安装MySQL

(4)启动MySQL服务并设置开机自动启动,具体命令如下。

systemctl enable --now mysqld

2.3 任务:基于本地模式部署Hive

2.后台启动

第 51 页

STEP 01

安装MySQL

(5)获取MySQL为自带的root用户生成的初始密码,具体命令如下。

grep 'temporary password' /var/log/mysqld.log

2.3 任务:基于本地模式部署Hive

2.后台启动

第 52 页

STEP 01

安装MySQL

上述命令执行完成后的效果如图。

2.3 任务:基于本地模式部署Hive

2.后台启动

第 53 页

STEP 01

安装MySQL

(6)运行MySQL的安全向导,完成安全配置的初始化,具体命令如下。

mysql_secure_installation

2.3 任务:基于本地模式部署Hive

2.后台启动

第 54 页

STEP 01

安装MySQL

上述命令执行完成后,会依次引导用户完成以下安全配置。

2.3 任务:基于本地模式部署Hive

2.后台启动

1

Enter password for user root:

New password:

Re-enter new password:

再次输入新密码以确认。

输入root用户的初始密码。

2

3

输入root用户的新密码。

Change the password for root:

输入y或Y表示重新修改刚设置的新密码,输入其他任意内容则表示保留设置的新密码。

4

第 55 页

STEP 01

安装MySQL

上述命令执行完成后,会依次引导用户完成以下安全配置。

2.3 任务:基于本地模式部署Hive

2.后台启动

5

Remove anonymous users:

Disallow root login remotely:

Remove test database and access to it:

输入y或Y表示删除默认创建的test数据库,输入其他任意内容则表示保留。

输入y或Y表示删除匿名用户,输入其他任意内容则表示保留匿名用户。

6

7

输入y或Y表示禁止root用户远程登录,输入其他任意内容则表示允许。

Reload privilege tables now:

输入y或Y表示重新加载权限表以使上述更改生效,输入其他任意内容则表示暂不生效。

8

第 56 页

STEP 01

安装MySQL

上述操作完成后,读者可通过root用户登录MySQL,验证密码是否修改成功,具体命令如下。

mysql -u root -p

2.3 任务:基于本地模式部署Hive

2.后台启动

上述命令执行完成后,在出现提示信息“Enter password:”时,输入之前设置的新密码。若成功进入MySQL命令行界面,则说明密码已修改成功。

第 57 页

STEP 01

安装MySQL

(7)为了支持通过远程方式登录MySQL,这里在MySQL中创建一个名为itcast的远程用户并为其分配权限。在MySQL命令行界面执行下列命令。

CREATE USER 'itcast'@'%' IDENTIFIED BY 'Itcast@2025';

GRANT ALL PRIVILEGES ON *.* TO 'itcast'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

2.3 任务:基于本地模式部署Hive

2.后台启动

创建用户itcast,密码为Itcast@2025,允许在任意主机访问

授予用户itcast对所有数据库和表的全部权限,并允许其授权给其他用户

刷新权限,使配置立即生效

第 58 页

STEP 02

启动Hadoop集群

在虚拟机Node01执行下列命令启动Hadoop集群。

start-dfs.sh

start-yarn.sh

2.3 任务:基于本地模式部署Hive

2.后台启动

启动YARN集群

启动HDFS集群

第 59 页

STEP 03

配置Hive

将已创建的Hive配置文件hive-site.xml重命名为hive-site-derby.xml,使内嵌模式下的Hive配置不再生效,具体命令如下。

mv /export/servers/hive-4.1.0/conf/hive-site.xml \

/export/servers/hive-4.1.0/conf/hive-site-derby.xml

2.3 任务:基于本地模式部署Hive

2.后台启动

第 60 页

STEP 03

配置Hive

上述命令执行完成后,在Hive安装目录的conf目录下再次编辑Hive配置文件hive-site.xml,并添加如下内容。

2.3 任务:基于本地模式部署Hive

2.后台启动

点击查看

第 61 页

STEP 04

添加MySQL JDBC驱动

将mysql-connector-j-8.4.0.jar添加到Hive安装目录的lib目录中,使Hive能够通过JDBC协议连接MySQL。

2.3 任务:基于本地模式部署Hive

2.后台启动

第 62 页

STEP 05

初始化Hive元数据

在MySQL的hive数据库中完成Hive元数据的初始化操作,构建Hive运行所需的元数据表结构,具体命令如下。

2.3 任务:基于本地模式部署Hive

2.后台启动

schematool -dbType mysql -initSchema

上述命令执行完成后,若输出“Initialization script completed”,则说明已在MySQL的hive数据库中成功完成Hive元数据的初始化。

第 63 页

STEP 06

启动HiveServer2

以后台启动的运行方式启动HiveServer2,并配置日志重定向,将HiveServer2的日志输出到/export/data目录下的hiveserver2_local.log文件中,具体命令如下。

2.3 任务:基于本地模式部署Hive

2.后台启动

nohup hive --service hiveserver2 > /export/data/hiveserver2_local.log 2>&1 &

第 64 页

STEP 06

启动HiveServer2

上述命令执行完成后的效果如图。

2.3 任务:基于本地模式部署Hive

2.后台启动

第 65 页

STEP 07

操作Hive

通过Beeline连接HiveServer2,在虚拟机Node03执行如下命令。

2.3 任务:基于本地模式部署Hive

2.后台启动

beeline -u jdbc:hive2://localhost:10000 -n root

第 66 页

STEP 07

操作Hive

上述命令执行完成后,成功连接HiveServer2并进入交互界面的效果如图。

2.3 任务:基于本地模式部署Hive

2.后台启动

第 67 页

任务:基于远程模式部署Hive

2.4

2.4

基于远程模式部署Hive

掌握Hive的部署,能够完成基于远程模式部署Hive的操作。

掌握Hive的部署,能够完成基于远程模式部署Hive的操作。

远程模式是生产环境中常见的Hive部署方式,其核心特征在于实现了服务组件的分离部署。在远程模式下,Hive的元数据仍然存储在外部关系型数据库中,但HiveServer2和Metastore均作为独立的JVM进程启动,并且部署在不同计算机上,从而实现组件解耦和资源隔离。

接下来介绍Metastore的启动方式。与HiveServer2类似,Metastore同样支持前台启动和后台启动两种方式,具体介绍如下。

(1)前台启动Metastore的命令如下。

SHELL
hive --service metastore

(2)后台启动Metastore的命令如下。

SHELL
hive --service metastore &

示例命令

在实际使用中,后台启动Metastore时同样通常需配合日志重定向,将日志输出至指定文件,以便持久化存储和后续问题排查。

SHELL
nohup hive --service metastore > /export/data/metastore.log 2>&1 &

本任务演示基于远程模式部署Hive时,将通过虚拟机Node02和Node03实现,其中虚拟机Node02将重新安装Hive并启动HiveServer2,用于对外提供查询服务;虚拟机Node03将沿用前文已安装的Hive并启动Metastore,用于对外提供元数据管理服务。

接下来,将演示如何基于远程模式部署Hive,具体操作如下。

▸ 课件步骤 01

启动Hadoop集群

在虚拟机Node01执行下列命令启动Hadoop集群。

SHELL
start-dfs.sh
start-yarn.sh

启动YARN集群

启动HDFS集群

▸ 课件步骤 02

在虚拟机Node03配置Hive

将已创建的Hive配置文件hive-site.xml重命名为hive-site-local.xml,使原有的Hive配置不再生效,在虚拟机Node03执行如下命令。

SHELL
mv /export/servers/hive-4.1.0/conf/hive-site.xml \

/export/servers/hive-4.1.0/conf/hive-site-local.xml

▸ 课件步骤 02

在Hive安装目录的conf目录下再次编辑Hive配置文件hive-site.xml,并添加如下内容。

点击查看

▸ 课件步骤 03

在虚拟机Node02安装Hive

将Hive安装包apache-hive-4.1.0-bin.tar.gz上传到虚拟机Node02的/export/software目录中。然后,将Hive安装至/export/servers目录,具体命令如下。

SHELL
tar -zxvf /export/software/apache-hive-4.1.0-bin.tar.gz -C /export/servers/

上述命令执行完成后,将Hive安装目录重命名为hive-4.1.0,具体命令如下。

SHELL
mv /export/servers/apache-hive-4.1.0-bin/ /export/servers/hive-4.1.0

▸ 课件步骤 04

在虚拟机Node02配置Hive系统环境变量

为了便于Hive的管理和使用,需要在虚拟机Node02中配置Hive系统环境变量。在虚拟机Node02中编辑系统环境变量文件profile,具体命令如下。

SHELL
vi /etc/profile

上述命令执行完成后,在系统环境变量文件profile的末尾添加如下内容。。

SQL
export HIVE_HOME=/export/servers/hive-4.1.0
export PATH=$HIVE_HOME/bin:$PATH

初始化虚拟机Node02的系统环境变量,需要执行source /etc/profile

▸ 课件步骤 05

在虚拟机Node02配置Hive

在虚拟机Node02的Hive安装目录的conf目录下,编辑Hive配置文件hive-site.xml,具体命令如下。

SHELL
vi /export/servers/hive-4.1.0/conf/hive-site.xml

▸ 课件步骤 05

在配置文件hive-site.xml中添加如下内容。

▸ 课件步骤 06

初始化Hive元数据

在MySQL的remote数据库中完成Hive元数据的初始化操作,构建Hive运行所需的元数据表结构,在虚拟机Node03执行如下命令。

TEXT
schematool -dbType mysql -initSchema

上述命令执行完成后,若输出“Initialization script completed”,则说明已在MySQL的remote数据库中成功完成Hive元数据的初始化。

▸ 课件步骤 07

启动Metastore

在虚拟机Node03中,以后台启动的运行方式启动Metastore,并配置日志重定向,将Metastore的日志输出到/export/data目录下的metastore.log文件中,具体命令如下。

▸ 课件步骤 07

上述命令执行完成后的效果如图。

▸ 课件步骤 08

启动HiveServer2

在虚拟机Node02中,以后台启动的运行方式启动HiveServer2,并配置日志重定向,将Metastore的日志输出到/export/data目录下的hiveserver2.log文件中,具体命令如下。

SHELL
nohup hive --service hiveserver2 > /export/data/hiveserver2.log 2>&1 &

▸ 课件步骤 08

▸ 课件步骤 09

操作Hive

Hive客户端可在任意计算机中,通过远程连接HiveServer2操作Hive。这里为简化操作步骤并减少网络通信开销,将在虚拟机Node02中通过Beeline连接HiveServer2操作Hive。在虚拟机Node02执行如下命令。

SHELL
beeline -u jdbc:hive2://node02:10001 -n root

▸ 课件步骤 09

上述命令执行完成后,成功连接HiveServer2并进入交互界面的效果如图。

任务:配置Hive On Tez

2.5

第83页 · 课件截图
第83页 · 课件截图
第85页 · 课件截图
第85页 · 课件截图
第87页 · 课件截图
第87页 · 课件截图
📄 展开课件原文(第 68–88 页,共 21 页)
第 68 页

2.4 任务:基于远程模式部署Hive

学习目标

掌握Hive的部署,能够完成基于远程模式部署Hive的操作。

第 69 页

远程模式是生产环境中常见的Hive部署方式,其核心特征在于实现了服务组件的分离部署。在远程模式下,Hive的元数据仍然存储在外部关系型数据库中,但HiveServer2和Metastore均作为独立的JVM进程启动,并且部署在不同计算机上,从而实现组件解耦和资源隔离。

2.4 任务:基于远程模式部署Hive

第 70 页

接下来介绍Metastore的启动方式。与HiveServer2类似,Metastore同样支持前台启动和后台启动两种方式,具体介绍如下。

(1)前台启动Metastore的命令如下。

hive --service metastore

(2)后台启动Metastore的命令如下。

hive --service metastore &

2.4 任务:基于远程模式部署Hive

第 71 页

示例命令

在实际使用中,后台启动Metastore时同样通常需配合日志重定向,将日志输出至指定文件,以便持久化存储和后续问题排查。

nohup hive --service metastore > /export/data/metastore.log 2>&1 &

2.4 任务:基于远程模式部署Hive

第 72 页

本任务演示基于远程模式部署Hive时,将通过虚拟机Node02和Node03实现,其中虚拟机Node02将重新安装Hive并启动HiveServer2,用于对外提供查询服务;虚拟机Node03将沿用前文已安装的Hive并启动Metastore,用于对外提供元数据管理服务。

2.4 任务:基于远程模式部署Hive

第 73 页

接下来,将演示如何基于远程模式部署Hive,具体操作如下。

2.4 任务:基于远程模式部署Hive

第 74 页

STEP 01

启动Hadoop集群

在虚拟机Node01执行下列命令启动Hadoop集群。

2.4 任务:基于远程模式部署Hive

start-dfs.sh

start-yarn.sh

启动YARN集群

启动HDFS集群

第 75 页

STEP 02

在虚拟机Node03配置Hive

将已创建的Hive配置文件hive-site.xml重命名为hive-site-local.xml,使原有的Hive配置不再生效,在虚拟机Node03执行如下命令。

2.4 任务:基于远程模式部署Hive

mv /export/servers/hive-4.1.0/conf/hive-site.xml \

/export/servers/hive-4.1.0/conf/hive-site-local.xml

第 76 页

STEP 02

在虚拟机Node03配置Hive

在Hive安装目录的conf目录下再次编辑Hive配置文件hive-site.xml,并添加如下内容。

2.4 任务:基于远程模式部署Hive

点击查看

第 77 页

STEP 03

在虚拟机Node02安装Hive

将Hive安装包apache-hive-4.1.0-bin.tar.gz上传到虚拟机Node02的/export/software目录中。然后,将Hive安装至/export/servers目录,具体命令如下。

2.4 任务:基于远程模式部署Hive

tar -zxvf /export/software/apache-hive-4.1.0-bin.tar.gz -C /export/servers/

上述命令执行完成后,将Hive安装目录重命名为hive-4.1.0,具体命令如下。

mv /export/servers/apache-hive-4.1.0-bin/ /export/servers/hive-4.1.0

第 78 页

STEP 04

在虚拟机Node02配置Hive系统环境变量

为了便于Hive的管理和使用,需要在虚拟机Node02中配置Hive系统环境变量。在虚拟机Node02中编辑系统环境变量文件profile,具体命令如下。

2.4 任务:基于远程模式部署Hive

vi /etc/profile

上述命令执行完成后,在系统环境变量文件profile的末尾添加如下内容。。

export HIVE_HOME=/export/servers/hive-4.1.0

export PATH=$HIVE_HOME/bin:$PATH

初始化虚拟机Node02的系统环境变量,需要执行source /etc/profile

第 79 页

STEP 05

在虚拟机Node02配置Hive

在虚拟机Node02的Hive安装目录的conf目录下,编辑Hive配置文件hive-site.xml,具体命令如下。

2.4 任务:基于远程模式部署Hive

vi /export/servers/hive-4.1.0/conf/hive-site.xml

第 80 页

2.4 任务:基于远程模式部署Hive

点击查看

STEP 05

在虚拟机Node02配置Hive

在配置文件hive-site.xml中添加如下内容。

第 81 页

STEP 06

初始化Hive元数据

在MySQL的remote数据库中完成Hive元数据的初始化操作,构建Hive运行所需的元数据表结构,在虚拟机Node03执行如下命令。

2.4 任务:基于远程模式部署Hive

schematool -dbType mysql -initSchema

上述命令执行完成后,若输出“Initialization script completed”,则说明已在MySQL的remote数据库中成功完成Hive元数据的初始化。

第 82 页

STEP 07

启动Metastore

在虚拟机Node03中,以后台启动的运行方式启动Metastore,并配置日志重定向,将Metastore的日志输出到/export/data目录下的metastore.log文件中,具体命令如下。

2.4 任务:基于远程模式部署Hive

nohup hive --service metastore > /export/data/metastore.log 2>&1 &

第 83 页

STEP 07

启动Metastore

上述命令执行完成后的效果如图。

2.4 任务:基于远程模式部署Hive

第 84 页

STEP 08

启动HiveServer2

在虚拟机Node02中,以后台启动的运行方式启动HiveServer2,并配置日志重定向,将Metastore的日志输出到/export/data目录下的hiveserver2.log文件中,具体命令如下。

2.4 任务:基于远程模式部署Hive

nohup hive --service hiveserver2 > /export/data/hiveserver2.log 2>&1 &

第 85 页

STEP 08

启动HiveServer2

上述命令执行完成后的效果如图。

2.4 任务:基于远程模式部署Hive

第 86 页

STEP 09

操作Hive

Hive客户端可在任意计算机中,通过远程连接HiveServer2操作Hive。这里为简化操作步骤并减少网络通信开销,将在虚拟机Node02中通过Beeline连接HiveServer2操作Hive。在虚拟机Node02执行如下命令。

2.4 任务:基于远程模式部署Hive

beeline -u jdbc:hive2://node02:10001 -n root

第 87 页

STEP 09

操作Hive

上述命令执行完成后,成功连接HiveServer2并进入交互界面的效果如图。

2.4 任务:基于远程模式部署Hive

第 88 页

任务:配置Hive On Tez

2.5

2.5

配置Hive On Tez

掌握Hive On Tez,能够独立完成Tez的安装并将其配置为Hive的执行引擎。

掌握Hive On Tez,能够独立完成Tez的安装并将其配置为Hive的执行引擎。

SHELL
Hive On Tez指的是将Tez作为Hive的执行引擎。Tez是Hadoop生态系统中的高性能分布式计算框架,其核心设计理念是提供一个通用的有向无环图(Directed Acyclic Graph,DAG)执行引擎,支持将复杂的数据处理任务表示为多个相互依赖的任务节点,实现整体协同执行。

相比MapReduce,Tez在任务执行层面具有显著优势。它通过有向无环图模型以更细粒度和更高灵活性组织计算逻辑,在内存中进行任务间数据传输,显著降低磁盘和网络I/O的开销。Tez不仅大幅提升了任务执行效率,还提高了资源利用率,特别适用于复杂、多阶段的大数据分析任务。

在Hive 4.1.0之前,虽然官方推荐将执行引擎替换为Tez以显著提升查询性能,但默认执行引擎仍为MapReduce。自Hive 4.1.0起,默认执行引擎已更改为Tez。

当Hive使用Tez作为执行引擎时,需要在HiveServer2所在服务器安装Tez,以便将Hive客户端提交的HiveQL语句转换为有向无环图并提交至YARN集群运行。同时,为确保各NodeManager在执行Tez任务时能够访问所需依赖库,还必须将Tez的相关库上传到HDFS。

本书使用的Tez版本为0.10.5,以确保与Hive 4.1.0的兼容性。接下来,将以远程模式部署的Hive为例,演示Tez的安装,具体操作步骤如下。

▸ 课件步骤 01

启动Hadoop集群

在虚拟机Node01执行下列命令启动Hadoop集群。

SHELL
start-dfs.sh
start-yarn.sh

启动YARN集群

启动HDFS集群

▸ 课件步骤 02

上传Tez安装包

将Tez安装包apache-tez-0.10.5-bin.tar.gz上传到虚拟机Node02的/export/software目录中。

▸ 课件步骤 03

安装Tez

将Tez安装至虚拟机Node02的/export/servers目录,具体命令如下。

SHELL
tar -zxvf /export/software/apache-tez-0.10.5-bin.tar.gz -C /export/servers/

▸ 课件步骤 04

重命名目录

将Tez的安装目录重命名为tez-0.10.5,具体命令如下。

SHELL
mv /export/servers/apache-tez-0.10.5-bin/ /export/servers/tez-0.10.5

▸ 课件步骤 05

配置Tez系统环境变量

为了便于Tez的管理和使用,需要在虚拟机Node02中配置Tez系统环境变量。在虚拟机Node02中编辑系统环境变量文件profile,具体命令如下。

SHELL
vi /etc/profile

上述命令执行完成后,在系统环境变量文件profile的末尾添加如下内容。

SQL
export TEZ_HOME=/export/servers/tez-0.10.5
export HADOOP_CLASSPATH=$TEZ_HOME/*:$TEZ_HOME/lib/*:$HADOOP_CLASSPATH

▸ 课件步骤 06

初始化系统环境变量

初始化虚拟机的系统环境变量,使系统环境变量文件profile中添加的内容生效,在虚拟机Node02执行如下命令。

▸ 课件步骤 07

在HDFS创建目录

在HDFS创建用于存放Tez相关库的目录/apps/tez,在虚拟机Node02执行如下命令。

SHELL
hdfs dfs -mkdir -p /apps/tez
source /etc/profile

▸ 课件步骤 08

上传Tez

在Tez安装目录的share目录中,包含一个名为tez.tar.gz的压缩归档文件,该文件整合了Tez所需的全部依赖库。当YARN集群在执行Tez任务时,会在启动ApplicationMaster和各个Container的NodeManager节点上,将压缩归档文件tez.tar.gz进行本地化并解压,以确保任务运行时能够访问所需的Tez库。

将压缩归档文件tez.tar.gz上传到HDFS的目录/apps/tez中,在虚拟机Node02执行如下命令。

SHELL
hdfs dfs -put /export/servers/tez-0.10.5/share/tez.tar.gz /apps/tez

▸ 课件步骤 09

修改Hive配置文件

在虚拟机Node02的/export/servers/hive-4.1.0/conf目录中,编辑Hive配置文件hive-site.xml,在该文件的<configuration>标签中添加如下配置。

TEXT
<property>
<name>tez.lib.uris</name>
<value>hdfs://node01:8020/apps/tez/tez.tar.gz</value>
</property>

配置压缩归档文件tez.tar.gz的路径

▸ 课件步骤 10

启动MetaStore

在虚拟机Node03中,以后台启动的运行方式启动Metastore,并配置日志重定向,将Metastore的日志输出到/export/data目录下的metastore.log文件中,具体命令如下。

SHELL
nohup hive --service metastore > /export/data/metastore.log 2>&1 &

若执行此步操作之前Metastore已启动,则需要关闭Metastore后重新启动。

▸ 课件步骤 11

启动HiveServer2

在虚拟机Node02中,以后台启动的运行方式启动HiveServer2,并配置日志重定向,将HiveServer2的日志输出到/export/data目录下的hiveserver2.log文件中,具体命令如下。

SHELL
nohup hive --service hiveserver2 > /export/data/hiveserver2.log 2>&1 &

若执行此步操作之前HiveServer2已启动,则需要关闭HiveServer2后重新启动。

▸ 课件步骤 12

测试执行引擎

在Hive的default数据库中新建表users并插入数据,具体步骤如下。

(1)在虚拟机Node02中通过Beeline连接HiveServer2操作Hive,具体命令如下。

SHELL
beeline -u jdbc:hive2://node02:10001 -n root

▸ 课件步骤 12

(2)在Hive的default数据库中新建表users,具体HiveQL语句如下。

SQL
CREATE TABLE IF NOT EXISTS users (
TEXT
user_id INT,
username STRING,
email STRING,
gender STRING,
age INT,
registration_date STRING
);

▸ 课件步骤 12

(3)向表users插入数据,具体HiveQL语句如下。

SQL
INSERT INTO TABLE users VALUES
TEXT
(1,'zhangsan','zhangsan@example.com','male',25,'2025-01-15'),
(2,'lisi','lisi@example.com','female',30,'2025-02-20'),
(3,'wangwu','wangwu@example.com','male',28,'2025-03-05'),
(4,'zhaoliu','zhaoliu@example.com','female',22,'2025-04-18'),
(5,'qianqi','qianqi@example.com','male',35,'2025-05-22'),
(6,'sunba','sunba@example.com','female',27,'2025-06-30');

▸ 课件步骤 12

上述命令执行完成后的效果如图。

任务:使用DataGrip操作Hive

2.6

第107页 · 课件截图
第107页 · 课件截图
📄 展开课件原文(第 89–108 页,共 20 页)
第 89 页

2.5 任务:配置Hive On Tez

学习目标

掌握Hive On Tez,能够独立完成Tez的安装并将其配置为Hive的执行引擎。

第 90 页

Hive On Tez指的是将Tez作为Hive的执行引擎。Tez是Hadoop生态系统中的高性能分布式计算框架,其核心设计理念是提供一个通用的有向无环图(Directed Acyclic Graph,DAG)执行引擎,支持将复杂的数据处理任务表示为多个相互依赖的任务节点,实现整体协同执行。

2.5 任务:配置Hive On Tez

第 91 页

相比MapReduce,Tez在任务执行层面具有显著优势。它通过有向无环图模型以更细粒度和更高灵活性组织计算逻辑,在内存中进行任务间数据传输,显著降低磁盘和网络I/O的开销。Tez不仅大幅提升了任务执行效率,还提高了资源利用率,特别适用于复杂、多阶段的大数据分析任务。

2.5 任务:配置Hive On Tez

第 92 页

在Hive 4.1.0之前,虽然官方推荐将执行引擎替换为Tez以显著提升查询性能,但默认执行引擎仍为MapReduce。自Hive 4.1.0起,默认执行引擎已更改为Tez。

2.5 任务:配置Hive On Tez

第 93 页

当Hive使用Tez作为执行引擎时,需要在HiveServer2所在服务器安装Tez,以便将Hive客户端提交的HiveQL语句转换为有向无环图并提交至YARN集群运行。同时,为确保各NodeManager在执行Tez任务时能够访问所需依赖库,还必须将Tez的相关库上传到HDFS。

2.5 任务:配置Hive On Tez

第 94 页

本书使用的Tez版本为0.10.5,以确保与Hive 4.1.0的兼容性。接下来,将以远程模式部署的Hive为例,演示Tez的安装,具体操作步骤如下。

2.5 任务:配置Hive On Tez

第 95 页

STEP 01

启动Hadoop集群

在虚拟机Node01执行下列命令启动Hadoop集群。

start-dfs.sh

start-yarn.sh

启动YARN集群

启动HDFS集群

2.5 任务:配置Hive On Tez

第 96 页

STEP 02

上传Tez安装包

将Tez安装包apache-tez-0.10.5-bin.tar.gz上传到虚拟机Node02的/export/software目录中。

2.5 任务:配置Hive On Tez

STEP 03

安装Tez

将Tez安装至虚拟机Node02的/export/servers目录,具体命令如下。

tar -zxvf /export/software/apache-tez-0.10.5-bin.tar.gz -C /export/servers/

第 97 页

STEP 04

重命名目录

将Tez的安装目录重命名为tez-0.10.5,具体命令如下。

2.5 任务:配置Hive On Tez

mv /export/servers/apache-tez-0.10.5-bin/ /export/servers/tez-0.10.5

第 98 页

STEP 05

配置Tez系统环境变量

为了便于Tez的管理和使用,需要在虚拟机Node02中配置Tez系统环境变量。在虚拟机Node02中编辑系统环境变量文件profile,具体命令如下。

2.5 任务:配置Hive On Tez

vi /etc/profile

上述命令执行完成后,在系统环境变量文件profile的末尾添加如下内容。

export TEZ_HOME=/export/servers/tez-0.10.5

export HADOOP_CLASSPATH=$TEZ_HOME/*:$TEZ_HOME/lib/*:$HADOOP_CLASSPATH

第 99 页

STEP 06

初始化系统环境变量

初始化虚拟机的系统环境变量,使系统环境变量文件profile中添加的内容生效,在虚拟机Node02执行如下命令。

2.5 任务:配置Hive On Tez

STEP 07

在HDFS创建目录

在HDFS创建用于存放Tez相关库的目录/apps/tez,在虚拟机Node02执行如下命令。

hdfs dfs -mkdir -p /apps/tez

source /etc/profile

第 100 页

STEP 08

上传Tez

在Tez安装目录的share目录中,包含一个名为tez.tar.gz的压缩归档文件,该文件整合了Tez所需的全部依赖库。当YARN集群在执行Tez任务时,会在启动ApplicationMaster和各个Container的NodeManager节点上,将压缩归档文件tez.tar.gz进行本地化并解压,以确保任务运行时能够访问所需的Tez库。

将压缩归档文件tez.tar.gz上传到HDFS的目录/apps/tez中,在虚拟机Node02执行如下命令。

2.5 任务:配置Hive On Tez

hdfs dfs -put /export/servers/tez-0.10.5/share/tez.tar.gz /apps/tez

第 101 页

STEP 09

修改Hive配置文件

在虚拟机Node02的/export/servers/hive-4.1.0/conf目录中,编辑Hive配置文件hive-site.xml,在该文件的<configuration>标签中添加如下配置。

2.5 任务:配置Hive On Tez

<property>

<name>tez.lib.uris</name>

<value>hdfs://node01:8020/apps/tez/tez.tar.gz</value>

</property>

配置压缩归档文件tez.tar.gz的路径

第 102 页

STEP 10

启动MetaStore

在虚拟机Node03中,以后台启动的运行方式启动Metastore,并配置日志重定向,将Metastore的日志输出到/export/data目录下的metastore.log文件中,具体命令如下。

2.5 任务:配置Hive On Tez

nohup hive --service metastore > /export/data/metastore.log 2>&1 &

若执行此步操作之前Metastore已启动,则需要关闭Metastore后重新启动。

第 103 页

STEP 11

启动HiveServer2

在虚拟机Node02中,以后台启动的运行方式启动HiveServer2,并配置日志重定向,将HiveServer2的日志输出到/export/data目录下的hiveserver2.log文件中,具体命令如下。

2.5 任务:配置Hive On Tez

nohup hive --service hiveserver2 > /export/data/hiveserver2.log 2>&1 &

若执行此步操作之前HiveServer2已启动,则需要关闭HiveServer2后重新启动。

第 104 页

STEP 12

测试执行引擎

在Hive的default数据库中新建表users并插入数据,具体步骤如下。

(1)在虚拟机Node02中通过Beeline连接HiveServer2操作Hive,具体命令如下。

2.5 任务:配置Hive On Tez

beeline -u jdbc:hive2://node02:10001 -n root

第 105 页

STEP 12

测试执行引擎

(2)在Hive的default数据库中新建表users,具体HiveQL语句如下。

2.5 任务:配置Hive On Tez

CREATE TABLE IF NOT EXISTS users (

user_id INT,

username STRING,

email STRING,

gender STRING,

age INT,

registration_date STRING

);

第 106 页

STEP 12

测试执行引擎

(3)向表users插入数据,具体HiveQL语句如下。

2.5 任务:配置Hive On Tez

INSERT INTO TABLE users VALUES

(1,'zhangsan','zhangsan@example.com','male',25,'2025-01-15'),

(2,'lisi','lisi@example.com','female',30,'2025-02-20'),

(3,'wangwu','wangwu@example.com','male',28,'2025-03-05'),

(4,'zhaoliu','zhaoliu@example.com','female',22,'2025-04-18'),

(5,'qianqi','qianqi@example.com','male',35,'2025-05-22'),

(6,'sunba','sunba@example.com','female',27,'2025-06-30');

第 107 页

STEP 12

测试执行引擎

上述命令执行完成后的效果如图。

2.5 任务:配置Hive On Tez

第 108 页

任务:使用DataGrip操作Hive

2.6

2.6

使用DataGrip操作Hive

了解使用DataGrip操作Hive的方法,能够使用DataGrip连接HiveServer2实现对Hive的访问与操作。

了解使用DataGrip操作Hive的方法,能够使用DataGrip连接HiveServer2实现对Hive的访问与操作。

DataGrip是由JetBrains公司开发的一款专业的跨平台数据库管理工具,广泛用于SQL查询、数据库管理和数据分析等场景。它支持多种主流数据库系统,包括MySQL、Oracle、SQL Server等,同时也原生支持包括Hive、Clickhouse在内的大数据分析平台。

DataGrip拥有现代化的用户界面和丰富的功能集,为数据分析人员、数据库管理员以及开发者提供统一的操作环境,便于高效管理数据库对象、执行查询、可视化数据以及进行数据库建模与设计。

针对Hive,DataGrip提供了原生的JDBC连接支持,用户可直接通过DataGrip连接HiveServer2,便捷地访问和操作Hive中的数据。在可视化界面与强大功能的辅助下,显著提升了Hive的使用效率与体验。

本书使用DataGrip的版本为2025.1.3,演示如何使用DataGrip连接虚拟机Node02中启动的HiveServer2,从而实现对Hive中数据的访问与操作,操作步骤如下。

▸ 课件步骤 01

在DataGrip的主界面依次单击“文件”→“新建”→“数据源”→“Apache Hive”选项,打开“数据源和驱动程序”窗口新建连接,如图。

▸ 课件步骤 02

单击“下载”选项,下载Hive的驱动程序文件。

▸ 课件步骤 03

在“数据源和驱动程序”窗口配置HiveServer2的连接信息。首先,在“名称”输入框中设置连接名称为MyHive。接着,在“主机”输入框中设置HiveServer2绑定的IP地址为192.168.121.133。然后,在“端口”输入框中设置HiveServer2监听的端口为10001。最后,在“用户”输入框中设置用户为root。“数据源和驱动程序”窗口配置完成后的效果如图。

▸ 课件步骤 04

单击“架构”选项卡,并勾选其中的“所有架构”复选框,即可使当前创建的连接获取Hive中的所有数据库。否则,将默认仅连接到default数据库,如图。

▸ 课件步骤 05

单击“测试连接”选项,验证当前创建的连接是否能够成功连接至指定的HiveServer2,如图。

▸ 课件步骤 06

单击“确定”按钮以保存连接设置并返回DataGrip主界面。此时,将基于名为MyHive的连接配置,自动连接至虚拟机Node02中启动的HiveServer2,如图。

▸ 课件步骤 07

在名为console的SQL文件中输入查询表users所有数据的HiveQL语句并运行,如图。

AI助学

学完本单元后,读者已经初步了解Hive的部署方式、访问工具和执行引擎配置方法。然而,在实际部署和使用Hive时,仍可能遇到服务启动、客户端连接或任务执行等问题。此时,可借助AI分析报错信息和环境配置,帮助判断可能原因,并梳理排查思路。

AI

助

学

单元总结

本单元主要讲解了Hive部署与应用。首先,介绍了Hive客户端工具Beeline的基本概念与使用方法。接着,详细说明了基于不同模式部署Hive的方法,包括内嵌模式、本地模式和远程模式。然后,重点介绍了Hive On Tez的原理与配置方法。最后,介绍了使用DataGrip操作Hive的方法。通过本单元的学习,读者能够根据实际需求灵活选择并部署不同模式的Hive环境,掌握多种客户端工具的使用方法,为后续Hive数据仓库的构建与综合应用打下坚实基础。

单

元

总

结

第114页 · 课件截图
第114页 · 课件截图
第115页 · 课件截图
第115页 · 课件截图
第116页 · 课件截图
第116页 · 课件截图
第117页 · 课件截图
第117页 · 课件截图
📷 展开本知识点其余 2 张课件截图
第118页 · 课件截图
第118页 · 课件截图
第119页 · 课件截图
第119页 · 课件截图
📄 展开课件原文(第 109–121 页,共 13 页)
第 109 页

2.6 任务:使用DataGrip操作Hive

学习目标

了解使用DataGrip操作Hive的方法,能够使用DataGrip连接HiveServer2实现对Hive的访问与操作。

第 110 页

DataGrip是由JetBrains公司开发的一款专业的跨平台数据库管理工具,广泛用于SQL查询、数据库管理和数据分析等场景。它支持多种主流数据库系统,包括MySQL、Oracle、SQL Server等,同时也原生支持包括Hive、Clickhouse在内的大数据分析平台。

2.6 任务:使用DataGrip操作Hive

第 111 页

DataGrip拥有现代化的用户界面和丰富的功能集,为数据分析人员、数据库管理员以及开发者提供统一的操作环境,便于高效管理数据库对象、执行查询、可视化数据以及进行数据库建模与设计。

2.6 任务:使用DataGrip操作Hive

第 112 页

针对Hive,DataGrip提供了原生的JDBC连接支持,用户可直接通过DataGrip连接HiveServer2,便捷地访问和操作Hive中的数据。在可视化界面与强大功能的辅助下,显著提升了Hive的使用效率与体验。

2.6 任务:使用DataGrip操作Hive

第 113 页

本书使用DataGrip的版本为2025.1.3,演示如何使用DataGrip连接虚拟机Node02中启动的HiveServer2,从而实现对Hive中数据的访问与操作,操作步骤如下。

2.6 任务:使用DataGrip操作Hive

第 114 页

STEP 01

在DataGrip的主界面依次单击“文件”→“新建”→“数据源”→“Apache Hive”选项,打开“数据源和驱动程序”窗口新建连接,如图。

2.6 任务:使用DataGrip操作Hive

STEP 02

单击“下载”选项,下载Hive的驱动程序文件。

第 115 页

STEP 03

在“数据源和驱动程序”窗口配置HiveServer2的连接信息。首先,在“名称”输入框中设置连接名称为MyHive。接着,在“主机”输入框中设置HiveServer2绑定的IP地址为192.168.121.133。然后,在“端口”输入框中设置HiveServer2监听的端口为10001。最后,在“用户”输入框中设置用户为root。“数据源和驱动程序”窗口配置完成后的效果如图。

2.6 任务:使用DataGrip操作Hive

第 116 页

STEP 04

单击“架构”选项卡,并勾选其中的“所有架构”复选框,即可使当前创建的连接获取Hive中的所有数据库。否则,将默认仅连接到default数据库,如图。

2.6 任务:使用DataGrip操作Hive

第 117 页

STEP 05

单击“测试连接”选项,验证当前创建的连接是否能够成功连接至指定的HiveServer2,如图。

2.6 任务:使用DataGrip操作Hive

第 118 页

STEP 06

单击“确定”按钮以保存连接设置并返回DataGrip主界面。此时,将基于名为MyHive的连接配置,自动连接至虚拟机Node02中启动的HiveServer2,如图。

2.6 任务:使用DataGrip操作Hive

第 119 页

STEP 07

在名为console的SQL文件中输入查询表users所有数据的HiveQL语句并运行,如图。

2.6 任务:使用DataGrip操作Hive

第 120 页

AI助学

学完本单元后,读者已经初步了解Hive的部署方式、访问工具和执行引擎配置方法。然而,在实际部署和使用Hive时,仍可能遇到服务启动、客户端连接或任务执行等问题。此时,可借助AI分析报错信息和环境配置,帮助判断可能原因,并梳理排查思路。

AI

助

学

第 121 页

单元总结

本单元主要讲解了Hive部署与应用。首先,介绍了Hive客户端工具Beeline的基本概念与使用方法。接着,详细说明了基于不同模式部署Hive的方法,包括内嵌模式、本地模式和远程模式。然后,重点介绍了Hive On Tez的原理与配置方法。最后,介绍了使用DataGrip操作Hive的方法。通过本单元的学习,读者能够根据实际需求灵活选择并部署不同模式的Hive环境,掌握多种客户端工具的使用方法,为后续Hive数据仓库的构建与综合应用打下坚实基础。

单

元

总

结

🧪 动手做一遍 部署完,用 6 步确认环境真的可用

第一次动手做?先花 40 分钟走一遍 《零基础起步》(每一步都写了“敲什么、应该看到什么、报错了怎么办”),再回来做这个实例会顺很多。
练习场景三种部署模式装完之后,很多人卡在“连不上/找不到库”。这 6 步按依赖顺序把环境体检一遍。
预计用时约 15 分钟 · 每一步都给出可执行语句与预期结果,建议边看边在 Beeline / DataGrip 里敲一遍
本实例步骤
  1. 01 确认 Hadoop 起来了
  2. 02 确认元数据库能连上
  3. 03 确认 HDFS 仓库目录在
  4. 04 启动 HiveServer2 并连上
  5. 05 换成 Tez 引擎,跑一条 SQL 感受差别
  6. 06 用 DataGrip 图形化连一次

01确认 Hadoop 起来了

Hive 依赖 HDFS 存数据、依赖 YARN(或 Tez)跑作业,先看进程。

SHELL
jps    # 应看到 NameNode / DataNode / ResourceManager / NodeManager
示意输出(命令类操作的典型回显)
进程
NameNode
DataNode
ResourceManager
NodeManager
Jps
少了 NameNode 说明 HDFS 没起:start-dfs.sh;少了 ResourceManager:start-yarn.sh。

02确认元数据库能连上

Hive 的库表信息都在 MySQL 里,连不上元数据库,Hive 一定启动失败。

SHELL
mysql -uhive -phive123456 -e "use hive; show tables;" 
示意输出(命令类操作的典型回显)
Tables_in_hive
BUCKETING_COLS
CDS
COLUMNS_V2
DBS
TBLS
…(Hive 自动生成的元数据表)

💡 登录报 Access denied 通常是 hive 账号密码或授权没做对;表很少则可能是 schematool -initSchema 没执行。

03确认 HDFS 仓库目录在

Hive 的表数据默认落在 /user/hive/warehouse 下。

SHELL
hdfs dfs -ls /user/hive/warehouse
示意输出(命令类操作的典型回显)
权限属主路径
drwxrwxrwthive/user/hive/warehouse/demo.db
drwxrwxrwthive/user/hive/warehouse/school.db
目录不存在时建表会报错,可先手动创建并授权:hdfs dfs -mkdir -p /user/hive/warehouse && hdfs dfs -chmod g+w /user/hive/warehouse。

04启动 HiveServer2 并连上

远程模式的核心服务,DataGrip、Beeline 都连它。

SHELL
hiveserver2 &                                   # 后台启动,默认端口 10000
beeline -u "jdbc:hive2://hadoop1:10000" -n hadoop
示意输出(命令类操作的典型回显)
提示
Connected to: Apache Hive (version 4.1.0)
0: jdbc:hive2://hadoop1:10000>

💡 连不上先看 10000 端口:netstat -nltp | grep 10000;再翻日志 /export/servers/hive-4.1.0/logs/hive.log。

05换成 Tez 引擎,跑一条 SQL 感受差别

Hive on Tez 用 DAG 代替多轮 MapReduce,交互查询明显变快。

SQL
SET hive.execution.engine=tez;
SELECT count(*) FROM demo.t_stu;
-- 想永久生效:把下面这行写进 hive-site.xml
-- <property><name>hive.execution.engine</name><value>tez</value></property>
示意输出(命令类操作的典型回显)
_c0
2
第一次用 Tez 会往 HDFS 传依赖包(/apps/tez),稍慢属正常;之后每次查询都会快很多。

06用 DataGrip 图形化连一次

日常写 SQL 更顺手,也方便把结果导出。

SQL
Host:     hadoop1
Port:     10000
User:     hadoop
Database: default        -- 或直接写要用的库名
示意输出(命令类操作的典型回显)
参数值
驱动Apache Hive (JDBC)
URLjdbc:hive2://hadoop1:10000
测试连接Succeeded

💡 DataGrip 里执行 DDL 前把 Execute in transaction 关掉,避免 Hive 事务语义不匹配。

配套实训