【第三站】本地虚拟机部署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
相关推荐
拾光Ծ14 小时前
【Linux】文件系统核心(二):深入 Ext2 底层:Block Group 结构 + inode 索引,轻松锁定文件的增删改查
linux·软硬链接·inode·ext2文件系统·block group·文件系统原理·linux面试
楼田莉子15 小时前
Linux学习:进程信号
linux·运维·服务器·c++·学习
陌上丨15 小时前
分布式锁的特性是什么?如何实现分布式锁?
分布式
KeeBoom15 小时前
嵌入式 Linux 应用开发完全手册——阅读笔记14
linux·笔记
yangSnowy15 小时前
MySQL 分布式锁实现方案
数据库·分布式·mysql
进击切图仔15 小时前
新装 Ubuntu 20.04.6 中安装 ssh.server 功能
linux·ubuntu·ssh
松涛和鸣15 小时前
69、Linux字符设备驱动实战
linux·服务器·网络·arm开发·数据库·驱动开发
TangDuoduo000515 小时前
【Linux下LED基础设备驱动】
linux·驱动开发
TTBIGDATA15 小时前
【Ranger】Ranger Admin 配置 Knox 策略时出现,the trustAnchors parameter must be non-empty
大数据·hadoop·ambari·kerberos·ranger·knox·bigtop
cyber_两只龙宝15 小时前
haproxy--使用socat工具实现对haproxy权重配置的热更新
linux·运维·负载均衡·haproxy·socat