目录
编辑
一、环境描述
二、安装mysql
2.1 卸载mysql
2.1.1 列出安装的mysql
2.1.2 卸载mysql
2.1.3 删除mysql文件目录
2.1.3.1 查看mysql 目录
2.1.3.2 依次删除
2.2.1 下载安装源
2.2.2 安装源rpm
2.2.3 加入rpm密钥
2.2.4 执行安装
2.2.5 设置开机自启动
2.2.6 修改密码
2.2.6.1 获取临时密码
2.2.6.2 登录MySQL
2.2.6.3 设置密码策略
2.2.6.4 设置密码最小长度
2.2.6.5 设置root密码
2.2.6.6 开启MySQL远程连接权限
三、安装hive
3.1 解压hive包
3.2 移动解压包
3.3 hive基本配置
3.3.1 配置环境变量
3.3.2 刷新环境变量
3.3.3 拷贝重命名hive-env.sh.template
3.3.4 修改hive-env.sh
3.3.5 拷贝重命名hive-log4j2.properties.template
3.3.6 拷贝mysql-connector-java-8.0.30.jar驱动包
3.3.7 决hadoop 和 hive 中guava.har 版本不一致问题
3.4 分发Hive
3.4.1 分发hive包
3.4.2 分发环境配置文件
3.5 配置 metastore
3.5.1 创建hdfs目录
3.5.2 配置metastore-site.xml
3.5.3 启动metastore
3.5.3.1 初始化元数据
3.5.3.2 创建日志目录
3.5.3.3 执行启动命令
3.5.3.4 查看是否启动成功
3.6 配置hiveserver2
3.6.1 配置hiveserver2-site.xml
3.6.2 修改hadoop 配置
3.6.3 启动hiveserver2服务
3.6.3.1 创建日志目录
3.6.3.2 执行启动命令
3.6.3.3 查看启动是否成功
3.7 配置Hive 客户端
3.7.1 配置hive-site.xml
3.7.2 启动hive
3.8 配置Beeline CLI
3.8.1 启动Beeline CLI 连接
3.8.2 启动beeline
3.8.3 测试通过beeline连接hive2
3.9 访问hive2页面
一、环境描述
系统环境描述:本教程基于CentOS 8.0版本虚拟机
hadoop集群:
hive 集群规划:
软件版本:
提示:Hive 是基于Hadoop的,在开始Hive之前,需要确保你的Hadoop集群是可用的。同时,本次部署需要的zookeeper,我使用的是Hadoop集群中的,关于zookeeper的部署,这里不做描述。因为该文章是基于部署Hadoop之后,所以一些机器的基本配置这里也不做描述,比如机器的免密登录,机器的hosts文件设置,包括基本的JDK安装等,如果对于这些部分有操作上的疑问,欢迎查看之前Hadoop的系列文章。Hadoop 集群部署可参考该文章:一篇文章带你学会Hadoop-3.3.4集群部署_夜夜流光相皎洁_小宁的博客-CSDN博客
二、安装mysql
2.1 卸载mysql
2.1.1 列出安装的mysql
rpm -qa | grep -i mysql
2.1.2 卸载mysql
-- 依次卸载上一步骤罗列出来的依赖
yum remove mysql-common-8.0.26-1.module_el8.4.0+915+de215114.x86_64
yum remove mysql57-community-release-el7-10.noarch
2.1.3 删除mysql文件目录
2.1.3.1 查看mysql 目录
find / -name mysql
2.1.3.2 依次删除
rm -rf /var/lib/selinux/targeted/active/modules/100/mysql
## 2.2 在线安装
2.2.1 下载安装源
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
2.2.2 安装源rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
2.2.3 加入rpm密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
2.2.4 执行安装
yum -y install mysql-community-server
在CentOS 8 下会报错:错误:没有任何匹配: mysql-community-server
原因是:【注】出现问题的核心原因为:基于RHEL 8和Oracle Linux 8的基于EL8的系统,在默认情况下附带了一个名为mysql的模块。 除非禁用此模块,否则它将屏蔽,
存储库提供的软件包。只要是 EL8系统安装任何版本的 MySQL 都会有这样的问题。
需要执行一下命令:yum module disable mysql
接着再执行:yum -y install mysql-community-server
然后安装是,执行事务检查报错:
错误:事物测试失败:
file /etc/my.cnf from install of mysql-community-server-5.7.43-1.el7.x86_64 conflicts with file from package mariadb-connector-c-config-3.1.11-2.el8_3.noarch
原因分析:
网上搜了下,说是我的yum 里面安装了mariadb-connector-c-config.noarch ,于是就要执行命令查看一下
yum list installed
果然如此,于是,就要删除掉mariadb-connector-c-config.noarch,
yum remove mariadb-connector-c-config.noarch
接着再执行:yum -y install mysql-community-server
成功了
2.2.5 设置开机自启动
systemctl start mysqld.service
systemctl status mysqld.service
查看状态,发现mysql 服务处于active(running)状态,说明Mysql 服务启动成功。
2.2.6 修改密码
2.2.6.1 获取临时密码
grep "password" /var/log/mysqld.log
2.2.6.2 登录MySQL
mysql -uroot -p
2.2.6.3 设置密码策略
设置密码策略为LOW,此策略只检查密码的长度
set global validate_password_policy=LOW;
2.2.6.4 设置密码最小长度
set global validate_password_length=6;
2.2.6.5 设置root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'xiaoning';
2.2.6.6 开启MySQL远程连接权限
grant all privileges on *.* to 'root'@'%' identified by 'xiaoning' with grant option;
三、安装hive
3.1 解压hive包
tar -zxvf apache-hive-3.1.3-bin.tar.gz
3.2 移动解压包
mv apache-hive-3.1.3-bin /usr/local/hive-3.1.3
3.3 hive基本配置
3.3.1 配置环境变量
vim /etc/profile
export HIVE_HOME=/usr/local/hive-3.1.3
export PATH=$PATH:$HIVE_HOME/bin
3.3.2 刷新环境变量
source /etc/profile
3.3.3 拷贝重命名hive-env.sh.template
cd /usr/local/hive-3.1.3/conf
cp hive-env.sh.template hive-env.sh
3.3.4 修改hive-env.sh
export HADOOP_HOME=/usr/local/hadoop-3.3.4
export HIVE_CONF_DIR=/usr/local/hive-3.1.3/conf
export HIVE_AUX_JARS_PATH=/usr/local/hive-3.1.3/lib
export JAVA_HOME=/usr/local/jdk1.8.0_211
3.3.5 拷贝重命名hive-log4j2.properties.template
cp hive-log4j2.properties.template hive-log4j2.properties
3.3.6 拷贝mysql-connector-java-8.0.30.jar驱动包
mv mysql-connector-java-8.0.30.jar /usr/local/hive-3.1.3/lib/
3.3.7 决hadoop 和 hive 中guava.har 版本不一致问题
cd /usr/local/hadoop-3.3.4/share/hadoop/common/lib
cp guava-27.0-jre.jar /usr/local/hive-3.1.3/lib/
cd /usr/local/hive-3.1.3/lib
rm -rf guava-19.0.jar
3.4 分发Hive
3.4.1 分发hive包
scp -r /usr/local/hive-3.1.3/ root@node1:/usr/local/
scp -r /usr/local/hive-3.1.3/ root@node2:/usr/local/
scp -r /usr/local/hive-3.1.3/ root@node3:/usr/local/
scp -r /usr/local/hive-3.1.3/ root@node4:/usr/local/
3.4.2 分发环境配置文件
scp /etc/profile root@node1:/etc/profile
scp /etc/profile root@node2:/etc/profile
scp /etc/profile root@node3:/etc/profile
scp /etc/profile root@node4:/etc/profile
注意:执行source /etc/profile 使环境生效
3.5 配置 metastore
3.5.1 创建hdfs目录
hdfs dfs -mkdir -p /usr/local/hive-3.1.3/hive_local/{warehouse,tmp,logs}
hdfs dfs -chmod -R 755 /usr/local/hive-3.1.3/hive_local/
提示:只需要执行一次
3.5.2 配置metastore-site.xml
cd /usr/local/hive-3.1.3/conf
cat > metastore-site.xml
vim metastore-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- hdfs 上 Hive元数据存放的位置 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/usr/local/hive-3.1.3/hive_local/warehouse</value>
</property>
<!-- Hive作业的HDFS根目录位置 -->
<property>
<name>hive.exec.scratchdir</name>
<value>/usr/local/hive-3.1.3/hive_local/tmp</value>
</property>
<!-- Hive作业的HDFS根目录创建权限 -->
<property>
<name>hive.scratch.dir.permission</name>
<value>775</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<!-- 数据库连接驱动 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- 数据库地址,名称 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node2:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!-- 数据库连接用户 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- 数据库连接密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>xiaoning</value>
</property>
<!-- 指定metastore连接地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node3:9083</value>
</property>
</configuration>
3.5.3 启动metastore
3.5.3.1 初始化元数据
注意:任意node3、node4等部署metastore的节点选一个初始化,且只需要初始化一次
schematool -initSchema -dbType mysql -verbose
分别到 node3、node4启动 metastore
初始化数据后,使用连接工具连接上Mysql ,可以查看到hive数据库
3.5.3.2 创建日志目录
mkdir -pv $HIVE_HOME/logs
3.5.3.3 执行启动命令
hive --service metastore >> $HIVE_HOME/logs/metastore.log 2>&1 &
注意:Node4节点上启动metastore 前,需要修改 hive.metastore.uris地址为: thrift://node4:9083
3.5.3.4 查看是否启动成功
netstat -anp | grep 9083
如果出现端口号进程占用,说明启动成功了
3.6 配置hiveserver2
3.6.1 配置hiveserver2-site.xml
cd $HIVE_HOME/conf
cat > hiveserver2-site.xml
vim hiveserver2-site.xml
<configuration>
<!-- 远程metastore地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node3:9083,thrift://node4:9083</value>
</property>
<!-- 开启hiveserver2高可用-->
<property>
<name>hive.server2.support.dynamic.service.discovery</name>
<value>true</value>
</property>
<property>
<name>hive.server2.active.passive.ha.enable</name>
<value>true</value>
</property>
<property>
<name>hive.server2.zookeeper.namespace</name>
<value>hiveserver2_zk</value>
</property>
<!--zookeeper连接地址 -->
<property>
<name>hive.zookeeper.quorum</name>
<value>node2:2181,node3:2181,node4:2181</value>
</property>
<property>
<name>hive.zookeeper.client.port</name>
<value>2181</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>master</value>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10001</value>
</property>
<!--开启权限认证 -->
<property>
<name>hive.security.authorization.enabled</name>
<value>true</value>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>
<property>
<name>hive.users.in.admin.role</name>
<value>root</value>
</property>
<property>
<name>hive.security.authorization.manager</name> <value>org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory</value>
</property>
<property>
<name>hive.security.authenticator.manager</name>
<value>org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator</value>
</property>
</configuration>
3.6.2 修改hadoop 配置
在hadoop安装目录下的core-site.xml中,需要开启hadoop代理用户配置
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
说明:hadoop.proxyuser.xxx.hosts和hadoop.proxyuser.xxx.groups,其中xxx为启动HiveServer2的用户
配置完成后,需要重启hadoop集群,因为我上次部署hadoop集群,已经配置了上述各项配置,这里我可以忽略该步骤
3.6.3 启动hiveserver2服务
分别在master 、 node1、node2启动
其中node1,node2需要修改hiveserver2-site.xml文件,
#node1:
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node1</value>
</property>
#node2:
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node2</value>
</property>
3.6.3.1 创建日志目录
mkdir -pv $HIVE_HOME/logs
3.6.3.2 执行启动命令
hive --service hiveserver2 >> $HIVE_HOME/logs/hiveserver2.log 2>&1 &
3.6.3.3 查看启动是否成功
netstat -anp | grep 10001
3.7 配置Hive 客户端
3.7.1 配置hive-site.xml
touch hive-site.xml
vim hive-site.xml
<configuration>
<!--显示表的列名 -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<!-- 显示数据库名称 -->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
</configuration>
3.7.2 启动hive
hive
3.8 配置Beeline CLI
3.8.1 启动Beeline CLI 连接
提示:使用Beeline CLI连接需要配置hadoop中hdfs-site.xml 配置文件。需要启动webhdfs;
<!-- 开启webhdfs -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
配置完成后,需要重启hadoop集群,因为我上次部署hadoop集群,已经配置了上述各项配置,这里我可以忽略该步骤.
3.8.2 启动beeline
beeline
3.8.3 测试通过beeline连接hive2
!connect jdbc:hive2://master:10001
3.9 访问hive2页面
我们配置启动了三个hiveserver2服务,分别在master、node1、node2节点,所以三个节点均可访问到我们的hive2页面
HiveServer2
HiveServer2
HiveServer2
到此,我们就是实现了hive两个metastore节点,三个hiveserver2节点的分布式集群部署。
好了,今天Hive分布式集群部署的相关内容就分享到这里,如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!