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
# 查看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文件
# 使用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/
# 导入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 (二选一)使用直接通过国内镜像下载依赖包并安装
# 下载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'
# 安装Mysql-server
yum install -y /tmp/mysql-community*
3.2 (二选一)使用国内yum源进行一键安装
# 导入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
# 配置Mysql开机自启
systemctl enable mysqld
# 启动Mysql
systemctl start mysqld
# 查看Mysql状态
systemctl status mysqld
5. 配置Mysql
# 查看安装后随机生成的Mysql密码
grep 'A temporary password' /var/log/mysqld.log
# 登录数据库
mysql -uroot -p'你自己查到的密码'
# 重置默认的随机密码(不进行无法操作数据库)
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
# 退出数据库
exit
6. 创建用于存储Hive数据的用户
# 必须要先退出服务器,使用新的密码进入数据库才能操作
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. 退出数据库
exit
正式安装Hive
在master主节点上执行
8. 安装程序文件
- 首先上传Hive的文件到服务器上
# 解压文件到指定目录
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版本差异(依赖冲突)
# 备份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. 配置用户环境变量
cat >> ~/.bashrc << "EOF"
# ------------------- Hive 配置--------------------
# 设置Hive环境变量,指向Hive安装目录
export HIVE_HOME=/opt/module/hive
# 将HIVE的bin目录添加到PATH环境变量
export PATH=$PATH:$HIVE_HOME/bin
# -------------------------------------------------
EOF
-----------------------------------------------------------
说明
举例 export PATH=$HIVE_HOME/bin:$PATH
英文冒号代表分隔
这段代码表示
1. 当你输入一个命令时,shell会首先在"HIVE_HOME"这个变量的"bin"子目录中查找,
2. 最后,若找不到,则在"PATH"的指定目录中查找
-------------------------------------------------------------
11. 编写Hive的配置文件
# 进入hive配置目录
cd /opt/module/hive/conf
# 复制hive-env.sh模板
cp hive-env.sh.template hive-env.sh
根据自己的配置信息,或者查看~/.bashrc,修改下面各项的内容,随后复制粘贴即可
# 配置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主机
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版本的驱动就可以了
# 根据你自己的mysql版本,在目录中查找对应版本的驱动,并放到hive主目录下的lib下即可
cp mysql-connector-java-8.0.26.jar /opt/module/hive/lib/
结束安装
14. 加载环境变量
# 在master主节点上执行
source ~/.bashrc
15. 启动Hive
# 初始化Hive元数据到Mysql
schematool -initSchema -dbType mysql
# 创建日志目录
mkdir $HIVE_HOME/logs
# 启动Hive服务
cd $HIVE_HOME/logs && hive --service metastore
16. 验证Hive部署是否成功
# 进入Mysql数据库
myslq -uroot -p'新密码'
# 改变使用的数据库
use hive;
# 查看数据库中的表
show tables;
# 若里面有数据,则部署成功
17. 后台启动Hive服务
nohup hive --service metastore > $HIVE_HOME/logs/nohup.out 2>&1 &