当前位置: 首页 > news >正文

【Hive】配置

目录

Hive参数配置方式

参数的配置方式

1. 文件配置

2.  命令行参数配置

3. 参数声明配置

配置源数据库

配置元数据到MySQL

查看MySQL中的元数据

Hive服务部署

 hiveserver2服务

介绍

部署

启动

远程连接

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

metastore服务

运行模式

部署

其他常见配置

显示当前表头和库

日志配置

Hive的JVM堆内存设置

关闭Hadoop虚拟内存检查

来源:


Hive参数配置方式

查看当前所有配置

hive>set;

参数的配置方式

1. 文件配置

  • 默认配置文件:hive-default.xml
  • 用户自定义配置文件:hive-site.xml

用户自定义配置会覆盖默认配置。另外,Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置。配置文件的设定对本机启动的所有Hive进程都有效。

2.  命令行参数配置

bin/hive -hiveconf (param=value)

 查看参数设置

set (param);

3. 参数声明配置

hive> set (param=value);

 后两种只对本次有效。

配置文件 < 命令行参数 < 参数声明

log4j相关的设定,必须用前两种方式设定,因为那些参数的读取在会话建立以前已经完成了。

配置源数据库

Hive默认使用的元数据库为derby。derby数据库的特点是同一时间只允许一个客户端访问。如果多个Hive客户端同时访问,就会报错。

删除derby.log,metastore_db,HDFS上目录

rm -rf derby.log metastore_db
hadoop fs -rm -r /user

通过hdfs的web界面 ,删除hdfs里的/user/hive/warehouse/stu

安装mysql

(13条消息) 【Linux】安装MySQL数据库_岱宗夫如何、的博客-CSDN博客

配置元数据到MySQL

新建Hive元数据库

mysql -uroot -p
create database metastore;
quit

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

cp /opt/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib

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

vim $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>密码</value></property><!-- Hive默认在HDFS的工作目录 --><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property>
</configuration>

初始化Hive元数据库

bin/schematool -dbType mysql -initSchema -verbose

检验测试

bin/hive
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;
在Xshell窗口中开启另一个窗口开启Hive(两个窗口都可以操作Hive,没有出现异常)
hive> show databases;
hive> show tables;
hive> select * from stu;

查看MySQL中的元数据

mysql -uroot -p
show databases;
use metastore;
show tables;
查看库信息,
有在hdbfs根目录
select * from BDS;
查看表信息
select * from TBLS;
表的存储路径,outputf,inputf
select * from SDS;
查看列相关信息
select * from COLUMNS_V2;

Hive服务部署

 hiveserver2服务

介绍

ve的hiveserver2服务的作用是提供jdbc/odbc接口,为用户提供远程访问Hive数据的功能,例如用户期望在个人电脑中访问远程服务中的Hive数据,就需要用到Hiveserver2。

远程访问集群通过 Hiveserver2 代理;模拟用户的功能,默认是开启的。

未开启用户模拟功能:Hiveserver2的启动用户

 开启用户模拟功能:

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

部署

1. Hadoop端配置

hivesever2的模拟用户功能,依赖于Hadoop提供的proxy user(代理用户功能);因此,需要hiveserver2的启动用户设置为Hadoop的代理用户

cd $HADOOP_HOME/etc/hadoop
vim core-site.xml
<!--配置所有节点的atguigu用户都可作为代理用户-->
<property><name>hadoop.proxyuser.atguigu.hosts</name><value>*</value>
</property><!--配置atguigu用户能够代理的用户组为任意组-->
<property><name>hadoop.proxyuser.atguigu.groups</name><value>*</value>
</property><!--配置atguigu用户能够代理的用户为任意用户-->
<property><name>hadoop.proxyuser.atguigu.users</name><value>*</value>
</property>

分发配置文件

2. 配置Hive 

vim conf/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>

启动

bin/hive --service hiveserver2
nohup bin/hiveserver2 >/dev/null 2>&1 &
jps

Jps  jps -ml

Nohup 不挂断, & 后台

Nohup bin/hiveserver2 &

1>/dev/null 丢弃标准输出

2>&1

进程文件描述符   0标准输入 1标准输出 2标准错误

远程连接

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

hive beeline详解 - 简书 (jianshu.com)

2.使用图形化界面

(DataGrip)

metastore服务

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

运行模式

嵌入式模式

 独立服务模式

生产环境中,不推荐使用嵌入式模式。因为其存在以下两个问题:

(1)嵌入式模式下,每个Hive CLI都需要直接连接元数据库,当Hive CLI较多时,数据库压力会比较大。

(2)每个客户端都需要用户元数据库的读写权限,元数据库的安全得不到很好的保证。

部署

嵌入式模式

只需保证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>密码</value></property>

独立服务模式

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

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

在Hive CLI的配置文件中配置了hive.metastore.uris参数,此时Hive CLI会去请求我们执行的metastore服务地址,所以必须启动metastore服务才能正常使用。

测试

hive --service metastore
注意:启动后该窗口不能再操作,需打开一个新的Xshell窗口来对Hive操作。
bin/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>

日志配置

log默认配置在/tmp/用户/hive.log

修改log存放目录

cd $HIVE_HOME/conf/
mv hive-log4j2.properties.template hive-log4j2.properties
vim hive-log4j2.properties
property.hive.log.dir=${HIVE_HOME}/logs

Hive的JVM堆内存设置

Hive启动的时候,默认申请的JVM堆内存大小为256M,JVM堆内存申请的太小,导致后期开启本地模式,执行复杂的SQL时经常会报错:java.lang.OutOfMemoryError: Java heap space.

cd $HIVE_HOME/conf
mv hive-env.sh.template hive-env.sh
vim hive-env.sh
# The heap size of the jvm stared by hive shell script can be controlled via:
export HADOOP_HEAPSIZE=2048

关闭Hadoop虚拟内存检查

修改前记得先停Hadoop
stop-yarn.sh
vim yarn-site.xml
<property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value>
</property>

分发集群

来源:

尚硅谷

http://www.lryc.cn/news/40621.html

相关文章:

  • IP-GUARD如何强制管控电脑设置开机密码要符合密码复杂度?
  • 剑指 Offer II 031. 最近最少使用缓存
  • 44岁了,我从没想过在CSDN创作2年,会有这么大收获
  • 相位相参信号源的设计--示波器上的信号不稳定,来回跑?
  • Spring Boot 整合 RabbitMQ 多种消息模式
  • node多版本控制
  • Redis set集合
  • 漫画:什么是希尔排序算法?
  • 问卷工具选择要看哪些方面?
  • Qt之QPainter绘制多个矩形/圆形(含源码+注释)
  • 介绍两款红队常用的信息收集组合工具
  • 类ChatGPT国产大模型ChatGLM-6B,单卡即可运行
  • vue的diff算法?
  • C++ | 对比inline内联函数和宏的不同点
  • 面试官问 : ArrayList 不是线程安全的,为什么 ?(看完这篇,以后反问面试官)
  • Linux串口应用编程
  • java程序员学前端-HTML篇
  • 【云原生|Docker】03-docker的基础操作
  • vue2+高德地图web端开发使用
  • 01背包问题c++
  • ZYNQ硬件调试-------day2
  • JavaScript中Promise的简单使用及其原理
  • SpringBoot RabbitMQ 延时队列取消订单【SpringBoot系列14】
  • 【论文阅读 WWW‘23】Zero-shot Clarifying Question Generation for Conversational Search
  • ouc 网络安全实验 格式化字符串漏洞
  • PMSM矢量控制笔记(1.1)——电机的机械结构与运行原理
  • 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题——中间人攻击渗透测试解析(详细)
  • MySQL必知必会 | 安全、维护、性能
  • MaaS Model as a Service 模型即服务
  • 【编程基础】027.C语言中函数在解题中的应用(三)