搭建hive集群(centos7+Mysql8.0+Hive2.3.7)

首先放出整个集群的拓扑结构

集群拓扑结构

然后是本文使用的版本号

centos7
hadoop2.8.5
hbase2.2.6
zookeeper3.5.8
jdk1.8.0-191
hive2.3.7
mysql8.0

正文开始

1. 在hadoop01上安装MySQL8.0

卸载原有的MySQL

rpm -qa | grep mysql 查询虚拟机上自带的MySQL
yum remove + (查询到的MySQL) 删掉虚拟机上自带的MySQL

删除配置文件
rm -rf /var/lib/mysql
rm /etc/my.cnf
rm -rf /usr/share/mysql-8.0

yum源安装mysql8.0

1.在Mysql官网获取yum源

链接: link.
注意版本:
在这里插入图片描述

2.安装MySQL8.0
  1. 将repo文件上传到hadoop01服务器,并执行命令安装:
    yum install mysql80-community-release-el7-3.noarch.rpm
    安装完毕后,进入/etc/yum.repos.d,可以看到刚加入的repo
    在这里插入图片描述
    完毕后,更新yum缓存
    yum clean all
    yum makecache
    2.因为官网最新的repo源中,包括了mysql的许多版本,所以需要修改各版本的enabled的值来确定安装哪个版本
    cat /etc/yum.repos.d/mysql-community.repo
    在这里插入图片描述
    在这里插入图片描述
    上图可看到,5.5、5.6和5.7的版本,enabled值为0,为不安装;8.0及其它工具,enabled值为1,为安装。默认安装最高版本,可以不修改。
    执行安装命令
    yum install mysql-community-server
3.登录MySQL及修改密码
  1. 设置MySQL
    启动MySQL
    systemctl start mysqld
    设置开机自启
    systemctl enable mysqld
    systemctl daemon-reload
  2. 修改MySQL登陆密码
    查看默认初始密码:
    grep ‘temporary password’ /var/log/mysqld.log
    在这里插入图片描述
    修改密码:
    mysql -uroot -p
    Enter password:#输入密码,密码为查看的初始密码
    调整密码验证规则,MySQL8.0才可以设置简单密码:
    mysql> set global validate_password.policy=0;
    mysql> set global validate_password.length=1;
    重新设置密码:
    ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘你的密码’;
4. 远程登录

登陆Mysql数据库,切换到mysql库
use mysql
查看root用户属性
select host,user from user;
root用户的host默认为localhost,需要改为%,即可允许远程登录数据库
update user set host=’%’ where user=‘root’;
修改完成后,使用以下命令让修改立刻生效
flush privileges;
使用navicat登录测试
在这里插入图片描述

2. 搭建hive集群

在hadoop02下载hive并解压

下载地址:link.
我是解压到:/usr/java/hive-2.3.7

配置环境变量

vim /etc/profile/
在这里插入图片描述
保存后退出执行:source /etc/profile

修改conf目录的配置文件

进入hive根目录下的conf文件夹
cd /usr/java/hive-2.3.7/bin/conf/
有hive-default.xml.template和hive-env.sh.template 两个模板文件,复制成新的文件并进行修改
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
修改hive-site.xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<property> 
		<name>hive.metastore.warehouse.dir</name> 
		<value>/user/hive/warehouse</value>
	</property>
	<property>
		<name>hive.metastore.local</name>
		<value>false</value>
	</property>

	<property>
		 <name>hive.metastore.uris</name> 
		<value>thrift://hadoop02:9083</value>
	</property>

</configuration>


将hadoop02上的hive-2.3.7目录上传到hadoop03和hadoop04上
scp -r hive-2.3.7/ root@hadoop03:/usr/java/
scp -r hive-2.3.7/ root@hadoop04:/usr/java/
在hadoop02上下载MySQL驱动:
链接: link.
在这里插入图片描述
解压
tar - zxvf mysql-connector-java-8.0.22.tar.gz
将解压得到的mysql-connector-java-8.0.22.jar移动到hive-2.3.6/lib文件夹下
mv mysql-connector-java-8.0.22.jar /usr/java/hive-2.3.7/lib

创建hive临时文件夹tmp

在hadoop03和hadoop04上创建tmp文件夹:
cd /opt
mkdir hive-2.3.7
cd hive-2.3.7
mkdir tmp
修改tmp文件夹的权限:
chmod -R 777 tmp/
然后将hadoop03和hadoop04上hive-site.xml中,所有,${system:java.io.tmpdir} 替换为 /opt/hive-2.3.6/tmp

在hadoop02上配置metastore server

配置hive-site.xml
vim hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<!--  在hdfs上文件的位置  -->
	<property> 
		<name>hive.metastore.warehouse.dir</name> 
		<value>/user/hive/warehouse</value>
	</property>
	<!-- 元数据的位置 -->
	<property>
		<name>javax.jdo.option.ConnectionURL</name> 
		<value>jdbc:mysql://hadoop01:3306/hive?createDatabaseIfNotExist=true</value>
	</property>
	<property> 
		<name>javax.jdo.option.ConnectionDriverName</name> 
		<value>com.mysql.cj.jdbc.Driver</value>
	</property>
	<property> 
		<name>javax.jdo.option.ConnectionUserName</name> 
		<value>root</value>
	</property>
	<property> 
		<name>javax.jdo.option.ConnectionPassword</name> 
		<value>你的MySQL密码</value>
	</property> 
    <property>
         <name>hive.metastore.schema.verification</name>
         <value>false</value>
    </property>
    <property>
         <name>datanucleus.schema.autoCreateAll</name>
         <value>true</value>
    </property>


</configuration>

在node3执行以下命令初始化库:
schematool -dbType mysql -initSchema
之后在hadoop02上开启metastore服务:
hive --service metastore &
在这里插入图片描述

在hadoop03或hadoop04客户端测试

需要先开启Hadoop集群,并且保证有active的namanode
cd /usr/hive-2.3.7/bin
./hive
输入show database;出现结果为启动成功
在这里插入图片描述
如上图,有报错,则进入hive-site.xml文件,然后找到如下属性:

<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/opt/hive-2.3.7/tmp/${system:user.name}</value>
    <description>Local scratch space for Hive jobs</description>
  </property>

把它修改成如下:

<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/opt/hive-2.3.7/tmp/${user.name}</value>
    <description>Local scratch space for Hive jobs</description>
  </property>

问题解决,再次运行show databases;命令不再出现上述问题:
在这里插入图片描述
测试一些其他hive命令:

create database ryan; 
use ryan;
create table produce_hive( id int, name varchar(20) );

可以在hdfs上看创建了一个目录
在这里插入图片描述
在mysql上也有元数据
在这里插入图片描述
插入一条数据,并查看
insert into produce_hive values(1, ‘apple’);
select * from produce_hive;
在这里插入图片描述

最后在node3上将 metastore server配置成自启动服务
cd /etc/rc.d/init.d/
vi  metastoreServer
#!/bin/sh
#chkconfig:  345 90 90
#description: hive metastore
#processname: hive_metastore_server

source /etc/profile

# 启动服务的时间
DATE_STR=`/bin/date  "+%Y%m%d%H%M%S"`

# 日志文件名称(包含路径)
HIVE_METASTORE_LOG=${HIVE_HOME}/logs/hiveserver2-${DATE_STR}.log

/usr/bin/nohup ${HIVE_HOME}/bin/hive --service metastore >>${HIVE_METASTORE_LOG} 2>&1 &

需要在自己的自己的HIVE_HOME中创建一个logs目录来存放metastore日志
mkdir logs
添加执行权限

chmod +x metastoreServer
chkconfig --add metastoreServer
chkconfig --list 

在这里插入图片描述
启动服务:service metastoreServer start 即可成功启动
在这里插入图片描述

参考博客

https://blog.csdn.net/qq_45016628/article/details/107188980
https://www.pianshen.com/article/22221740696/
https://blog.csdn.net/weixin_44422604/article/details/107189022

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值