之前一直用的CentOS7,但是因为CentOS7停止维护了,老师上课时要求使用CentOS9Stream。我在配置环境时发现了一些环境配置的差异,CentOS9Stream上并不能按照完全相同的步骤来完成本地部署,也就是基于本地Mysql数据库的Hive部署方式。于是我花了点时间重新配通了Hive本地部署,写下这篇文章记录。
首先解压压缩包。解压完后第一步仍然是消除hadoop与hive的guava.jar版本差异,将版本较高的替换掉版本低的,使hive与hadoop的jar包版本相同即可,路径分别如下:
hive/lib/guava-?.jar
hadoop/share/hadoop/common/lib/guava-?.jar
第二步可以先配置环境变量:
#HIVE_HOME
export HIVE_HOME=/export/server/hive //修改对应路径
export PATH=$PATH:$HIVE_HOME/bin
然后初始化元数据库:
bin/schematool -dbType derby -initSchema //执行hivebin文件夹下的程序,如果上一步添加了环境变量就可以不用指定文件路径,直接使用schematool即可
安装Mysql数据库,直接使用yum命令下载安装即可,好像是只能使用Mysql8.0,我安装Mysql5.7报了libexec.so6啥的错,网上搜了一些办法最终也没解决,所以最好直接用8.0吧。这一步注意如果系统里已经有5.7版本的Mysql了需要删掉:
不确定的话可以通过yum命令查看:yum list installed | grep mysql
使用yum命令删除对应服务,例如:yum remove mysql-server
安装命令如下,版本默认是8.0:yum -y install mysql-server
安装完成后,Mysql是没有设置密码的,需要修改密码,修改前需要先下载validate插件:
检查Mysql服务是否启动:systemctl status mysqld //若没启动,将status换为start启动即可,最好再换为enable设置自启
进入Mysql:mysql -uroot -p
下载插件:INSTALL PLUGIN validate_password SONAME 'validate_password.so';
修改密码:SET GLOBAL validate_password_length=4; //设置密码长度
SET GLOBAL validate_password_policy=low; //设置密码安全等级
SET password=password('8888'); //设置密码
设置完成后,退出Mysql重新使用新密码进入,配置hive元数据存储到Mysql:
设置Mysql远程访问:
use mysql;
update user set host='%' where user='root';
新建hive_db数据库作为Hive的元数据存储地址:create database hive_db;
创建Hive访问用户:create user hive(用户名) identified by '8888'(密码);
赋予Hive用户对所有数据库所有表的所有权限且任何地址都能建立连接“%”,并具有授予权:grant all privileges on *.* to hive@'%' with grant option;
将Mysql的jdbc驱动拷贝到hive的lib目录下,因为我们下载的是Mysql8.0,所以驱动也要是8.0版本,不用具体到小版本。
接下来在hive的conf文件夹下创建hive-site.xml文件,因为Mysql版本不一样,里面的内容也和5.7写法略微不同,下面的配置文件仅供参考,根据需求补充必要的配置项即可:
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop1:3306/hive_db?allowPublicKeyRetrieval=true&useSSL=false</value>
</property>
<!-- jdbc连接的Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<!-- jdbc连接的username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<!-- jdbc连接的password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>8888</value>
</property>
<!--元数据服务端口配置-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop1:9083</value>
</property>
</configuration>
最后初始化数据库即可:
bin/schematool -dbType mysql -initSchema -verbose
启动命令如下:
hive --metastore service //该命令执行后需要持续运行,因此没有结果是正常的,不是卡了,开新选项卡继续操作就行。
hive