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


前言

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内部执行流程:解析器(解析SQL语句)、编译器(把SQL语句编译成MapReduce程序)、优化器(优化MapReduce程序)、执行器(将MapReduce程序运行的结果提交到HDFS)

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

🍉驱动器(Driver):

  1. 解析器(SQLParser):将SQL字符串转换成抽象语法树(AST)
    在这里插入图片描述

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

  3. 逻辑计划生成器(Logical Plan Gen):将语法树生成逻辑计划
    在这里插入图片描述

  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了
在这里插入图片描述
💡解决方案: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版本不一致)
在这里插入图片描述
💡解决方案:删除+复制

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

# 测试一下
show databases;

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

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

在这里插入图片描述
🍉接着测试:

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中也能看到点击👉前往
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

在这里插入图片描述

# 首先退出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;

在这里插入图片描述

3. 卸载MySQL

在这里插入图片描述
在这里插入图片描述

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下载👉详见
在这里插入图片描述

🍉在/opt/module/hive/conf目录下新建hive-site.xml文件:vim /opt/module/hive/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://192.168.150.103:3306/metastore?createDatabaseIfNotExist=true</value>
  </property>
    
    <!-- jdbc连接的Driver-->
  <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.cj.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>lovexw999</value>
    </property>

    <!-- Hive默认在HDFS的工作目录 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </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表
    在这里插入图片描述
  • 以上三图的关系
    在这里插入图片描述
  • 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全局变量,与表无关
IDXSHive中索引的信息
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
在这里插入图片描述

🍉访问hadoop集群身份说明

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

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

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

<!--配置所有节点的root用户都可作为代理用户-->
<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>

<!--配置root用户能够代理的用户组为任意组-->
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

<!--配置root用户能够代理的用户为任意用户-->
<property>
    <name>hadoop.proxyuser.root.users</name>
    <value>*</value>
</property>

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

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

<!-- 指定hiveserver2连接的host -->
<property>
	<name>hive.server2.thrift.bind.host</name>
	<value>hadoop102</value>
</property>

<!-- 指定hiveserver2连接的端口号 -->
<property>
	<name>hive.server2.thrift.port</name>
	<value>10000</value>
</property>

🍉启动hiveserver2

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

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

在这里插入图片描述

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

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

在这里插入图片描述

🍉使用Datagrip图形化客户端进行远程访问
在这里插入图片描述
在这里插入图片描述

🤯如若测试连接失败,请检查主机名改成hadoop102没,以及👇
在这里插入图片描述

5.2. metastore服务

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

🍉metastore运行模式:分别为嵌入式模式和独立服务模式
在这里插入图片描述
在这里插入图片描述

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

🍉metastore部署

  • 嵌入式模式:只需保证Hiveserver2和每个Hive CLI的配置文件hive-site.xml中包含连接元数据库所需要的以下参数即可
    <!-- 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>123456</value>
    </property>
  • 独立服务模式

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

    <!-- 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>123456</value>
    </property>

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

<!-- 指定metastore服务的地址 -->
<property>
	<name>hive.metastore.uris</name>
	<value>thrift://hadoop102:9083</value>
</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使用技巧

在这里插入图片描述

6.1. Hive常用交互命令

在这里插入图片描述

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

在这里插入图片描述

# 执行语句
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.header</name>
    <value>true</value>
    <description>Whether to print the names of the columns in query output.</description>
</property>
<property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
    <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的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

在这里插入图片描述

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

<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</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!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值