Hive中metastore(元数据存储)三种方式区别和搭建
1 | Hive中metastore(元数据存储)的三种方式: |
1.内嵌Derby方式搭建
1.1.上传hive安装压缩文件到Linux主机的指定目录

1.2.解压hive压缩文件,到指定目录
1 | [root@node1 software]# tar -zxf apache-hive-1.2.1-bin.tar.gz -C /opt/modules |
1.3.修改/opt/modules/hadoop-2.5.1/share/hadoop/yarn/lib/目录下的jline-0.9.94.jar
查找文件
1 | [root@node1 hadoop-2.5.1]# find ./ -name "jline*.jar" |
1 | [root@node1 lib]# mv /opt/modules/hive-1.2.1/lib/jline-2.12.jar /opt/modules/hadoop-2.5.1/share/hadoop/yarn/lib/ |
删除jline-0.9.94.jar包
1 | [root@node1 lib]# rm -rf jline-0.9.94.jar |
1.4.修改/opt/modules/hive-1.2.1/conf目录下的hive-env.sh.template为hive-env.sh,添加HADOOP_HOME环境变量
1 | [root@node1 conf]# cp hive-env.sh.template hive-env.sh |

1.5.修改/opt/modules/hive-1.2.1/conf目录下的hive-default.xml.template为hive-site.xml,增加配置
1 | [root@node1 conf]# mv hive-default.xml.template hive-site.xml |
1 | <property> |

1.6.配置hive环境变量
1 | [root@node1 ~]# vi ~/.bash_profile |

1 | [root@node1 ~]# source ~/.bash_profile |
1.7.启动hive
1 | [root@node1 hive-1.2.1]# hive |

1.8.derby模式出现的问题
1 | 发现内置默认的metastore存在问题(1.换执行路径后,原来的表不存在了。2.只能有一个用户访问同一个表) |
1 | [root@node1 ~]# cd /opt/modules/hive-1.2.1/bin |
2.本地mysql模式搭建
1 | 这种存储方式需要在本地运行一个mysql服务器,并作如下配置 |
2.1.解压,修改HADOOP_HOME\lib目录下的jline-*.jar 变成HIVE_HOME\lib下的jline-2.12.jar。
查找文件
1 | [root@node1 hadoop-2.5.1]# find ./ -name "jline*.jar" |
删除jline-0.9.94.jar包
1 | [root@node1 lib]# rm -rf jline-0.9.94.jar |
2.2.修改/opt/modules/hive-1.2.1/conf目录下的hive-env.sh.template为hive-env.sh,添加HADOOP_HOME环境变量
1 | HADOOP_HOME=/opt/modules/hadoop-2.5.1 |
2.3.修改/opt/modules/hive-1.2.1/conf目录下的hive-default.xml.template为hive-site.xml,增加配置
1 | <property> |

2.5.在mysql中创建hive数据库
1 | mysql> create database hive; |
启动hive
1 | hive --service metastore |
2.6.上传mysql-connector-java-5.1.10.jar到/opt/modules/hive-1.2.1/lib目录下

2.7.安装Mysql
进入目录
2.7.1:解压压缩文件
1 | [root@hive-matrix software]# unzip mysql-libs.zip |
####2.5.2:进入目录查看要安装的rpm源码包
1 | [root@hive-matrix software]# cd mysql-libs |
2.5.3:安装Mysql服务端
1 | [root@hive-matrix mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm |
1 | 出错:可能是系统中存在MySQL相关软件 |
2.5.4:查看系统是否安装过MySQL相关的软件
1 | [root@hive-matrix mysql-libs]# rpm -qa|grep mysql |
2.5.5:强制性卸载之前的MySQL相关软件
1 | [root@hive-matrix mysql-libs]# rpm -e --nodeps mysql-libs-5.1.66-2.el6_3.x86_64 |
1 | 查看是否还存在MySQL的相关软件 |
2.5.6:安装Mysql服务端
1 | [root@hive-matrix mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm |
2.5.7:查看MySQL的密码
1 | [root@hive-matrix ~]# sudo more /root/.mysql_secret |
2.5.8:查看mysql状态
1 | [root@hive-matrix mysql-libs]# service mysql status |
1 | ps -aux|grep mysql |
2.5.9:启动mysql服务
1 | [root@hive-matrix mysql-libs]# service mysql start |
2.6.1:设置mysql随着系统启动
1 | [root@hive-matrix mysql-libs]# chkconfig mysql on |
2.6.2:安装MySQL客户端
1 | [root@hive-matrix mysql-libs]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm |
2.6.3:连接mysql
1 | [root@node1 mysql-libs]# mysql -uroot -pmHtNV9L9L37VYO5M |
2.6.4:更改mysql登录密码
1 | SET PASSWORD = PASSWORD('123456'); |
2.6.5:退出mysql
1 | exit |
2.6.7:重新启动服务.同时重新登陆(使用设置的新密码)
1 | [matrix@hive-matrix software]$ mysql -uroot -p123456 |
1 | 这个是远程连接,需要设置mysql能进行远程连接, |

1 | mysql> UPDATE user SET Password=PASSWORD('123456') where USER='root'; |

1 | 这个是远程连接,需要设置mysql能进行远程连接, |

1 | mysql> flush privileges; |

1 | mysql> select * from mysql.user where user='root' and host='%'\G |
2.6.8授权好了,在进入/opt/modules/hive-1.2.1目录,启动hive
1 | 进入hive后,使用show tables命令查看,发现没有任何表 |
2.6.9使用Navicat远程连接Linux主机上的Mysql数据库

2.7.进入mysql查看hive的元数据信息
1 | mysql> use hive |

1 | mysql> create database hive; |

1 | mysql> select * from TBLS; |

2.8.在navicat中使用命令行查看mysql中的hive数据库
1 | 失败!用户对hive数据库操作的权限 |

2.9.在mysql中设置允许root用户拥有对hive数据库全部权限
1 | mysql> GRANT all ON hive.* TO root@'%' IDENTIFIED BY '123456'; |

1 | GRANT all ON hive.* TO root@'master' IDENTIFIED BY '123456'; |
1 | 这个是由于我的mysql不再本地(默认使用本地数据库),这里需要配置远端元数据服务器 |
本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2016/02/12/Hive中metastore(元数据存储)三种方式区别和搭建/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
知识 & 情怀 | 二者兼得