第5周 · Hive的安装配置(二)
HiveServer2 服务部署、Hadoop 端代理配置、DataGrip 远程连接与 SQL 执行
本实训对应的知识点
- 单元2 2.1 认识Beeline · Hive部署与应用
- 单元2 2.2 基于内嵌模式部署Hive · Hive部署与应用
- 单元2 2.3 基于本地模式部署Hive · Hive部署与应用
- 单元2 2.4 基于远程模式部署Hive · Hive部署与应用
- 单元2 2.5 配置Hive On Tez · Hive部署与应用
- 单元2 2.6 使用DataGrip操作Hive · Hive部署与应用
实训内容与步骤 依据原始实训文档整理,命令与配置均来自文档原文
1.1hiveserver2服务部署
Hive的hiveserver2服务的作用是提供jdbc/odbc接口,为用户提供远程访问Hive数据的功能,例如用户期望在个人电脑中访问远程服务中的Hive数据,就需要用到Hiveserver2。
在远程访问Hive数据时,客户端并未直接访问Hadoop集群,而是由Hivesever2代理访问。由于Hadoop集群中的数据具备访问权限控制,所以此时需考虑一个问题:那就是访问Hadoop集群的用户身份是谁?是Hiveserver2的启动用户?还是客户端的登录用户?
1.1.1hiveserver2部署
(1)Hadoop端配置
hivesever2的模拟用户功能,依赖于Hadoop提供的proxy user(代理用户功能),只有Hadoop中的代理用户才能模拟其他用户的身份访问Hadoop集群。因此,需要将hiveserver2的启动用户设置为Hadoop的代理用户,配置方式如下:
修改配置文件core-site.xml,然后记得分发三台机器,重启集群。
[hadoop@hadoop1 ~]$ cd /home/hadoop/app/hadoop/etc/hadoop
[hadoop@hadoop1 hadoop]$ vi core-site.xml增加如下配置:
<!--配置所有节点的hadoop用户都可作为代理用户-->
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property><!--配置hadoop用户能够代理的用户组为任意组-->
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property><!--配置Hadoop用户能够代理的用户为任意用户-->
<property>
<name>hadoop.proxyuser.hadoop.users</name>
<value>*</value>
</property>(2)Hive端配置
在hive-site.xml文件中添加如下配置信息
[hadoop@hadoop102 conf]$ vim hive-site.xml<!-- 指定hiveserver2连接的host -->
<property>
<name>hive.server1.thrift.bind.host</name>
<value>hadoop1</value>
</property><!-- 指定hiveserver2连接的端口号 -->
<property>
<name>hive.server1.thrift.port</name>
<value>10000</value>
</property>1.2使用Datagrip图形化客户端进行远程访问hive
1.1.1下载DataGrip
访问官方网址:https://www.jetbrains.com/datagrip/,效果如下图1-1所示:
📷 图1-1 官方网址如图1-2所示,点击右上角的Download按钮进入下载界面,可以看到DataGrip支持Windows、macOS、Linux三个系统,有30天的免费试用期,Windows版的PhpStorm包含.exe、.zip、.exe (ARM64)三种版本。
.exe:标准的可执行文件格式,适用 x86 架构的计算机和服务器。Intel和AMD的CPU下载这个版本。
.zip:绿色版,直接解压就能使用。
.exe (ARM64):专为 ARM64 架构设计的可执行文件格式,适用于基于 ARM 架构的设备。
📷 图1-2 下载datagrip1.1.2安装datagrip
双击下载的datagrip-2024.3.4.exe,进入DataGrip安装界面,点击下一步,效果如图1-3所示:
📷 图1-3 安装欢迎界面进入选择安装位置界面,默认安装在C:\Program Files\JetBrains\DataGrip 2024.3.3这个目录,可以点击右侧的浏览重新选择安装的目录,然后点击下一步,效果如图1-4所示:
📷 图1-4 选择安装位置进入安装选项界面,勾选创建桌面快捷方式,点击下一步,效果图1-5所示:
📷 图1-5 勾选桌面快捷方式进入选择开始菜单目录界面,点击下一步,效果如图1-6所示:
📷 图1-6 选择开始菜单目录进入安装中界面,等待DataGrip安装,效果如图图1-7所示:
📷 图1-7 安装中界面DataGrip安装完成后,进入DataGrip 安装程序结束界面,点击完成,效果图1-8所示:
📷 图1-8完成安装到此就完成了DataGrip的安装。
1.3.3配置DataGrip连接
1)启动hiveserver2
提示:必须先启动hadoop集群
[hadoop@hadoop1 hive]$ bin/hive --service hiveserver2或者直接使用[hadoop@hadoop1 bin]$ hiveserver2
2)创建连接
如图1-9所示,新建一个hive的数据源。
📷 图1-9 创建连接3)配置连接属性
如图1-10所示,所有属性配置和Hive的客户端配置一致即可。初次使用,配置过程会提示缺少JDBC驱动,按照提示下载即可。
📷 图1-10 配置连接属性4)界面介绍
如图1-11所示,为datagrip的操作界面。
📷 图1-11 datagrip操作界面5)测试sql执行
如图1-12所示,输入sql代码,然后执行。
📷 图1-12测试sql执行注意:hive-3.1.2启动的时候,默认申请的JVM堆内存大小为256M,JVM堆内存申请太小,导致执行复杂的sql时经常会报错(如下图所示):java.lang.OutOfMemoryError: GC overhead limit exceeded,然后HiveServer2服务就异常了,因此最好调整一下HADOOP_HEAPSIZE这个参数。
解决方案:
进入hive下的conf目录,先把“hive-env.sh.template”拷贝一下,或者“mv”重命名
[hanxiao@hadoop102 conf]$ cp hive-env.sh.template hive-env.sh然后vim命令修改“hive-env.sh”
[hanxiao@hadoop102 conf]$ vim hive-env.sh去掉第40行的“#”号(就可以把HADOOP_HEAPSIZE改为1024)
export HADOOP_HEAPSIZE=1024II
📄 展开原始文档全文(88 段)
Hive的安装部署(二)
1.1 hiveserver2服务部署
Hive的hiveserver2服务的作用是提供jdbc/odbc接口,为用户提供远程访问Hive数据的功能,例如用户期望在个人电脑中访问远程服务中的Hive数据,就需要用到Hiveserver2。
在远程访问Hive数据时,客户端并未直接访问Hadoop集群,而是由Hivesever2代理访问。由于Hadoop集群中的数据具备访问权限控制,所以此时需考虑一个问题:那就是访问Hadoop集群的用户身份是谁?是Hiveserver2的启动用户?还是客户端的登录用户?
1.1.1 hiveserver2部署
(1)Hadoop端配置
hivesever2的模拟用户功能,依赖于Hadoop提供的proxy user(代理用户功能),只有Hadoop中的代理用户才能模拟其他用户的身份访问Hadoop集群。因此,需要将hiveserver2的启动用户设置为Hadoop的代理用户,配置方式如下:
修改配置文件core-site.xml,然后记得分发三台机器,重启集群。
[hadoop@hadoop1 ~]$ cd /home/hadoop/app/hadoop/etc/hadoop
[hadoop@hadoop1 hadoop]$ vi core-site.xml
增加如下配置:
<!--配置所有节点的hadoop用户都可作为代理用户-->
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<!--配置hadoop用户能够代理的用户组为任意组-->
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
<!--配置Hadoop用户能够代理的用户为任意用户-->
<property>
<name>hadoop.proxyuser.hadoop.users</name>
<value>*</value>
</property>
(2)Hive端配置
在hive-site.xml文件中添加如下配置信息
[hadoop@hadoop102 conf]$ vim hive-site.xml
<!-- 指定hiveserver2连接的host -->
<property>
<name>hive.server1.thrift.bind.host</name>
<value>hadoop1</value>
</property>
<!-- 指定hiveserver2连接的端口号 -->
<property>
<name>hive.server1.thrift.port</name>
<value>10000</value>
</property>
1.2使用Datagrip图形化客户端进行远程访问hive
1.1.1下载DataGrip
访问官方网址:https://www.jetbrains.com/datagrip/,效果如下图1-1所示:
📷 图1-1 官方网址
如图1-2所示,点击右上角的Download按钮进入下载界面,可以看到DataGrip支持Windows、macOS、Linux三个系统,有30天的免费试用期,Windows版的PhpStorm包含.exe、.zip、.exe (ARM64)三种版本。
.exe:标准的可执行文件格式,适用 x86 架构的计算机和服务器。Intel和AMD的CPU下载这个版本。
.zip:绿色版,直接解压就能使用。
.exe (ARM64):专为 ARM64 架构设计的可执行文件格式,适用于基于 ARM 架构的设备。
📷 图1-2 下载datagrip
1.1.2安装datagrip
双击下载的datagrip-2024.3.4.exe,进入DataGrip安装界面,点击下一步,效果如图1-3所示:
📷 图1-3 安装欢迎界面
进入选择安装位置界面,默认安装在C:\Program Files\JetBrains\DataGrip 2024.3.3这个目录,可以点击右侧的浏览重新选择安装的目录,然后点击下一步,效果如图1-4所示:
📷 图1-4 选择安装位置
进入安装选项界面,勾选创建桌面快捷方式,点击下一步,效果图1-5所示:
📷 图1-5 勾选桌面快捷方式
进入选择开始菜单目录界面,点击下一步,效果如图1-6所示:
📷 图1-6 选择开始菜单目录
进入安装中界面,等待DataGrip安装,效果如图图1-7所示:
📷 图1-7 安装中界面
DataGrip安装完成后,进入DataGrip 安装程序结束界面,点击完成,效果图1-8所示:
📷 图1-8完成安装
到此就完成了DataGrip的安装。
1.3.3配置DataGrip连接
1)启动hiveserver2
提示:必须先启动hadoop集群
[hadoop@hadoop1 hive]$ bin/hive --service hiveserver2
或者直接使用[hadoop@hadoop1 bin]$ hiveserver2
2)创建连接
如图1-9所示,新建一个hive的数据源。
📷 图1-9 创建连接
3)配置连接属性
如图1-10所示,所有属性配置和Hive的客户端配置一致即可。初次使用,配置过程会提示缺少JDBC驱动,按照提示下载即可。
📷 图1-10 配置连接属性
4)界面介绍
如图1-11所示,为datagrip的操作界面。
📷 图1-11 datagrip操作界面
5)测试sql执行
如图1-12所示,输入sql代码,然后执行。
📷 图1-12测试sql执行
注意:hive-3.1.2启动的时候,默认申请的JVM堆内存大小为256M,JVM堆内存申请太小,导致执行复杂的sql时经常会报错(如下图所示):java.lang.OutOfMemoryError: GC overhead limit exceeded,然后HiveServer2服务就异常了,因此最好调整一下HADOOP_HEAPSIZE这个参数。
解决方案:
进入hive下的conf目录,先把“hive-env.sh.template”拷贝一下,或者“mv”重命名
[hanxiao@hadoop102 conf]$ cp hive-env.sh.template hive-env.sh
然后vim命令修改“hive-env.sh”
[hanxiao@hadoop102 conf]$ vim hive-env.sh
去掉第40行的“#”号(就可以把HADOOP_HEAPSIZE改为1024)
export HADOOP_HEAPSIZE=1024
II