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

ops/2024/12/12 11:55:13/

文章目录

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

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。

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冲突问题。

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冲突问题。

rm -f /export/servers/hive-3.1.3/lib/log4j-slf4j-impl-2.17.1.jar

在这里插入图片描述

3. 配置Hive

3.1 配置Hive环境变量

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

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

在这里插入图片描述

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

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

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目录下。

cp /export/software/mysql-connector-java-8.0.30.jar /export/servers/hive-3.1.3/lib/

在这里插入图片描述

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

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

schematool -initSchema -dbType mysql

在这里插入图片描述

初始化完成如下图所示。

在这里插入图片描述

5. 进入Hive客户端

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

start-all.sh

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

hive

在这里插入图片描述

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

exit;

在这里插入图片描述

6. 设置远程连接

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

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

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

6.1 启动MetaStore服务

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

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命令杀死对应进程。

ps -ef | grep hive

在这里插入图片描述

6.2 启动HiveServer2服务

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

nohup hive --service hiveserver2 > /export/servers/hive-3.1.3/logs/hiveserver2.log 2>&1 &

在这里插入图片描述

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

ps -ef | grep hive

在这里插入图片描述

6.3 进入Hive客户端

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

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(高可用)实现

hadoop2hive_221">1. 在hadoop2部署hive

hive_222">1.1 安装配置hive

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

scp -r root@hadoop1:/export/servers/hive-3.1.3 root@hadoop2:/export/servers/

在这里插入图片描述

1.2 设置环境变量

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

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服务,开启远程连接并指定日志输出位置。

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 &

在这里插入图片描述

hadoop3hive_251">2. 在hadoop3部署hive

hive_252">2.1 安装配置hive

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

scp -r root@hadoop1:/export/servers/hive-3.1.3 root@hadoop3:/export/servers/

在这里插入图片描述

2.2 设置环境变量

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

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服务,开启远程连接并指定日志输出位置。

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客户端。

beeline -u jdbc:hive2://hadoop2:10000 -n root

在这里插入图片描述
虚拟机hadoop1执行如下命令远程进入hadoop3的Hive客户端。

beeline -u jdbc:hive2://hadoop3:10000 -n root

在这里插入图片描述


注意

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

start-all.sh

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

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 &

http://www.ppmy.cn/ops/141238.html

相关文章

自动化测试用例编写

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 自动化测试是使用专门的软件工具来验证软件解决方案&#xff0c;这通常涉及自动化功能作为测试过程的一部分。测试自动化最常见的对象是。 测试管理和缺陷管理单元…

一、使用 mdadm 工具在 Ubuntu 上创建 RAID 1(镜像)

在 Ubuntu 上创建 RAID 1&#xff08;镜像&#xff09;可以使用 mdadm 工具。以下是详细的步骤&#xff0c;包括安装必要的工具、创建 RAID 阵列、格式化并挂载 RAID 设备。 步骤一&#xff1a;安装 mdadm 首先确保你已经安装了 mdadm 包&#xff0c;这是管理软件 RAID 所需的…

C# 探险之旅:第四节 - 算术运算符

让我们继续你的C#探险之旅&#xff0c;这次聚焦于“算术运算符”。算术运算符在编程中用于执行基本的数学运算&#xff0c;如加法、减法、乘法、除法等。在C#中&#xff0c;这些运算符使用非常直观&#xff0c;并且支持多种数据类型。 1. 基本算术运算符 C# 提供了以下几种基…

vue3使用keep-alive做缓存

暂未整理&#xff0c;等待更新 文章目录 一、注意项1.不生效原因 二、使用步骤1.引入库2.读入数据 总结 一、注意项 1.不生效原因 vue3无beforeRouteEnter&#xff0c;但可以写。<script lang"jsx">需要一致:include"[‘experienceMaintenance’, ‘rea…

太速科技-721-基于TSI721的 PCIe转RapidIO高速数据传输卡

基于TSI721的 PCIe转RapidIO高速数据传输卡 一、板卡概述 本卡是基于IDT TSI721桥芯片&#xff0c;用于实现Serial RapidIO(S-RIO) Gen2.1到PCI Express (PCIE) Gen2.1协议转换&#xff0c;将基于RapidIO的对等网络多重处理器集群拓展至x86处理器环境&#xff0c;能够实现…

【嵌入式系统】第9章 嵌入式操作系统及应用,典型嵌入式操作系统μC/OSⅡ,μC/OS-II的移植,基于μC/OS-Ⅱ下的应用程序程序设计

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…

【Linux网络编程】第七弹---构建类似XShell功能的TCP服务器:从TcpServer类到主程序的完整实现

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【Linux网络编程】 目录 1、TcpServer.hpp 1.1、TcpServer类基本结构 1.2、 Execute() 2、Command.hpp 2.1、Command类基本结构 …

HDFS(Hadoop Distributed File System)

HDFS&#xff08;Hadoop Distributed File System&#xff09;工作原理简介 HDFS 是 Hadoop 的核心组件&#xff0c;设计用于在大规模分布式环境中存储和处理海量数据。以下是其主要工作原理&#xff1a; 1. 架构组成 HDFS 采用主从架构&#xff0c;由以下两类关键节点组成&a…