目录
前言:
博主使用的环境是Ubuntu22.04 Hive3.1.2 MySQL8.0.34 hadoop3.3.0
由于Ubuntu20安装不了MySQL5,且MySQL5于MySQL8版本之间有极大的不兼容性,因此应该使用MySQL8的连接方式来连接Hive和MySQL,其中包括更换Hive jdbc驱动与更改数据源驱动类
1.安装MySQL
首先应该明确一点:Ubuntu从18版本开始就与MySQL5.7不相兼容了,使用Ubuntu22.04只能安装MySQL8以上的版本
博主这里安装的是8.0.34
安装MySQL前请安装MySQL的两个依赖库,保证安装顺利
sudo apt install -y libmecab2
sudo apt install -y libaio1
安装MySQL
sudo apt update
sudo apt install mysql-server
安装过程设置root密码,如直接跳过密码设置过程导致root为空密码登录建议安装tar包版本MySQL
启动MySQL服务
sudo service mysql start
关闭MySQL服务(以下过程请不要随意停止MySQL服务,请保持MySQL服务开启状态)
sudo service mysql stop
登录MySQL
mysql -u root -p
输入之前设置好的密码
出现mysql>
即为安装成功
安装tar包版本MySQL请移步以下文章,博主亲测有用
进入MySQL后创建hive数据库
create database hive;
查看数据库
show databases;
出现名为hive的数据库即可
2.安装Hive
将hive安装包解压到对应目录下即可,博主的安装路径是/usr/local/apache-hive-3.1.2-bin
(1)配置环境变量
sudo gedit ~/.bashrc
在打开的文件中添加以下环境变量
export HIVE_HOME=/usr/local/apache-hive-3.1.2-bin
export PATH=$PATH:$HADOOP_HOME/sbin:$HIVE_HOME/bin
刷新环境变量
source ~/.bashrc
(2)配置hive-site.xml
打开apache-hive-3.1.2-bin/conf/hive-site.xml文件(没有就自己创建)
在文件中添加以下配置,注意要放在<configuration></configuration>这两个标签之间
由于我们要连接的数据库是MySQL8,因此数据源驱动类需要加.cj--> com.mysql.cj.jdbc.Driver
注意在xxxxx处修改为自己的MySQL密码
<property>
<name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExsit=true;characterEncoding=UTF-8</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>xxxxx</value>
</property>
<property>
<name>datanucleus.readOnlyDatastore</name>
<value>false</value>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>false</value>
</property>
<property>
<name>datanucleus.autoCreateSchema</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoCreateTables</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoCreateColumns</name>
<value>true</value>
</property>
(3)配置Hadoop的core-site.xml文件
在该文件中加入以下配置
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
(4)重点!将Hive中的Jdbc驱动更换
由于Hive3.1.2默认的jdbc驱动是5.1.32,该驱动是用于连接MySQL5版本数据库,并不适用于MySQL8版本,因此应使用适用于MySQL8的mysql-connector-java-8.0.x.jar替换掉Hive的5.1.32驱动。
jdbc8.0下载地址MySQL :: Download MySQL Connector/J (Archived Versions)
博主使用的是mysql-connector-java-8.0.30.jar
将该jar包导入到apache-hive-3.1.2-bin/lib下,并将原有的mysql-connector-java-5.1.32.jar删除
(5)初始化元数据库
schematool -dbType mysql -initSchema
如果出现权限不足的问题请移步-->http://t.csdnimg.cn/hjBM5
3.启动Hive
启动Hadoop
start-all.sh
启动hive
hive
出现权限不够的问题请移步-->http://t.csdnimg.cn/hjBM5
出现hive>
即为启动成功
使用sql访问hive
show databases;
访问成功
Hive安装完毕。
一点小补充
为root用户授权远程登录
登录mysql
mysql -u root -p
创建允许远程访问的用户
CREATE USER 'root'@'%' IDENTIFIED BY '密码';
为用户授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
刷新权限
FLUSH PRIVILEGES;
退出mysql
EXIT;
修改MySQL配置文件
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
更改bind-address值(没有就自行添加)
bind-address = 0.0.0.0
重启MySQL服务
sudo systemctl restart mysql