【第三站】本地虚拟机部署hive集群

一、安装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&amp;useSSL=false&amp;useUnicode=true&amp;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
相关推荐
云技纵横2 小时前
本地限流与 Redis 分布式限流的无缝切换 技术栈:Sentinel 线程池隔离 + Nginx + Kafka
redis·分布式·sentinel
和光同尘20232 小时前
一文讲透CentOS下安装部署使用MYSQL
linux·运维·数据库·数据仓库·mysql·centos·database
0.0雨2 小时前
设置集群的SSH免密登陆
linux·服务器·ssh
胖咕噜的稞达鸭2 小时前
【Linux系统编程】解密环境变量与进程地址空间
linux·运维·chrome
峰顶听歌的鲸鱼2 小时前
17.docker:监控及日志
linux·运维·docker·容器·云计算
一颗青果2 小时前
Linux下的线程
linux·运维·服务器
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [fs]fs_context
linux·笔记·学习
源代码•宸2 小时前
goframe框架签到系统项目开发(分布式 ID 生成器、雪花算法、抽离业务逻辑到service层)
经验分享·分布式·mysql·算法·golang·雪花算法·goframe
_OP_CHEN3 小时前
【Linux系统编程】(十八)Linux 进程创建与终止进阶:等待机制与程序替换的底层密码
linux·服务器·操作系统·进程·进程等待·进程替换·exec函数族