一、安装mysql(元数据管理)
mysql仅在master节点部署, 其他节点通过jdbc链接
1、卸载CentOS7自带mariaDB
bash
rpm -qa|grep mariadb
rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps
#如果没有显示即卸载成功
rpm -qa|grep mariadb
2、下载mysql
bash
cd /software/mysql
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
3、安装依赖
bash
//查询下看看
yum search libaio
yum search perl
yum search net-tools
//如果没有则安装下
yum install libaio
yum install perl
yum install net-tools
4、解压下载tar包,依次安装
bash
tar -xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm
5、设置密码
bash
#启动服务
systemctl start mysqld
# 查看运行状态
systemctl status mysqld
# 或检查端口是否监听(默认3306)
netstat -tulpn | grep 3306
查看状态
service mysqld status

查看临时密码
grep password /var/log/mysqld.log
临时密码登录mysql,然后修改密码
bash
#登录:
mysql -uroot -p
#输入,密码,根据上面mysql.log查看的密码登录
设置参数,validate_password_policy强度等级,0是指只验证长度
set global validate_password_policy=0;
set global validate_password_length=6;
密码:123456
alter user 'root'@'localhost' identified by '123456';
立即生效:
flush privileges;
开启远程连接,允许远程连接数据库
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
6、开放3306端口
bash
//查询3306端口是否开放
firewall-cmd --query-port=3306/tcp
//添加3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
//配置生效
firewall-cmd --reload
7、设置mysqld服务自启动
bash
systemctl enable mysqld
#检查是否自启动
systemctl list-unit-files | grep mysqld
二、hive部署
1、下载hive3.1.2
下载
一台主机执行,完成部署后scp到其他节点再变更相关配置
bash
# 下载Hive3.1.2二进制包(核心包)
wget https://archive.apache.org/dist/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
# 可选:下载校验和文件(用于验证文件完整性)可选
wget https://archive.apache.org/dist/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz.sha512
官方镜像下载,耗时较长,更改为多线程下载
bash
aria2c -x 16 -s 16 -d /software/hive https://archive.apache.org/dist/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
关于多线程下载的说明和教学在此wget下载速度过慢,优化为aria2c多线程下载-CSDN博客
校验
bash
cd /software/hive
#下载校验和文件(用于验证文件完整性)
wget https://archive.apache.org/dist/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz.sha512
发现官网的校验文件只有256的,所以验证方式改为用 PGP 签名(更权威)
下载 KEYS 与 .asc 签名
bash
wget https://archive.apache.org/dist/hive/KEYS
wget https://archive.apache.org/dist/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz.asc
导入并验证
bash
gpg --import KEYS
gpg --verify apache-hive-3.1.2-bin.tar.gz.asc apache-hive-3.1.2-bin.tar.gz
成功标志:出现 Good signature from ...,且签名者在 KEYS 中可信

2、安装、配置hive3.1.2
安装
bash
cd /software/hive
tar -zxvf apache-hive-3.1.2-bin.tar.gz
修改Hadoop配置文件
修改Hadoop中/software/hadoop-3.3.6/etc/hadoop/core-site.xml,并且Hadoop集群同步配置文件,重启生效
Hive需要把数据存储在HDFS上,并且通过MapReduce作为执行引擎处理数据;因此需要在Hadoop中添加相关配置属性,以满足Hive在Hadoop上运行。
bash
vi /software/hadoop-3.3.6/etc/hadoop/core-site.xml
<!-- 允许所有主机的root用户作为代理 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value> <!-- * 表示所有主机,也可以写具体IP,如master,slave1 -->
</property>
<!-- 允许root代理所有用户组的用户 -->
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value> <!-- * 表示所有用户组,也可以写具体组名,如hadoop,hive -->
</property>
#同步到node1,node2
scp /software/hadoop-3.3.6/etc/hadoop/core-site.xml node1:/software/hadoop-3.3.6/etc/hadoop/core-site.xml
scp /software/hadoop-3.3.6/etc/hadoop/core-site.xml node2:/software/hadoop-3.3.6/etc/hadoop/core-site.xml
解决Hive与Hadoop之间guava版本差异
bash
cd /software/hive/apache-hive-3.1.2-bin/lib/
ls -lrt *guava*
cd /software/hadoop-3.3.6/share/hadoop/common/lib/
ls -lrt *guava*
#哪个下面的版本高就用高版本的覆盖低版本的
修改hive配置文件
bash
cd /software/hive/apache-hive-3.1.2-bin/conf
mv hive-env.sh.template hive-env.sh
#末尾添加
vim hive-env.sh
export HADOOP_HOME=/software/hadoop-3.3.6
export HIVE_CONF_DIR=/software/hive/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/software/hive/apache-hive-3.1.2-bin/lib
# 新增配置文件,直接vim一个不存在的文件会建文件
vim hive-site.xml
#将以下内容填充进文件
<configuration>
<!-- 存储元数据mysql相关配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive3?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.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>
<!-- H2S运行绑定host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>master</value>
</property>
<!-- 远程模式部署metastore 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>
</configuration>
3、添加 MySQL 驱动
将mysql-connector-java-8.0.28.jar(与 MySQL 版本匹配)放入
/software/hive/apache-hive-3.1.2-bin/lib
bash
cd /software/mysql
wget https://cdn.mysql.com/Downloads/Connector-J/mysql-connector-java-5.1.49.tar.gz
tar -zxvf mysql-connector-java-5.1.49.tar.gz
cp mysql-connector-java-5.1.49/mysql-connector-java-5.1.49.jar /software/hive/apache-hive-3.1.2-bin/lib
初始化元数据
bash
cd /software/hive/apache-hive-3.1.2-bin/bin
./schematool -initSchema -dbType mysql -verbos
#初始化成功会在mysql中创建74张表
4、同步 Hive 到node1、node2节点
bash
scp -r /software/hive node1:/software/
scp -r /software/hive node2:/software/
三、启动hive
1、启动metastore服务
bash
#前台启动
/software/hive/apache-hive-3.1.2-bin/bin/hive --service metastore
#前台启动开启debug日志
/software/apache-hive-3.1.2-bin/bin/hive --service metastore --hiveconf
hive.root.logger=DEBUG,console
#前台启动关闭方式 ctrl+c结束进程
后台启动
nohup /software/hive/apache-hive-3.1.2-bin/bin/hive --service metastore &
#后台挂起启动 结束进程使用jps查看进程 使用kill -9 杀死进程
#nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下
2、启动HiveServer2服务
远程模式下beeline通过 Thrift 连接到单独的HiveServer2服务上
这也是官方推荐在生产环境中使用的模式
bash
nohup $HIVE_HOME/bin/hive --service hiveserver2 &

出现hive Session id说明hiveserver2服务启动成功
3、开放相关服务端口
master开放hiveserver2的端口 10000
不需要在其他节点连接hivesever2,仅用master
bash
sudo firewall-cmd --permanent --add-port=10000/tcp --zone=public
四、启动结果验证
客户端连接
bash
$HIVE_HOME/bin/beeline -u jdbc:hive2://master:10000 -n hadoop
#执行测试 SQL:
create database test_db;
show databases;

bash
#在其他node1节点测试连接master的hiveserver2服务
$HIVE_HOME/bin/beeline -u jdbc:hive2://master:10000 -n hadoop
