centos7下安装Hive+mysql

背景:

已经安装hadoop集群,在hadoop基础上安装hive,继而安装mysql,通过jdbc使hive连接mysql库。后续实验可以尝试hive连接到postgres或者oracle等常用数据库。

Hive的使用依赖于Hadoop,本质上是将hql发送给hadoop,hadoop中将hql转换为MapReduce进行任务的执行。故而Hive的安装需要Hadoop处于运行状态。

本次实验为三台集群,Hadoop106  Hadoop107 Hadoop108,在Hadoop106 上安装Hive及Mysql。

Hive安装包+Mysql安装包+mysql-connector链接如下

https://pan.baidu.com/s/1vpoLdfXgWWwaJ968kJQVyA?pwd=zml1 提取码:zml1

放到服务器上 路径可以自己设定,只是暂时存放

 首先安装Hive

本实验将hive安装在/opt/module下,路径可自己选择,记好就行

解压安装包到执行安装目录 /opt/module

[atguigu@hadoop106 sofrware]$tar -zxvf apache-hive-3.1.2-bin.tar.gz  -C /opt/module

[atguigu@hadoop106 sofrware]$cd ../module/

将hive安装目录改名为/hive

[atguigu@hadoop106 sofrware]$mv apache-hive-3.1.2-bin/ hive/

[atguigu@hadoop106 sofrware]$cd hive

配置环境变量

[atguigu@hadoop106 sofrware]$sudo vim /etc/profile.d/my_env.sh

添加如下内容

#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
保存退出,使环境变量生效

[atguigu@hadoop106 sofrware]$source /etc/profile.d/my_env.sh

查看是否生效

[atguigu@hadoop106 sofrware]$echo $HIVE_HOME

 配置生效!

初始化Hive

[atguigu@hadoop106 hive]$ bin/schematool -dbType derby -initSchema

执行初始化报错,如下所示

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)

...

报错原因:hadoophive的两个guava.jar版本不一致,两个位置分别位于下面两个目录:

- /opt/module/hive/lib/

- /opt/module/hadoop-3.1.3/share/hadoop/common/lib

删除低版本的那个,将高版本的复制到低版本目录下   

[atguigu@hadoop106 sofrware]$ ls -l /opt/module/hadoop-3.1.3/share/hadoop/common/lib | grep guava*

[atguigu@hadoop106 sofrware]$ ls -l /opt/module/hive/lib/ | grep guava*

[atguigu@hadoop106 sofrware]$ mv /opt/module/hive/lib/guava-19.0.jar /opt/module/hive/lib/guava-19.0.bak

[atguigu@hadoop106 sofrware]$ cp /opt/module/hadoop-3.1.3/share/hadoop/common/lib/guava-27.0-jre.jar /opt/module/hive/lib/guava-27.0-jre.jar

再次执行初始化执行成功显示

Initialization script completed

schemaTool completed

执行成功后在hive根目录会生成metastore_db。这是derby数据库数据

执行hive,进行操作验证

[atguigu@hadoop106 hive]$ hive

hive安装成功。

但是到这里,hive使用的库为自带的默认derby库。

接下来安装mysql并让hive连接到mysql进行操作

安装mysql

卸载已经存在的mysql

安装前注意事项,由于机器之前安装过mysql或者存在系统自带的mysql版本,进行安装前我们需要先清理之前的mysql再进行安装!一定注意。

执行rpm -qa | grep mariadb

如果存在,则通过命令删除

sudo rpm -e –nodeps mariadb-libs

继续执行

rpm -qa|grep -i mysql

执行结果为

在这里插入图片描述

 如果发现存在上述东西,则需要删除已经安装的MySQL

删除相关应用

yum remove MySQL-client-5.5.40-1.linux2.6.x86_64

yum remove MySQL-server-5.5.40-1.linux2.6.x86_64

查看文件名中含有MySQL的文件

find / -name mysql

在这里插入图片描述

依次执行 rm -rf 路径删除文件

删除其他有关MySQL服务

//mysql的配置文件

rm -rf /etc/my.cnf

//如果不删除这个文件,则重新安装的Mysql将无法设置password

rm -rf /var/log/mysqld.log

安装mysql

继续在hadoop106服务器上安装。

解压下载的mysql安装包

tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

执行过程如下

安装mysql需要的服务

当前目录依次执行以下命令

sudo rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
 

安装完成,接下来进行操作

[atguigu@hadoop106 sofrware]$ cat /etc/my.cnf

 进入到如下目录

[atguigu@hadoop106 sofrware]$ cd /var/lib/mysql

执行

[atguigu@hadoop106 sofrware]$ sudo rm -rf ./*

在mysql下执行初始化

1.[atguigu@hadoop106 mysql]$ sudo --initialize --user=root

2.查看生成的临时密码

[atguigu@hadoop106 mysql]$ sudo cat /var/log/mysqld.log

 这是生成的临时密码,需要记住

3.启动mysql服务

[atguigu@hadoop106 mysql]$ sudo systemctl start mysqld

4.使用刚刚的临时密码登录mysql数据库

(这里需要注意的是,若临时密码存在特殊符号,需要加上单引号)

[atguigu@hadoop106 mysql]$ mysql -uroot -p'M6weK(vwpX&7'

5.登陆成功,修改密码

mysql>set password = password("root");

执行成功

 6.修改权限,可以允许其他ip或者服务登录mysql

mysql> update mysql.user set host='%' where user = 'root';

mysql> flush privileges;

7.测试使用Navicat连接刚刚创建的mysql数据库

连接成功

 Hive连接Mysql

驱动拷贝

hive连接mysql是通过jdbc驱动进行连接的,所以需要我们将mysql-connector放到hive的lib中去

执行cp mysql-connector-java-5.1.27-bin.jar /opt/module/hive/lib

 接下来修改Hive的配置文件即可

配置Metastore

 将如下内容复制到hive-site.xml文件中

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://hadoop106:3306/metastore?createDatabaseIfNotExist=true</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
   <value>com.mysql.jdbc.Driver</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>root</value>
</property>


<property>
  <name>hive.metastore.schema.verification</name>
  <value>false</value>
</property>

<property>
  <name>hive.metastore.event.db.notification.api.auth</name>
  <value>false</value>
</property>
</configuration>
 

登录mysql数据库

[atguigu@hadoop106 conf]$  mysql -uroot -proot

创建新的元数据库

mysql> create database metastore;

 初始化Hive元数据

[atguigu@hadoop106 conf]$ schematool -initSchema -dbType mysql -verbose

初始化成功,启动Hive验证

[atguigu@hadoop106 conf]$ hive

配置完成。

Hive安装后成功连接到Mysql数据库。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值