【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)

目录

  • 前言
  • 一、Hive入门
    • 1.1. Hive本质
    • 1.2. Hive架构原理
  • 二、Hive3.1.3安装
    • 1. 最小化安装部署(仅适合学习测试)
    • 2. 安装MySQL
    • 3. 卸载MySQL
    • 4. 配置Hive元数据存储到MySQL中
    • 5. Hive服务部署
      • 5.1. hiveserver2服务(远程访问服务)
      • 5.2. metastore服务
    • 6.Hive使用技巧
      • 6.1. Hive常用交互命令
      • 6.2. Hive常用非交互命令(无需启动hive)
      • 6.3. hive参数配置方式
      • 6.4. Hive常见属性配置
  • 总结


前言

hive尚硅谷面试刷题网站
hive日志位置(root用户下):/tmp/root/hive.log


一、Hive入门

Hive入门官方文档点此前往

Hive是由Facebook开源,基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。

统计单词出现个数

  1. 在 Hadoop 课程中我们用 MapReduce程序实现的,当时需要写Mapper、Reducer和 Driver三个类,并实现对应逻辑,相对繁琐。
  2. 如果通过Hive SQL 实现,一行就搞定了,简单方便,容易理解select count(*) from test group by id

1.1. Hive本质

是一个 Hadoop客户端,用于将HQL (Hive SQL)转化成MapReduce程序

  1. Hive中每张表的数据存储在HDFS中
  2. Hive分析数据底层的实现是MapReduce(也可配置为Spark或者Tez)
  3. 执行程序运行在 Yarn 上

1.2. Hive架构原理

【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第1张图片

Hive内部执行流程:解析器(解析SQL语句)、编译器(把SQL语句编译成MapReduce程序)、优化器(优化MapReduce程序)、执行器(将MapReduce程序运行的结果提交到HDFS)

元数据(Metastore):元数据包括数据库(默认是default)、表名、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等。默认存储在自带的 derby 数据库中,由于 derby数据库只支持单客户端访问,生产环中为了多人开发,推荐使手MySQL存储 Metastore

驱动器(Driver):

  1. 解析器(SQLParser):将SQL字符串转换成抽象语法树(AST)
    【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第2张图片

  2. 语义分析(Semantic Analyzer):将AST进一步划分为 QeuryBlock

  3. 逻辑计划生成器(Logical Plan Gen):将语法树生成逻辑计划
    【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第3张图片

  4. 逻辑优化器(Logical Optimizer):对逻辑计划进行优化

在Hive架构中,逻辑优化器是负责对HiveQL查询进行逻辑优化的重要组件。逻辑优化器主要针对查询的逻辑结构进行优化,以提高查询性能和效率。下面是逻辑优化器的一些常见优化技术:

  1. 列剪裁(Column Pruning):逻辑优化器通过分析查询语句中涉及的列,剪裁掉不必要的列,从而减少数据传输和处理的开销。
  2. 谓词下推(Predicate Pushdown):逻辑优化器将查询语句中的谓词(过滤条件)下推到数据源,以减少数据的读取量和计算量。
  3. 连接重排(Join Reordering):逻辑优化器根据查询语句中的连接操作,尝试重新排列连接的顺序,选择更优的连接顺序,以减少中间结果的大小和计算量。
  4. 子查询优化(Subquery Optimization):逻辑优化器对查询语句中的子查询进行优化,如转化为连接操作、使用嵌套循环连接等,以减少子查询的计算量。
  5. 聚合推导(Aggregate Deduction):逻辑优化器根据查询语句中的聚合操作,尝试推导出部分聚合结果,以减少计算量和数据传输开销。
  6. 条件推断(Predicate Inference):逻辑优化器根据查询语句中的条件和约束,推断出更多的条件,以进一步减少数据的读取量和计算量。

逻辑优化器通过这些优化技术,对查询进行重写和重组,以减少不必要的计算和数据传输,提高查询的性能和效率。这些优化技术可以根据查询的特点和数据的分布情况,自动应用于查询执行计划的生成过程中。

  1. 物理计划生成器(Physical Plan Gen):根据优化后的逻辑计划生成物理计划
  2. 物理优化器(Physical Optimizer):对物理计划进行优化(map join详见点击)
  3. 执行器(Execution):执行该计划,得到查询结果并返回给客户端

Hive的架构原理可以概括如下:

  1. 元数据存储:Hive的元数据存储在关系型数据库(如MySQL)中,包括表的模式、列的类型、分区信息等。元数据存储描述了数据的结构和位置。
  2. 查询编译和优化:当用户提交一个HiveQL查询时,Hive首先将查询语句进行解析和语法分析,然后进行查询优化。查询优化包括列剪裁、谓词下推、连接重排等技术,以提高查询性能。
  3. 查询执行计划:在查询优化后,Hive生成一个逻辑查询计划,描述了查询的执行流程和操作顺序。然后,逻辑查询计划被转化为物理查询计划,根据底层存储引擎(如MapReduce、Tez、Spark等)的特点进行优化。
  4. 数据存储和处理:Hive中的数据存储在Hadoop分布式文件系统(HDFS)中,以文件的形式进行存储。数据可以按照表的分区进行划分,以提高查询效率。Hive使用Hadoop生态系统的计算框架(如MapReduce、Tez、Spark)进行数据处理。
  5. 用户接口(Client):Hive提供了多种用户接口,包括命令行接口(CLI)、Web界面(Hive WebUI)和编程接口(如Java、Python、JDBC、ODBC等),用于用户与Hive进行交互。

总的来说,Hive的架构原理是将用户提交的查询语句进行编译、优化和执行计划生成,然后通过底层的存储和计算引擎进行数据的存储和处理。通过Hive的元数据存储和查询优化技术,用户可以使用类似于SQL的语言对大规模的结构化数据进行分析和处理。

JDBC和ODBC的区别:

  1. JDBC的移植性比 ODBC 好(通常情况下,安装完ODBC 驱动程序之后,还需要经过确定的配置才能够应用。而不相同的配置在不相同数据库服务器之间不能够通用。所以,安装一次就需要再配置一次。JDBC只需要选取适当的JDBC 数据库驱动程序,就不需要额外的配置。在安装过程中,JDBC 数据库驱动程序会自己完成有关的配置)
  2. 两者使用的语言不同,JDBC 在Java编程时使用,ODBC一般在C/C++编程时使用

二、Hive3.1.3安装

1. 最小化安装部署(仅适合学习测试)

把元数据存储在客户端进程内嵌的一个derby数据库,这个数据库是这个进程专有独享的,其他客户端无法使用

准备工作

# 启动集群
myhadoop.sh start
# 查看集群启动情况
jpsall

下载解压(均在Hadoop102上)

如遇过期请到这里点击下载bin.tar.ge文件然后复制下载链接(阿里镜像站,下载失败就找他)

# 下载在/opt/software/
wget https://mirrors.aliyun.com/apache/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz?spm=a2c6h.25603864.0.0.3462158fKLAMVw
# 解压
tar -zxvf /opt/software/apache-hive-3.1.3-bin.tar.gz -C /opt/module
# 改名
mv apache-hive-3.1.3-bin/ hive

/etc/profile.d/my_env.sh添加环境变量

#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin

刷新一下环境

source /etc/profile.d/my_env.sh

初始化元数据库(默认是derby数据库)

cd /opt/module/hive;bin/schematool -dbType derby -initSchema

出Bug了
【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第4张图片
解决方案:jar包,动手!

cd /opt/module/hive/lib
mv log4j-slf4j-impl-2.17.1.jar log4j-slf4j-impl-2.17.1.jar.bak

又出Bug了(执行初始化命令时发生报错是因为hadoop和hive的两个guava.jar版本不一致)
【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第5张图片
解决方案:删除+复制

rm -rf /opt/module/hive/lib/guava-19.0.jar; cp -r /opt/module/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /opt/module/hive/lib/

【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第6张图片

hive,启动!

hive

# 测试一下
show databases;

又双出Bug了
在这里插入图片描述
解决方案:不知道怎么解决,大佬帮帮~

# 卸载重装
rm -rf hive
tar -zxvf /opt/software/apache-hive-3.1.3-bin.tar.gz -C /opt/module

【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第7张图片
接着测试:

hive> show tables;
hive> create table stu(id int, name string);
hive> insert into stu values(1,"ss");
hive> select * from stu;

通过HDFS网页端Hadoop102上查看建表情况点击前往,在mapreduce中也能看到点击前往
【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第8张图片
【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第9张图片
【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第10张图片
【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第11张图片

没有Yarn上提交任务,因为对于简单的查询语句(无需计算)hive进行了优化
Hive中的表在 Hadoop中是目录;Hive中的数据在Hadoop中是文件

尝试:另一个窗口开启Hive,在/tmp/root目录下监控hive.log文件,发现不行!

【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第12张图片

# 首先退出hive客户端。然后在Hive的安装目录下将derby.log和metastore_db删除,顺便将HDFS上目录删除
hive> quit;
rm -rf /root/derby.log /opt/module/hive/metastore_db

2. 安装MySQL

离线安装MySQL详见MySQL安装指南点击前往

# 在/usr/local/mysql目录下再安装一个包
rpm -ivh mysql-community-libs-compat-8.0.34-1.el7.x86_64.rpm

如果报错提示有依赖包没有下载,则前往Packages for Linux and Unix点击前往

MySQL,启动!

systemctl start mysqld ; systemctl status mysqld

配置MySQL

# 查看MySQL默认初始密码
cat /var/log/mysqld.log | grep password
# 查询user表
select user,host from user;
# 修改user表,把Host表内容修改为%,使得任意节点均可访问
update user set host="%" where user="root";
# 刷新权限
select user,host from user;

【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第13张图片

3. 卸载MySQL

【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第14张图片
在这里插入图片描述

4. 配置Hive元数据存储到MySQL中

新建元数据库

create database metastore;

下载MySQL的JDBC驱动到Hive的lib目录下

# 由于上次mycat下载过相应版本的驱动jar包mysql-connector-j-8.1.0.jar
cp /usr/local/mycat/lib/mysql-connector-j-8.1.0.jar /opt/module/hive/lib/

驱动jar包==>mysql-connector-j-8.1.0.jar下载详见
【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第15张图片

/opt/module/hive/conf目录下新建hive-site.xml文件:vim /opt/module/hive/conf/hive-site.xml




<configuration>
    
    <property>
      <name>javax.jdo.option.ConnectionURLname>
      <value>jdbc:mysql://192.168.150.103:3306/metastore?createDatabaseIfNotExist=truevalue>
  property>
    
    
  <property>
      <name>javax.jdo.option.ConnectionDriverNamename>
      <value>com.mysql.cj.jdbc.Drivervalue>
  property>
    
	
    <property>
        <name>javax.jdo.option.ConnectionUserNamename>
        <value>rootvalue>
    property>

    
    <property>
        <name>javax.jdo.option.ConnectionPasswordname>
        <value>lovexw999value>
    property>

    
    <property>
        <name>hive.metastore.warehouse.dirname>
        <value>/user/hive/warehousevalue>
    property>
configuration>

初始化Hive元数据库(修改为采用MySQL存储元数据)

cd /opt/module/hive/;bin/schematool -dbType mysql -initSchema -verbose

在三检查避免出Bug:

  1. jdbc连接的URL:要符合自己情况的!!
  2. jdbc连接的Driver:在Mysql 8及以上版本中,驱动类已经从com.mysql.jdbc.Driver改为com.mysql.cj.jdbc.Driver,在Mysql 8及以上版本中,虽然兼容老版本,但是推荐新的
  3. 驱动jar包:要找到对应当前MySQL版本的jar包
  4. jdbc连接的password:免密登录的要改过,详见这里

验证元数据是否配置成功

hive> show databases;
hive> show tables;
hive> create table stu(id int, name string);
hive> insert into stu values(1,"ss");
hive> select * from stu;

# 开启另一个窗口开启Hive(两个窗口都可以操作Hive,没有出现异常)
hive> show databases;
hive> show tables;
hive> select * from stu;

查看元数据库中存储的库信息(打开DG)

  • DBS表
    在这里插入图片描述
  • TBLS表
    在这里插入图片描述
  • SDS表
    在这里插入图片描述
  • 以上三图的关系
    【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第16张图片
  • COLUMNS_V2
    在这里插入图片描述
  • 元数据库表描述
表名 说明
BUCKETING_COLS 存储bucket字段信息,通过SD_ID与其他表关联
CDS 表示该分区、表存储的字段信息。一个字段CD_ID,与SDS表关联
COLUMNS_V2 表示该分区、表存储的字段信息。存储字段信息,通过CD_ID与其他表关联
DATABASE_PARAMS 描述数据库的属性信息
DBS 存储hive的database信息
DB_PRIVS 描述数据库的权限信息
FUNCS 记录用户子集编写的函数信息,包括函数名、对应类名、创建者信息等
FUNC_RU 记录自定义函数所在文件的路径
GLOBAL_PRIVS 全局变量,与表无关
IDXS Hive中索引的信息
PARTITIONS 分区信息,SD_ID, TBL_ID关联
PARTITION_KEYS 存储分区字段列,TBL_ID关联
PARTITION_KEY_VALS 分区的值,通过PART_ID关联。与PARTITION_KEYS共用同一个字段INTEGER_IDX来标示不同的分区字段。
PARTITION_PARAMS 存储某分区相关信息,包括文件数,文件大小,记录条数等。通过PART_ID关联
PART_COL_PRIVS 分区列的授权信息
PART_COL_STATS 分区中列的统计信息
ROLES 角色表,和GLOBAL_PRIVS配合,与表无关
SDS 存储输入输出format等信息,包括表的format和分区的format。关联字段CD_ID,SERDE_ID
SEQUENCE_TABLE 存储sqeuence相关信息,与表无关
SERDES 存储序列化反序列化使用的类
SERDE_PARAMS 序列化反序列化相关配置信息,通过SERDE_ID关联
SKEWED_COL_NAMES 保存表、分区由数据倾斜的列信息,包括列名
SKEWED_STRING_LIST 保存表,分区有数据倾斜的字符串列表和值的信息
SKEWED_STRING_LIST_VALUES 保存表,分区有数据倾斜的字符串列表和值的信息
SKEWED_VALUES 保存表、分区倾斜列对应的本地文件路径
SORT_COLS 排序字段,包括列名和排序方式。通过SD_ID关联
TABLE_PARAMS 表相关信息,是否外部表,通过TBL_ID关联
TAB_COL_STATS 表中列的统计信息,包括数值类型的最大和最小值
TBLS 存储表信息,关联字段DB_ID,SD_ID
TBL_COL_PRIVS 表或视图中列的授权信息,包括授权用户、被授权用户和授权的权限等
TBL_PRIVS 表赋权限相关信息,通过TBL_ID关联
VERSION 版本
VERSION_copy 版本,通过VER_ID关联

5. Hive服务部署

5.1. hiveserver2服务(远程访问服务)

提供jdbc/odbc接口,为用户提供远程访问Hive数据的功能,例如用户期望在个人电脑中访问远程服务中的Hive数据,就需要用到Hiveserver2
【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第17张图片

访问hadoop集群身份说明

  • 在远程访问Hive数据时,客户端并未直接访问Hadoop集群,而是由Hivesever2代理访问。由于Hadoop集群中的数据具备访问权限控制,所以此时需考虑一个问题:那就是访问Hadoop集群的用户身份是谁?是Hiveserver2的启动用户?还是客户端的登录用户?
  • 答案是都有可能,具体是谁,由Hiveserver2的hive.server2.enable.doAs参数决定(默认开启),该参数的含义是是否启用Hiveserver2用户模拟的功能。若启用,则Hiveserver2会模拟成客户端的登录用户去访问Hadoop集群的数据,不启用,则Hivesever2会直接使用启动用户访问Hadoop集群数据。模拟用户的功能,默认是开启的
    【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第18张图片
    【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第19张图片

生产环境,推荐开启用户模拟功能,因为开启后才能保证各用户之间的权限隔离

hiveserver2部署:hivesever2的模拟用户功能,依赖于Hadoop提供的proxy user(代理用户功能),只有Hadoop中的代理用户才能模拟其他用户的身份访问Hadoop集群。因此,需要将hiveserver2的启动用户设置为Hadoop的代理用户,配置方式如下:
1️⃣hadoop102中/opt/module/hadoop/etc/hadoop/core-site.xml


<property>
    <name>hadoop.proxyuser.root.hostsname>
    <value>*value>
property>


<property>
    <name>hadoop.proxyuser.root.groupsname>
    <value>*value>
property>


<property>
    <name>hadoop.proxyuser.root.usersname>
    <value>*value>
property>

分发core-site.xml文件xsync core-site.xml并重启集群myhadoop.sh stop/start

2️⃣Hive端配置:hive-site.xml文件中添加如下配置信息


<property>
	<name>hive.server2.thrift.bind.hostname>
	<value>hadoop102value>
property>


<property>
	<name>hive.server2.thrift.portname>
	<value>10000value>
property>

启动hiveserver2

# 启动服务(这样启动会阻塞,一旦关闭该窗口就会挂掉服务)
cd /opt/module/hive/;bin/hive --service hiveserver2
# 实际生产环境这样启动,退到后台运行
nohup bin/hiveserver2 1>/dev/null 2>/dev/null &

# 查看进程详细信息
jps -ml

【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第20张图片

使用命令行客户端beeline进行远程访问

# 启动
cd /opt/module/hive;bin/beeline -u jdbc:hive2://hadoop102:10000 -n root
# 连接上hive
!connect jdbc:hive2://hadoop102:10000
# 退出
!quit

【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第21张图片

使用Datagrip图形化客户端进行远程访问
【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第22张图片
【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第23张图片

如若测试连接失败,请检查主机名改成hadoop102没,以及
【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第24张图片

5.2. metastore服务

Hive的metastore服务的作用是为Hive CLI或者Hiveserver2提供元数据访问接口

metastore运行模式:分别为嵌入式模式和独立服务模式
【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第25张图片
【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第26张图片

生产环境中,不推荐使用嵌入式模式。因为其存在以下两个问题:
1️⃣嵌入式模式下,每个Hive CLI都需要直接连接元数据库,当Hive CLI较多时,数据库压力会比较大。
2️⃣每个客户端都需要用户元数据库的读写权限,元数据库的安全得不到很好的保证。

metastore部署

  • 嵌入式模式:只需保证Hiveserver2和每个Hive CLI的配置文件hive-site.xml中包含连接元数据库所需要的以下参数即可
    
    <property>
        <name>javax.jdo.option.ConnectionURLname>
        <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=falsevalue>
    property>
    
    
    <property>
        <name>javax.jdo.option.ConnectionDriverNamename>
        <value>com.mysql.jdbc.Drivervalue>
    property>
    
	
    <property>
        <name>javax.jdo.option.ConnectionUserNamename>
        <value>rootvalue>
    property>

    
    <property>
        <name>javax.jdo.option.ConnectionPasswordname>
        <value>123456value>
    property>
  • 独立服务模式

1️⃣首先,保证metastore服务的配置文件hive-site.xml中包含连接元数据库所需的以下参数

    
    <property>
        <name>javax.jdo.option.ConnectionURLname>
        <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=falsevalue>
    property>
    
    
    <property>
        <name>javax.jdo.option.ConnectionDriverNamename>
        <value>com.mysql.jdbc.Drivervalue>
    property>
    
	
    <property>
        <name>javax.jdo.option.ConnectionUserNamename>
        <value>rootvalue>
    property>

    
    <property>
        <name>javax.jdo.option.ConnectionPasswordname>
        <value>123456value>
    property>

2️⃣其次,保证Hiveserver2和每个Hive CLI的配置文件hive-site.xml中包含访问metastore服务地址:


<property>
	<name>hive.metastore.urisname>
	<value>thrift://hadoop102:9083value>
property>

注意:主机名需要改为metastore服务所在节点,端口号无需修改,metastore服务的默认端口就是9083

独立服务模式测试(102部署服务,103客户端)

# 将hive拷贝到103
scp -r /opt/module/hive/ hadoop103:/opt/module/
# 在102上启动metastore
nohup hive --service metastore &
# 查看启动情况
jps -ml
# 修改103上hive-site.xml文件,删除服务端相关代码,添加访问metastore服务地址
ssh hadoop103
cd /opt/module/hive;vim conf/hive-site.xml
# 103启动hive
hive
show tables; 

关闭102服务之后,103不能查询到数据库,因为设置了连接服务地址

6.Hive使用技巧

【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第27张图片

6.1. Hive常用交互命令

在这里插入图片描述

6.2. Hive常用非交互命令(无需启动hive)

【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第28张图片

# 执行语句
hive -e "select * from stu"
# 执行sql文件
hive -f stu.sql

6.3. hive参数配置方式

查看当前所有的配置信息:set
参数配置的三种方式:

  1. 配置文件方式:用户自定义配置文件hive-site.xml,用户自定义配置会覆盖默认配置。另外,Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置。配置文件的设定对本机启动的所有Hive进程都有效
  2. 命令行参数方式:启动Hive时,可以在命令行添加-hiveconf param=value来设定参数,仅对本次Hive启动有效
bin/hive -hiveconf mapreduce.job.reduces=10;
# 查看配置情况
hive (default)> set mapreduce.job.reduces;
  1. 参数声明方式:可以在HQL中使用SET关键字设定参数,仅对本次Hive启动有效
hive (default)> set mapreduce.job.reduces=10;
# 查看配置情况
hive (default)> set mapreduce.job.reduces;

上述三种设定方式的优先级依次递增。即配置文件 < 命令行参数 < 参数声明。注意某些系统级的参数,例如log4j相关的设定,必须用前两种方式设定,因为那些参数的读取在会话建立以前已经完成了

6.4. Hive常见属性配置

如何在Hive客户端显示当前库和表头?在hive-site.xml中加入如下两个配置

<property>
    <name>hive.cli.print.headername>
    <value>truevalue>
    <description>Whether to print the names of the columns in query output.description>
property>
<property>
    <name>hive.cli.print.current.dbname>
    <value>truevalue>
    <description>Whether to include the current database in the Hive prompt.description>
property>

Hive运行日志路径配置:Hive 的 log 默认存放在/tmp/root/hive.log目录下(当前用户名下)
,修改Hive 的 log存放日志到/opt/module/hive/logs

# 修改/opt/module/hive/conf/hive-log4j2.properties.template文件名称为hive-log4j2.properties
cd /opt/module/hive/conf
mv hive-log4j2.properties.template hive-log4j2.properties

# 在hive-log4j2.prope、、rties文件中修改log存放位置
vim hive-log4j2.properties
property.hive.log.dir=/opt/module/hive/logs

【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第29张图片

Hive的JVM堆内存设置:新版本的Hive启动的时候,默认申请的JVM堆内存大小为256M,JVM堆内存申请的太小,导致后期开启本地模式(内存就不够了),执行复杂的SQL时经常会报错:java.lang.OutOfMemoryError: Java heap space,因此最好提前调整一下HADOOP_HEAPSIZE这个参数

# 修改$HIVE_HOME/conf下的hive-env.sh.template为hive-env.sh
cd /opt/module/hive/conf
mv hive-env.sh.template hive-env.sh

# 将hive-env.sh其中的参数 export HADOOP_HEAPSIZE修改为2048,重启Hive
# The heap size of the jvm stared by hive shell script can be controlled via:
export HADOOP_HEAPSIZE=2048

【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_第30张图片

关闭Hadoop虚拟内存检查(hadoop课程配置过):在hadoop中yarn-site.xml关闭虚拟内存检查(虚拟内存校验,如果已经关闭了,就不需要配了),修改前记得先停Hadoop:myhadoop.sh stop,在yarn-site.xml添加如下配置:

<property>
    <name>yarn.nodemanager.vmem-check-enabledname>
    <value>falsevalue>
property>

最后分发yarn-site.xml,并重启yarn


总结

✍命令行客户端beeline是Apache Hive提供的一个交互式工具,用于与Hive进行交互式的数据库操作和查询。具体来说,beeline允许用户通过命令行界面连接到Hive服务器,并在该界面下执行Hive SQL语句、查看查询结果、管理数据库和表等。
使用beeline,可以方便地在终端窗口中与Hive进行交互,它提供了以下功能:

  • 连接到Hive服务器:通过指定连接URL、用户名、密码等信息,可以建立与Hive服务器的连接。
  • 执行Hive SQL语句:可以在beeline中输入和执行Hive的SQL查询语句,如SELECT、INSERT、CREATE TABLE等。
  • 查看查询结果:beeline会将查询结果以表格形式展示在终端中,方便查看和分析。
  • 管理数据库和表:可以使用beeline来创建、删除、修改数据库和表的元数据信息。
  • 支持命令历史和自动补全:beeline支持命令历史记录和命令自动补全功能,提高了用户的交互体验。

总结来说,beeline是一个用于在命令行界面下进行与Hive交互的工具,可以帮助用户方便地执行Hive查询和管理数据库操作

✍下一站,DDL、DML!

你可能感兴趣的:(Hive,大数据,hive,hadoop,数据库,学习,笔记,数据仓库)