赞
踩
目录
3.3.3 拷贝重命名hive-env.sh.template
3.3.5 拷贝重命名hive-log4j2.properties.template
3.3.6 拷贝mysql-connector-java-8.0.30.jar驱动包
3.3.7 决hadoop 和 hive 中guava.har 版本不一致问题
系统环境描述:本教程基于CentOS 8.0版本虚拟机
hadoop集群:
hive 集群规划:
软件版本:
提示:Hive 是基于Hadoop的,在开始Hive之前,需要确保你的Hadoop集群是可用的。同时,本次部署需要的zookeeper,我使用的是Hadoop集群中的,关于zookeeper的部署,这里不做描述。因为该文章是基于部署Hadoop之后,所以一些机器的基本配置这里也不做描述,比如机器的免密登录,机器的hosts文件设置,包括基本的JDK安装等,如果对于这些部分有操作上的疑问,欢迎查看之前Hadoop的系列文章。Hadoop 集群部署可参考该文章:一篇文章带你学会Hadoop-3.3.4集群部署_夜夜流光相皎洁_小宁的博客-CSDN博客
rpm -qa | grep -i 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
find / -name mysql
rm -rf /var/lib/selinux/targeted/active/modules/100/mysql
## 2.2 在线安装
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
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
成功了
systemctl start mysqld.service
systemctl status mysqld.service
查看状态,发现mysql 服务处于active(running)状态,说明Mysql 服务启动成功。
grep "password" /var/log/mysqld.log
mysql -uroot -p
设置密码策略为LOW,此策略只检查密码的长度
set global validate_password_policy=LOW;
set global validate_password_length=6;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'xiaoning';
grant all privileges on *.* to 'root'@'%' identified by 'xiaoning' with grant option;
tar -zxvf apache-hive-3.1.3-bin.tar.gz
mv apache-hive-3.1.3-bin /usr/local/hive-3.1.3
vim /etc/profile
export HIVE_HOME=/usr/local/hive-3.1.3
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile
cd /usr/local/hive-3.1.3/conf
cp hive-env.sh.template 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
cp hive-log4j2.properties.template hive-log4j2.properties
mv mysql-connector-java-8.0.30.jar /usr/local/hive-3.1.3/lib/
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
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/
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 使环境生效
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/
提示:只需要执行一次
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>
注意:任意node3、node4等部署metastore的节点选一个初始化,且只需要初始化一次
schematool -initSchema -dbType mysql -verbose
分别到 node3、node4启动 metastore
初始化数据后,使用连接工具连接上Mysql ,可以查看到hive数据库
mkdir -pv $HIVE_HOME/logs
hive --service metastore >> $HIVE_HOME/logs/metastore.log 2>&1 &
注意:Node4节点上启动metastore 前,需要修改 hive.metastore.uris地址为: thrift://node4:9083
netstat -anp | grep 9083
如果出现端口号进程占用,说明启动成功了
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>
在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集群,已经配置了上述各项配置,这里我可以忽略该步骤
分别在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>
mkdir -pv $HIVE_HOME/logs
hive --service hiveserver2 >> $HIVE_HOME/logs/hiveserver2.log 2>&1 &
netstat -anp | grep 10001
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>
hive
提示:使用Beeline CLI连接需要配置hadoop中hdfs-site.xml 配置文件。需要启动webhdfs;
- <!-- 开启webhdfs -->
- <property>
- <name>dfs.webhdfs.enabled</name>
- <value>true</value>
- </property>
配置完成后,需要重启hadoop集群,因为我上次部署hadoop集群,已经配置了上述各项配置,这里我可以忽略该步骤.
beeline
!connect jdbc:hive2://master:10001
我们配置启动了三个hiveserver2服务,分别在master、node1、node2节点,所以三个节点均可访问到我们的hive2页面
到此,我们就是实现了hive两个metastore节点,三个hiveserver2节点的分布式集群部署。
好了,今天Hive分布式集群部署的相关内容就分享到这里,如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。