Hadoop 完全分布式搭建 -- Hive3.1.2 数据仓库、Zookeeper3.5.7 安装部署

前景提要

部署安装 Hive3.1.2 数据仓库、Zookeeper3.5.7

系统环境

三台 Centos7 系统的主机

一台 master 节点,两台 slave 节点,分别为 slave1、slave2

Hadoop 完全分布式集群

所需安装包

apache-hive-3.1.2-bin.tar.gz

1
https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

apache-zookeeper-3.5.7-bin.tar.gz

1
https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz 

所需 jar 包

mysql-connector-java-8.0.28.jar

1
https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar

1、安装 Hive

1)解压 Hive 压缩包

1
2
3
4
5
6
7
8
9
10
11
12
13
# 默认 Hive 已在 /tdsgpo 文件夹
[root@master ~]cd /tdsgpo
[root@master tdsgpo]sudo tar -zxvf apache-hive-3.1.2-bin.tar.gz
[root@master tdsgpo]sudo mv apache-hive-3.1.2-bin /tdsgpo/hive-3.1.2
# 配置 Hive 文件夹为所有人可用
[root@master tdsgpo]sudo chmod -R 777 /tdsgpo/hive-3.1.2
# 在 HDFS 上创建 Hive 目录,这一步骤是可选项,需要启动 Hadoop 完全分布式,这一步详情请参照我的 《Hadoop 完全分布式搭建及基础环境配置》这篇文章。
[root@master tdsgpo]hdfs dfs -mkdir /tmp
[root@master tdsgpo]hdfs dfs -mkdir -p /user/hive/warehouse
[root@master tdsgpo]hdfs dfs -chmod g+w /tmp
[root@master tdsgpo]hdfs dfs -chmod g+w /user/hive/warehouse
# 拷贝下载的 jar 包到 Hive 的 lib 目录,默认 jar 文件夹在 /tdsgpo 文件夹
[root@master tdsgpo]sudo cp /tdsgpo/mysql-connector-java-8.0.28.jar /tdsgpo/hive-3.1.2/lib/

2)配置 hive-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@master tdsgpo]cd /tdsgpo/hive-3.1.2/conf/
[root@master tdsgpo]vim hive-site.xml
## 按下 i 键输入以下内容,需要注意在第一个 <property> 中的 master 主机名称以及第三、第四个 <property> 中在 MySQL 里面的用户,这里我的 MySQL 用户是 Hive,密码是 123456,稍后我们来创建用户
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
</configuration>

3)配置 Hive 与 MySQL 链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
## 我这里因为是重新打包的镜像,所以 MySQL 服务在镜像中已经关闭了,我是用了如下的语句来启动 MySQL 服务
[root@master tdsgpo]sudo su - mysql -c '/tdsgpo/mysql-8.0.26/bin/mysqld_safe --user=mysql &'
# 使用 root 用户登录 MySQL
[root@master tdsgpo]mysql -uroot -p123456
# 创建 Hive 用户
mysql > create database hive;
mysql > create user 'hive'@'%' identified by '123456';
mysql > GRANT ALL PRIVILEGES on *.* to 'hive'@'%';
mysql > flush privileges;
mysql > exit
# 删除 Hive 里面的低版本 guava 包,再从 Hadoop里面拷贝过去,这一步的主要目的是我的 Hadoop 版本是3.2.1,Hive版本是3.1.2,在 Hive 里面的 guava 包版本太低了,需要删除之后从 Hadoop里面拷贝过去,不然无法启动
[root@master tdsgpo]rm -rf /tdsgpo/hive-3.1.2/lib/guava-19.0.jar
[root@master tdsgpo]cp /tdsgpo/hadoop-3.2.1/share/hadoop/common/lib/guava-27.0-jre.jar /tdsgpo/hive-3.1.2/lib/
# 通过 Hive 初始化数据库
[root@master tdsgpo]sudo su - root -c '/tdsgpo/hive-3.1.2/bin/schematool -initSchema -dbType mysql'
# 查看 MySQL 数据库中 hive 的数据
[root@master tdsgpo]mysql -uroot -p123456
[root@master tdsgpo]use hive;
[root@master tdsgpo]show tables;
## 此时会展现以下表格,则表示数据库初始化成功
AUX_TABLE
BUCKETING_CCLS
CDS
CCLUMNS_VS
CCMPACTICN_QUEUE
....

4)启动 Hive 命令

1
2
[root@master tdsgpo]cd /softwares/hive-3.1.2
[root@master tdsgpo]bin/hive

2、安装Zookeeper

1)解压文件

1
2
3
4
5
6
7
8
9
10
11
12
# 默认 Zookeeper 已在 /tdsgpo 文件夹
[root@master ~]cd /tdsgpo
[root@master tdsgpo]tar -xzvf apache-zookeeper-3.5.7-bin.tar.gz
[root@master tdsgpo]mv apache-zookeeper-3.5.7-bin /tdsgpo/zookeeper3.5.7
# 创建 Zookeeper 使用的 data 和 dataLog 目录
[root@master tdsgpo]mkdir /tdsgpo/zookeeper3.5.7/data
[root@master tdsgpo]mkdir /tdsgpo/zookeeper3.5.7/dataLog
# 在 data 文件中创建 myid 文件
[root@master data]cd /tdsgpo/zookeeper3.5.7/data
[root@master data]vim myid
## 按下 i 键输入以下内容,注意 master 节点是1, 在将 Zookeeper 文件夹复制到两个从节点之后需要依次将 slave1 、slave2 中的 myid 配置文件改成 2、3,表明是三台不同的主机,并且
1

2)修改配置文件 zoo.cfg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@master data]cd /tdsgpo/zookeeper3.5.7/conf
[root@master conf]cp zoo_sample.cfg zoo.cfg
[root@master conf]vim zoo.cfg
## 按下 i 键输入以下内容,注意有些内容修改就行了,同时还有对应的三个主机名称不要出错
admin.commandURL=/commands
autopurge.purgeInterval=24
quorum.cnxn.threads.size=20
admin.serverPort=18080
admin.idleTimeout=30000
quorum.auth.enableSasl=false
autopurge.snapRetainCount=30
admin.enableServer=false
dataDir=/tdsgpo/zookeeper3.5.7/data
dataLogDir=/tdsgpo/zookeeper3.5.7/dataLog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

3)配置 zookeeper-env.sh

1
2
3
4
5
6
[root@master conf]vim zookeeper-env.sh 
## 按下 i 键输入以下内容
ZOO_LOG_DIR=/tdsgpo/zookeeper-3.5.7/logs
ZOO_LOG4J_PROP=/tdsgpo/zookeeper-3.5.7/logs
ZK_SERVER_HEAP=512
ZK_CLIENT_HEAP=256

4)分发 Zookeeper 文件夹到其他两台从节点的 /tdsgpo 文件夹

1
2
3
4
5
## 在此步骤之前需要完成三台主机的 shh 免密登录以及 hosts 配置,这两步详情请参照我的 《Hadoop 完全分布式搭建及基础环境配置》这篇文章。如果不想配置则可以直接将 slave1 改成主机的 ip 地址
[root@master conf]scp -r /tdsgpo/zookeeper-3.5.7 slave1:/tdsgpo/
[root@master conf]scp -r /tdsgpo/zookeeper-3.5.7 slave2:/tdsgpo/
# 设置文件权限为所有人可用,三台主机都需要执行
chmod 777 -R /tdsgpo/zookeeper-3.5.7

5)启动 Zookeeper 集群

1
2
3
4
5
6
## 打开新窗口,三台主机都需要启动
[root@master ~]cd /tdsgpo/zookeeper-3.5.7/bin
# 启动命令
[root@master bin]./zkServer.sh start
# 检查是否启动成功,运行以下命令 master、slave2 节点会显示 Mode 为 'follower',slave1节点会显示 laeder
[root@master bin]./zkServer.sh status

下篇文章我们讲解在 Hadoop 完全分布式集群里面搭建 IDEA 代码编辑器以及集成 Spark、Flink。


Hadoop 完全分布式搭建 -- Hive3.1.2 数据仓库、Zookeeper3.5.7 安装部署
https://tdsgpo.top/2022/10/04/Hadoop 完全分布式搭建 -- Hive3.1.2 数据仓库、Zookeeper3.5.7 安装部署/
作者
DDS
发布于
2022年10月4日
许可协议