第5周 Hive的安装配置(二)

第5周 · Hive的安装配置(二)

HiveServer2 服务部署、Hadoop 端代理配置、DataGrip 远程连接与 SQL 执行

项目3阶段02单元2 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,然后记得分发三台机器,重启集群。

TEXT
[hadoop@hadoop1 ~]$ cd /home/hadoop/app/hadoop/etc/hadoop
[hadoop@hadoop1 hadoop]$ vi core-site.xml

增加如下配置:

<!--配置所有节点的hadoop用户都可作为代理用户-->

TEXT
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>

<!--配置hadoop用户能够代理的用户组为任意组-->

TEXT
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>

<!--配置Hadoop用户能够代理的用户为任意用户-->

TEXT
<property>
<name>hadoop.proxyuser.hadoop.users</name>
<value>*</value>
</property>

(2)Hive端配置

在hive-site.xml文件中添加如下配置信息

TEXT
[hadoop@hadoop102 conf]$ vim hive-site.xml

<!-- 指定hiveserver2连接的host -->

TEXT
<property>
<name>hive.server1.thrift.bind.host</name>
<value>hadoop1</value>
</property>

<!-- 指定hiveserver2连接的端口号 -->

TEXT
<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集群

TEXT
[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”重命名

TEXT
[hanxiao@hadoop102 conf]$ cp hive-env.sh.template hive-env.sh

然后vim命令修改“hive-env.sh”

TEXT
[hanxiao@hadoop102 conf]$ vim hive-env.sh

去掉第40行的“#”号(就可以把HADOOP_HEAPSIZE改为1024)

SQL
export HADOOP_HEAPSIZE=1024

II

📄 展开原始文档全文(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