前言
hive的metastore默认是使用derby来作为metastore,但是derby有一个缺点是不能支持多用户链接,虽然你可以通过切换目录来支持,但是不同目录的metastore会不一致,所以这里使用mysql来作为hive的metastore。
在linux上安装mysql数据库
1、下载最新的mysql数据库,这里使用的版本是5.7.13,这里是使用二进制rpm进行安装
mysql-community-client-5.7.13-1.el7.x86_64.rpm
mysql-community-common-5.7.13-1.el7.x86_64.rpm
mysql-community-libs-5.7.13-1.el7.x86_64.rpm
mysql-community-server-5.7.13-1.el7.x86_64.rpm
mysql-connector-java-5.1.39.tar.gz #jdbc java驱动
2、上传到linux,并使用rpm命令安装,若出现库冲突,先把冲突的库删除
rpm -ivh mysql-community-common-5.7.13-1.el7.x86_64.rpm;
rpm -ivh mysql-community-libs-5.7.13-1.el7.x86_64.rpm ;
rpm -ivh mysql-community-client-5.7.13-1.el7.x86_64.rpm;
rpm -ivh mysql-community-server-5.7.13-1.el7.x86_64.rpm;
3、查看是否安装成功
[root@localhost ~]# rpm -qa | grep mysql
mysql-community-server-5.7.13-1.el7.x86_64
mysql-community-common-5.7.13-1.el7.x86_64
mysql-community-client-5.7.13-1.el7.x86_64
mysql-community-libs-5.7.13-1.el7.x86_64
4、启动mysql服务,这里我的linux环境是rhel-server-7.0-x86_64
[root@localhost ~]# service mysqld start Redirecting to /bin/systemctl start mysqld.service
5、初始化mysql的密码
a.编辑/etc/my.cnf配置文件,添加skip-grant-tables,取消密码验证
vi /etc/my.cnf
b.启动服务
service mysqld restart ;
c.命令行输入mysql进入命令行界面,修改密码
d.重新编辑/etc/my.cnf配置文件,去掉skip-grant-tables,登录需密码验证,并重启服务
e.登录进入mysql客户端
mysql -uroot -p123;
f.进入客户端之后,若使用切换数据库,例如use mysql出现
You must reset your password using ALTER USER statement before executing this statement
那是因为上面修改的密码相当于在mysql安装的时候的初始化的密码变成了我们修改的密码。所以在登录系统后mysql数据库要你修改原始密码
SET PASSWORD = PASSWORD('123');
g.退出mysql客户端,再重新登录,切换数据库
到此在linux上的mysql数据库安装成功,在这里为了允许远程客户端可以链到mysql数据库,需要修改下mysql数据库的登陆权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
配置mysql作为hive的metastore
1、进入到hive的配置文件目录
cd /home/cloud/hadoop/apache-hive-0.13.0-bin/conf
2、将hive-default.xml.template复制一份作为hive-site.xml
cp hive-default.xml.template hive-site.xml
hive默认是使用hive-default.xml.template作为配置文件,如果你想要自定义配置文件,需要自定义一个hive-site.xml
3、配置mysql的数据库链接,用户和密码
vi hive-site.xml;
配置信息如下:
javax.jdo.option.ConnectionURL
jdbc:mysql://192.168.137.101:3306/hive?createDatabaseIfNotExist=true&useSSL=false
JDBC connect string for a JDBC metastore
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
Driver class name for a JDBC metastore
javax.jdo.option.ConnectionUserName
root
username to use against metastore database
javax.jdo.option.ConnectionPassword
123
password to use against metastore database
JDBC connect string for a JDBC metastore
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
Driver class name for a JDBC metastore
javax.jdo.option.ConnectionUserName
root
username to use against metastore database
javax.jdo.option.ConnectionPassword
123
password to use against metastore database
配置该文件之前,注意要把hive-site.xml一些老的配置删除,即先把configuration节点中的配置先清空,再配置数据库链接
4、需要把mysql的驱动放到/home/cloud/hadoop/apache-hive-0.13.0-bin/lib目录下
5、启动hive
发现在mysql的数据库中生成了一个hive的数据,到此说明配置成功
而创建的数据库信息和表信息可以分别在hive数据库中的DBS和TBLS表中查看