Hadoop生态圈框架部署(九-2)- Hive HA(高可用)部署

文章目录

  • 前言
  • 一、Hive部署(手动部署)
    • 下载Hive
    • [1. 上传安装包](#1. 上传安装包)
    • [2. 解压Hive安装包](#2. 解压Hive安装包)
      • [2.1 解压](#2.1 解压)
      • [2.2 重命名](#2.2 重命名)
      • [2.3 解决冲突](#2.3 解决冲突)
        • [2.3.1 解决guava冲突](#2.3.1 解决guava冲突)
        • [2.3.2 解决SLF4J冲突](#2.3.2 解决SLF4J冲突)
    • [3. 配置Hive](#3. 配置Hive)
      • [3.1 配置Hive环境变量](#3.1 配置Hive环境变量)
      • [3.2 修改 hive-site.xml 配置文件](#3.2 修改 hive-site.xml 配置文件)
      • [3.3 配置MySQL驱动包](#3.3 配置MySQL驱动包)
      • [3.3.1 下在MySQL驱动包](#3.3.1 下在MySQL驱动包)
      • [3.3.2 上传MySQL驱动包](#3.3.2 上传MySQL驱动包)
      • [3.3.3 配置MySQL驱动包](#3.3.3 配置MySQL驱动包)
    • [4. 初始化MySQL上的存储hive元数据的数据库](#4. 初始化MySQL上的存储hive元数据的数据库)
    • [5. 进入Hive客户端](#5. 进入Hive客户端)
    • [6. 设置远程连接](#6. 设置远程连接)
      • [6.1 启动MetaStore服务](#6.1 启动MetaStore服务)
      • [6.2 启动HiveServer2服务](#6.2 启动HiveServer2服务)
      • [6.3 进入Hive客户端](#6.3 进入Hive客户端)
  • [二、Hive HA(高可用)实现](#二、Hive HA(高可用)实现)
    • [1. 在hadoop2部署hive](#1. 在hadoop2部署hive)
      • [1.1 安装配置hive](#1.1 安装配置hive)
      • [1.2 设置环境变量](#1.2 设置环境变量)
      • [1.3 设置远程连接](#1.3 设置远程连接)
    • [2. 在hadoop3部署hive](#2. 在hadoop3部署hive)
      • [2.1 安装配置hive](#2.1 安装配置hive)
      • [2.2 设置环境变量](#2.2 设置环境变量)
      • [2.3 设置远程连接](#2.3 设置远程连接)
    • [3. 测试远程连接](#3. 测试远程连接)
  • 注意

前言

在大数据处理领域,Hive 是一个强大的数据仓库工具,能够提供数据的查询、分析和管理功能。它基于 Hadoop 构建,允许用户使用类似 SQL 的查询语言(HiveQL)来操作存储在 Hadoop 分布式文件系统(HDFS)中的数据。本文将详细介绍如何手动部署 Hive 3.1.3,包括从下载、安装到配置的每一个步骤。此外,我们还将探讨如何在多台虚拟机上实现 Hive 的高可用性(HA),确保在集群环境中能够稳定高效地运行 Hive 服务。

通过本教程,您将能够掌握 Hive 的基本部署和配置流程,并了解如何在多个节点上设置 Hive,以实现负载均衡和故障转移。


一、Hive部署(手动部署)

下载Hive

点击在华为镜像站下载Hvie3.1.3安装包:https://repo.huaweicloud.com/apache/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz

1. 上传安装包

通过拖移的方式将下载的Hive安装包apache-hive-3.1.3-bin.tar.gz上传至虚拟机hadoop1/export/software目录。

2. 解压Hive安装包

2.1 解压

虚拟机hadoop1 上传完成后将Hive安装包通过解压方式安装至/export/servers目录。

shell 复制代码
tar -zxvf /export/software/apache-hive-3.1.3-bin.tar.gz -C /export/servers/

解压完成如下图所示。

2.2 重命名

虚拟机hadoop1执行如下命令将apache-hive-3.1.3-bin重命名为hive-3.1.3。

shell 复制代码
mv /export/servers/apache-hive-3.1.3-bin /export/servers/hive-3.1.3

2.3 解决冲突

2.3.1 解决guava冲突

如下图所示,hadoop中的guava与hive中的guava版本不一致,会产生冲突,需要把hive的guava更换为hadoop的guava高版本。

虚拟机hadoop1执行如下命令解决guava冲突问题。

shell 复制代码
rm -f /export/servers/hive-3.1.3/lib/guava-19.0.jar
cp /export/servers/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar /export/servers/hive-3.1.3/lib
2.3.2 解决SLF4J冲突

虚拟机hadoop1执行如下命令解决slf4j冲突问题。

shell 复制代码
rm -f /export/servers/hive-3.1.3/lib/log4j-slf4j-impl-2.17.1.jar

3. 配置Hive

3.1 配置Hive环境变量

虚拟机hadoop1执行如下命令设置Hive环境变量,加载系统环境变量配置文件,并查看环境变量是否配置成功。

shell 复制代码
echo >> /etc/profile
echo 'export HIVE_HOME=/export/servers/hive-3.1.3' >> /etc/profile
echo 'export PATH=$PATH:$HIVE_HOME/bin' >> /etc/profile
source /etc/profile
echo $HIVE_HOME

3.2 修改 hive-site.xml 配置文件

虚拟机hadoop1 使用cat命令把配置内容重定向并写入到 /export/servers/hive-3.1.3/conf/hive-site.xml 文件。

shell 复制代码
cat >/export/servers/hive-3.1.3/conf/hive-site.xml <<EOF
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- 配置JDO(Java Data Objects)选项,指定Hive元数据存储的数据库连接URL。这里使用的是MySQL数据库,并且如果数据库不存在则自动创建。 -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop1:3306/hive?createDatabaseIfNotExist=true</value>
    </property>
    <!-- 指定用于连接数据库的JDBC驱动类名 -->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    <!-- 数据库连接用户名 -->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <!-- 数据库连接密码 -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>
    <!-- 指定Hive元数据仓库在HDFS上目录的位置 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive_local/warehouse</value>
    </property>
</configuration>
EOF

3.3 配置MySQL驱动包

3.3.1 下在MySQL驱动包

点击下载MySQL驱动jar包:https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.30/mysql-connector-java-8.0.30.jar

3.3.2 上传MySQL驱动包

通过拖移的方式将下载的MySQL驱动包上传至虚拟机hadoop1/export/software目录。

3.3.3 配置MySQL驱动包

虚拟机hadoop1 执行如下命令复制MySQL驱动包到/export/servers/hive-3.1.3/lib目录下。

shell 复制代码
cp /export/software/mysql-connector-java-8.0.30.jar /export/servers/hive-3.1.3/lib/

4. 初始化MySQL上的存储hive元数据的数据库

虚拟机hadoop1执行如下命令初始化MySQL上的存储hive元数据的数据库。

shell 复制代码
schematool -initSchema -dbType mysql

初始化完成如下图所示。

5. 进入Hive客户端

在访问Hive客户端之前,由于Hive完全依赖于Hadoop集群,因此需要先启动Hadoop集群。

shell 复制代码
start-all.sh

虚拟机hadoop1执行如下命令在本地进入Hive客户端。

shell 复制代码
hive

退出Hive客户端。可以使用exit;命令或者按快捷键Ctrl+c退出。

shell 复制代码
exit;

6. 设置远程连接

Hive 提供了两种服务以支持用户的远程连接:

  1. MetaStore 服务:MetaStore 服务负责管理 Hive 的元数据,并通过与关系型数据库的连接来存储和检索这些元数据。

  2. HiveServer2 服务:HiveServer2 服务基于 Thrift 协议实现,提供了通过 JDBC 和 ODBC 连接到 Hive 的功能。它依赖于 MetaStore 服务来获取元数据信息。用户在通过 HiveServer2 服务远程连接到 Hive 之前,需要确保 MetaStore 服务已经启动并运行。

6.1 启动MetaStore服务

虚拟机hadoop1 执行如下命令后台启动MetaStore服务,并指定日志输出位置。

shell 复制代码
mkdir -p /export/servers/hive-3.1.3/logs
nohup hive --service metastore > /export/servers/hive-3.1.3/logs/metastore.log 2>&1 &

可以使用如下命令查看启动后的MetaStore服务进程,此时如果要停止MetaStore服务,需要使用kill命令杀死对应进程。

shell 复制代码
ps -ef | grep hive

6.2 启动HiveServer2服务

虚拟机hadoop1 执行如下命令后台启动HiveServer2服务,并指定日志输出位置。

shell 复制代码
nohup hive --service hiveserver2 > /export/servers/hive-3.1.3/logs/hiveserver2.log 2>&1 &

可以使用如下命令查看启动后的HiveServer2服务进程,此时如果要停止HiveServer2服务,需要使用kill命令杀死对应进程。

shell 复制代码
ps -ef | grep hive

6.3 进入Hive客户端

虚拟机hadoop1 执行如下命令远程进入Hive客户端。

shell 复制代码
beeline -u jdbc:hive2://hadoop1:10000 -n root
  • 参数 -u:指定HiveServer2服务的JDBC URL。

    • jdbc:hive2://hadoop3:10000 中:
      • hadoop3 是运行HiveServer2服务的服务器主机名。
      • 10000 是HiveServer2服务默认使用的端口号。
  • 参数 -n:指定连接HiveServer2服务时使用的用户名。

    • root 是用户名,该用户必须具有操作HDFS的适当权限。

可以使用按快捷键Ctrl+c退出客户端。


二、Hive HA(高可用)实现

1. 在hadoop2部署hive

1.1 安装配置hive

虚拟机hadoop1上执行以下命令,将配置好的 Hive 复制到虚拟机hadoop2。由于共享同一个元数据数据库和 HDFS 目录,因此在 hadoop2 上无需初始化 Hive,即可直接操作。

shell 复制代码
scp -r root@hadoop1:/export/servers/hive-3.1.3 root@hadoop2:/export/servers/

1.2 设置环境变量

虚拟机hadoop2执行如下命令设置Hive环境变量,加载系统环境变量配置文件,并查看环境变量是否配置成功。

shell 复制代码
echo >> /etc/profile
echo 'export HIVE_HOME=/export/servers/hive-3.1.3' >> /etc/profile
echo 'export PATH=$PATH:$HIVE_HOME/bin' >> /etc/profile
source /etc/profile
echo $HIVE_HOME

1.3 设置远程连接

虚拟机hadoop2 执行如下命令后台启动MetaStore服务和HiveServer2服务,开启远程连接并指定日志输出位置。

shell 复制代码
mkdir -p /export/servers/hive-3.1.3/logs
nohup hive --service metastore > /export/servers/hive-3.1.3/logs/metastore.log 2>&1 &
nohup hive --service hiveserver2 > /export/servers/hive-3.1.3/logs/hiveserver2.log 2>&1 &

2. 在hadoop3部署hive

2.1 安装配置hive

虚拟机hadoop1上执行以下命令,将配置好的 Hive 复制到虚拟机hadoop3。由于共享同一个元数据数据库和 HDFS 目录,因此在 hadoop3 上无需初始化 Hive,即可直接操作。

shell 复制代码
scp -r root@hadoop1:/export/servers/hive-3.1.3 root@hadoop3:/export/servers/

2.2 设置环境变量

虚拟机hadoop3执行如下命令设置Hive环境变量,加载系统环境变量配置文件,并查看环境变量是否配置成功。

shell 复制代码
echo >> /etc/profile
echo 'export HIVE_HOME=/export/servers/hive-3.1.3' >> /etc/profile
echo 'export PATH=$PATH:$HIVE_HOME/bin' >> /etc/profile
source /etc/profile
echo $HIVE_HOME

2.3 设置远程连接

虚拟机hadoop3 执行如下命令后台启动MetaStore服务和HiveServer2服务,开启远程连接并指定日志输出位置。

shell 复制代码
mkdir -p /export/servers/hive-3.1.3/logs
nohup hive --service metastore > /export/servers/hive-3.1.3/logs/metastore.log 2>&1 &
nohup hive --service hiveserver2 > /export/servers/hive-3.1.3/logs/hiveserver2.log 2>&1 &

3. 测试远程连接

虚拟机hadoop1 执行如下命令远程 进入hadoop2的Hive客户端。

shell 复制代码
beeline -u jdbc:hive2://hadoop2:10000 -n root

虚拟机hadoop1 执行如下命令远程 进入hadoop3的Hive客户端。

shell 复制代码
beeline -u jdbc:hive2://hadoop3:10000 -n root

注意

在Hive HA安装并配置完成后,每当系统重启后,为了确保Hive能够正常工作,首先需要在虚拟机hadoop1执行如下命令启动Hadoop集群。

shell 复制代码
start-all.sh

如果还需要支持远程连接功能,则必须在虚拟机hadoop1、hadoop2和hadoop3执行如下命令启动Hive的MetaStore服务和HiveServer2服务。

shell 复制代码
mkdir -p /export/servers/hive-3.1.3/logs
nohup hive --service metastore > /export/servers/hive-3.1.3/logs/metastore.log 2>&1 &
nohup hive --service hiveserver2 > /export/servers/hive-3.1.3/logs/hiveserver2.log 2>&1 &
相关推荐
程序员老周6661 小时前
从MySQL快速上手大数据Hive
大数据·数据库·hive·hadoop·mysql·mapreduce·数据工程师
lqlj22335 小时前
Hadoop案例——流量统计
大数据·hadoop·分布式
IT成长日记6 小时前
【Hadoop入门】Hadoop生态之Hive简介
大数据·hive·hadoop
刘翔在线犯法6 小时前
Hadoop的序列化和反序列化
大数据·hadoop·分布式
麻芝汤圆6 小时前
利用Hadoop MapReduce实现流量统计分析
大数据·开发语言·hadoop·分布式·servlet·mapreduce
睎zyl17 小时前
Hadoop的序列化
大数据·hadoop·分布式
IT成长日记18 小时前
【Hadoop入门】Hadoop生态之ZooKeeper简介
大数据·hadoop·zookeeper
lqlj223320 小时前
Hadoop序列化与反序列化
大数据·hadoop·分布式
lqlj22331 天前
Hadoop序列化与反序列化具体实践
大数据·hadoop·分布式
背着黄油面包的猫1 天前
搭建hadoop集群模式并运行
大数据·hadoop·分布式