Hive 之使用mysql作为hive的metastore

时间:2021-09-09 00:55:00

一.关于Hive元数据的说明

  • metastore是hive元数据的集中存放地
  • metastore默认使用内嵌的derby数据库作为存储引擎
  • Derby引擎的缺点:一次只能打开一个会话
  • 使用Mysql作为外置存储引擎,多用户同时访问

二.安装mysql

  • 删除linux上已经安装的mysql相关库信息。
[root@hadoop conf]#rpm -e xxxxxxx --nodeps
  • 执行命令
[root@hadoop conf]#rpm -qa |grep mysql 

检查是否删除干净

  • 执行命令
[root@hadoop conf]#rpm -i mysql-server-********

安装mysql服务端

  • 启动mysql 服务端,执行命令
[root@hadoop conf]#mysqld_safe &
  • 安装mysql客户端,执行命令
[root@hadoop conf]#rpm -i mysql-client-******** 
  • 设置root用户密码,执行命令
[root@hadoop conf]#mysql_secure_installation
  • 关于远程连接mysql
    mysql 远程授权命令
 grant all on hive.* to 'root'@'%' identified by 'admin';
flush privileges;

PS:
grant all on 数据库名.* to ‘数据库账户名’@’%’ identified by ‘密码’ with grant option;

  • 数据库名,表明哪个数据库正被你授权,* 可以表示任何数据库,*.*可以表示任何数据库中的任何表;
  • 数据库账户名,以哪个数据库账号登陆;
  • @,后边跟要授权的地址,表明在此地址登陆时进行授权;
  • %,表示任何远程登陆地址,这里也可以是一个具体的值,表明只有在这个地址上进行登陆时才授予权限;
  • 密码,跟在identified by 后边,表明以这个密码进行登陆时的授权;

二.配置

  • 把mysql的jdbc驱动放置到hive的lib目录下
  • 修改hive-site.xml文件,修改内容如下:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop0:3306/hive?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>admin</value>
</property>