首先放出整个集群的拓扑结构
然后是本文使用的版本号
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
- 将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及修改密码
- 设置MySQL
启动MySQL
systemctl start mysqld
设置开机自启
systemctl enable mysqld
systemctl daemon-reload - 修改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