搭建分布式Hive集群

yaml 复制代码
title: 搭建分布式Hive集群
date: 2024-11-29 23:39:00
categories: 
- 服务器
tags:
- Hive
- 大数据

搭建分布式Hive集群

  • 本次实验环境:Centos 7-2009、Hadoop-3.1.4、JDK 8、Zookeeper-3.6.3、Mysql-5.7.38、Hive-3.1.2

功能规划

方案一(本地运行模式)

Master
主节点(Mysql+Hive)
192.168.66.6

方案二(完全分布式模式)

Master Slave1
主节点(Hive) 数据存储节点(Mysql)
192.168.66.6 192.168.66.7

准备工作

若使用方案一,则在master节点上进行"准备工作"

  • 若使用方案二,则在slave1节点上进行"准备工作"

1. 卸载以及删除自带的mariadb

bash 复制代码
# 查看cent7自带的mariadb包
rpm -qa | grep mariadb

# 这条是centos7自带的数据库安装包 mariadb-libs-5.5.68-1.el7.x86_64

# 删除自带的数据库安装包
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps

2. 安装Mysql的release文件

bash 复制代码
# 使用wget下载Mysql5.7.x版本的release文件
wget -P /tmp/ -c 'https://mirrors.ustc.edu.cn/mysql-repo/mysql57-community-release-el7.rpm'

# 使用curl下载Mysql5.7.x版本的release文件
curl -C - 'https://mirrors.ustc.edu.cn/mysql-repo/mysql57-community-release-el7.rpm' -O /tmp/
bash 复制代码
# 导入release的GPG秘钥
rpm --import https://mirrors.ustc.edu.cn/mysql-repo/RPM-GPG-KEY-mysql

# 安装Mysql的release包
yum install -y /tmp/mysql57-community-release-el7.rpm

3. 安装Mysql

3.1 (二选一)使用直接通过国内镜像下载依赖包并安装
bash 复制代码
# 下载mysql-community-server
wget -P /tmp/ -c 'https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-server-5.7.44-1.el7.x86_64.rpm'

# 下载mysql-community-client
wget -P /tmp/ -c 'https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-client-5.7.44-1.el7.x86_64.rpm'

# 下载mysql-community-common
wget -P /tmp/ -c 'https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-common-5.7.44-1.el7.x86_64.rpm'

# 下载mysql-community-libs
wget -P /tmp/ -c 'https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-libs-5.7.44-1.el7.x86_64.rpm'
bash 复制代码
# 安装Mysql-server
yum install -y /tmp/mysql-community*
3.2 (二选一)使用国内yum源进行一键安装
bash 复制代码
# 导入GPG公钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

# 备份原Mysql的yum源
cd /etc/yum.repos.d/
mv mysql-community.repo mysql-community.repo.bak
mv mysql-community-source.repo mysql-community-source.repo.bak

# 添加国内Mysql的yum源
cat >> mysql-community.repo << "EOF"
[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=https://mirror.iscas.ac.cn/mysql/yum/mysql-connectors-community-el7-$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql
       https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

[mysql-tools-community]
name=MySQL Tools Community
baseurl=https://mirror.iscas.ac.cn/mysql/yum/mysql-tools-community-el7-$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql
       https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

[mysql-5.7-community]
name=MySQL 5.7 Community Server
baseurl=https://mirror.iscas.ac.cn/mysql/yum/mysql-5.7-community-el7-$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql
       https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
EOF
# 清除yum的旧缓存,并更新的yum源的缓存
yum clean all && yum makecache

# 安装Mysql-server
yum install -y mysql-server

4. 启动Mysql

bash 复制代码
# 配置Mysql开机自启
systemctl enable mysqld

# 启动Mysql
systemctl start mysqld

# 查看Mysql状态
systemctl status mysqld

5. 配置Mysql

bash 复制代码
# 查看安装后随机生成的Mysql密码
grep 'A temporary password' /var/log/mysqld.log
bash 复制代码
# 登录数据库
mysql -uroot -p'你自己查到的密码'

# 重置默认的随机密码(不进行无法操作数据库)
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

# 退出数据库
exit

6. 创建用于存储Hive数据的用户

sql 复制代码
# 必须要先退出服务器,使用新的密码进入数据库才能操作
mysql -uroot -p'新密码'

# 创建名为Hiv的数据库
CREATE DATABASE hive;

# 创建名为hive的用户,并设置密码
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive用户的密码';

# 授权hive用户对Hive数据库的所有权限
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%' WITH GRANT OPTION;
GRANT ALL on hive.* to 'hive'@'%' identified by 'hive用户密码' with grant option;

# 刷新权限
FLUSH PRIVILEGES;

7. 退出数据库

sql 复制代码
exit

正式安装Hive

在master主节点上执行

8. 安装程序文件

  • 首先上传Hive的文件到服务器上
bash 复制代码
# 解压文件到指定目录
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/

#重命名文件夹
mv /opt/module/apache-hive-3.1.2-bin/ /opt/module/hive

9. 解决Hive与Hadoop之间的guava版本差异(依赖冲突)

bash 复制代码
# 备份hive中原guava的jar包
mv /opt/module/hive/lib/guava-19.0.jar /opt/module/hive/lib/guava-19.0.jar.bak

# 使用haddoop中guava-27版本的jar包覆盖hive中的jar包
cp $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar /opt/module/hive/lib/

10. 配置用户环境变量

bash 复制代码
cat >>  ~/.bashrc << "EOF"

# ------------------- Hive 配置--------------------
# 设置Hive环境变量,指向Hive安装目录
export HIVE_HOME=/opt/module/hive

# 将HIVE的bin目录添加到PATH环境变量
export PATH=$PATH:$HIVE_HOME/bin
# -------------------------------------------------
EOF
bash 复制代码
-----------------------------------------------------------
                          说明

举例   export PATH=$HIVE_HOME/bin:$PATH

英文冒号代表分隔

这段代码表示
1. 当你输入一个命令时,shell会首先在"HIVE_HOME"这个变量的"bin"子目录中查找,
2. 最后,若找不到,则在"PATH"的指定目录中查找

-------------------------------------------------------------

11. 编写Hive的配置文件

bash 复制代码
# 进入hive配置目录
cd /opt/module/hive/conf

# 复制hive-env.sh模板
cp hive-env.sh.template hive-env.sh
bash 复制代码
根据自己的配置信息,或者查看~/.bashrc,修改下面各项的内容,随后复制粘贴即可
bash 复制代码
# 配置hive.env.sh文件
cat >> hive-env.sh << EOF
export HADOOP_HOME=/opt/module/hadoop-3.1.4
export HIVE_CONF_DIR=/opt/module/hive/conf
export HIVE_AUX_JARS_PATH=/opt/module/hive/lib
EOF

12.编写Hive的配置文件2

如果选择方案一部署,则数据库信息填写master主机的信息,hive服务器填写master主机

  • 如果选择方案二部署,则数据库信息填写slave1主机的信息填写,hive服务器填写master主机
bash 复制代码
cat >> hive-site.xml << EOF
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- 配置存储元数据的数据库主机以及其他配置 -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
    </property>
    <!-- 配置连接数据库使用的的驱动名 -->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    <!-- 配置连接数据库的用户名,即刚刚设置的hive -->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive</value>
    </property>
    <!-- 配置hive用户连接数据库的密码 -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>"你设置的hive用户密码"</value>
    </property>

    <!-- H2S(Hive服务器)运行绑定的主机 -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>master</value>
    </property>

    <!-- 远程模式部署metastore(元数据)服务的地址(即数据库) -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://master:9083</value>
    </property>

    <!-- 关闭元数据权限的身份认证 -->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>

    <!-- 关闭元数据存储版本的一致性验证 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
</configuration>
EOF

13. 使用mysql-connector-java驱动

网上找不到5.5、5.6、5.7版本的驱动,官网提供了解决方法:

  • Connector/J 8.0 provides compatibility with all the functionality of MySQL 5.5, 5.6, 5.7, and 8.0,翻译过来就是说------8.0版本的驱动兼容这些版本,使用8.0版本的驱动就可以了
bash 复制代码
# 根据你自己的mysql版本,在目录中查找对应版本的驱动,并放到hive主目录下的lib下即可
cp mysql-connector-java-8.0.26.jar /opt/module/hive/lib/

结束安装

14. 加载环境变量

bash 复制代码
# 在master主节点上执行
source ~/.bashrc

15. 启动Hive

bash 复制代码
# 初始化Hive元数据到Mysql
schematool -initSchema -dbType mysql

# 创建日志目录
mkdir $HIVE_HOME/logs

# 启动Hive服务
cd $HIVE_HOME/logs && hive --service metastore

16. 验证Hive部署是否成功

bash 复制代码
# 进入Mysql数据库
myslq -uroot -p'新密码'

# 改变使用的数据库
use hive;

# 查看数据库中的表
show tables;

# 若里面有数据,则部署成功

17. 后台启动Hive服务

bash 复制代码
nohup hive --service metastore > $HIVE_HOME/logs/nohup.out 2>&1 &

参考文档

  1. Hive3.1.2版本完全分布式安装部署保姆级教程_hive 3.1.2 部署-CSDN博客

  2. Hive3.1.2搭建文档包含详细步骤及相关截图以及常见问题解决 - bjynjj - 博客园

  3. 从零开始搭建分布式大数据环境(Hadoop+Spark+Hive)

  4. 【超详细】CentOS 7安装MySQL 5.7【安装及密码配置、字符集配置、远程连接配置】_mysql contos 密码配置文件-CSDN博客

  5. Linux安装软件包的三种方法,rpm包介绍,rpm工具用法,yum工具用法,yum搭建本地仓库-腾讯云开发者社区-腾讯云

  6. mysql | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

  7. MySQL - USTC Mirror Help

  8. 【超详细】CentOS 7安装MySQL 5.7【安装及密码配置、字符集配置、远程连接配置】_mysql contos 密码配置文件-CSDN博客

  9. 通过国内mysql镜像站安装Mysql8.0版本服务器------解决方案_mysql国内镜像-CSDN博客

  10. Maven中找不到mysql-connector-java-5.7.24.jar的依赖_mysql5.7.24对应的jar包版本-CSDN博客

  11. JDBC连接数据库出现Loading class com.mysql.jdbc.Driver'. This is deprecated.问题的相关解决方法_this is deprecated. the new driver class is com.m-CSDN博客

相关推荐
龙哥·三年风水1 小时前
workman服务端开发模式-应用开发-总架构逻辑说明
分布式·gateway·php
Akamai中国2 小时前
基于容器的云原生,让业务更自由地翱翔云端
分布式·云原生·云计算·云服务·云平台·akamai·云主机
ssxueyi3 小时前
Hadoop是什么?Hadoop介绍
大数据·hadoop
BenChuat3 小时前
HBase、Hive、Redis 和 MongoDB的对比
hive·redis·mongodb·hbase
zyxzyx6663 小时前
Redisson实现分布式锁
java·笔记·分布式·后端·spring cloud
爱吃香蕉的猴哥4 小时前
消息系统之 Kafka
分布式·kafka
Hanson Huang4 小时前
【MySQL】优雅的使用MySQL实现分布式锁
数据库·分布式·mysql
IT培训中心-竺老师5 小时前
OceanBase 数据库分布式与集中式 能力
数据库·分布式·oceanbase
逸曦玥泱6 小时前
搭建分布式Kafka集群
分布式·kafka