Hive中metastore(元数据存储)三种方式区别和搭建

来源:互联网 发布:数据安全保护策略 编辑:程序博客网 时间:2024/06/01 18:02

Hive中metastore(元数据存储)三种方式区别和搭建

Hive中metastore(元数据存储)的三种方式:

a)内嵌Derby方式b)Local方式c)Remote方式

1、内嵌Derby方式搭建

1.1、上传hive安装压缩文件到Linux主机的指定目录

1.2、解压hive压缩文件,到指定目录

[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

查找文件[root@node1 hadoop-2.5.1]# find ./ -name "jline*.jar"./share/hadoop/yarn/lib/jline-0.9.94.jar[root@node1 lib]# mv /opt/modules/hive-1.2.1/jline-2.12.jar /opt/modules/hadoop-2.5.1/share/hadoop/yarn/lib/[root@node1 ~]# cd /opt/modules/hadoop-2.5.1/share/hadoop/yarn/lib/删除jline-0.9.94.jar包[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环境变量

[root@node1 conf]# cp hive-env.sh.template hive-env.sh HADOOP_HOME=/opt/modules/hadoop-2.5.1[root@node1 conf]# vi hive-env.sh

1.5、修改/opt/modules/hive-1.2.1/conf目录下的hive-default.xml.template为hive-site.xml,增加配置

[root@node1 conf]# mv hive-default.xml.template hive-site.xml<property>  <name>javax.jdo.option.ConnectionURL</name>  <value>jdbc:derby:;databaseName=metastore_db;create=true</value>  </property>  <property>  <name>javax.jdo.option.ConnectionDriverName</name>  <value>org.apache.derby.jdbc.EmbeddedDriver</value>  </property>  <property>  <name>hive.metastore.local</name>  <value>true</value>  </property>  <property>  <name>hive.metastore.warehouse.dir</name>  <value>/opt/modules/hive-1.2.1/warehouse</value>  </property>  

1.6、配置hive环境变量

[root@node1 ~]# vi ~/.bash_profileexport HIVE_HOME=/opt/modules/hive-1.2.1export PATH=$PATH:$HIVE_HOME/bin

[root@node1 ~]# source ~/.bash_profile

1.7、启动hive

[root@node1 hive-1.2.1]# hive

1.8、derby模式出现的问题

发现内置默认的metastore存在问题(1.换执行路径后,原来的表不存在了。2.只能有一个用户访问同一个表)如:[root@node1 ~]# cd /opt/modules/hive-1.2.1/[root@node1 ~]# ./bin/hive hive> show tables;OKtclasstestclassTime taken: 3.012 seconds, Fetched: 2 row(s)[root@node1 ~]# cd /opt/modules/hive-1.2.1/bin[root@node1 ~]# hivehive> show tables;OKTime taken: 2.489 seconds一般不是用这个derby作为我们的元数据库,采用mysql的居多,因为derby数据库有个缺陷,就是只支持单连接,当然如果采用多连接的话需要进行切换目录。

2、本地mysql模式搭建

这种存储方式需要在本地运行一个mysql服务器,并作如下配置(下面两种使用mysql的方式,需要将mysql的jar包拷贝到$HIVE_HOME/lib目录下)。 

2.1、解压,修改HADOOP_HOME\lib目录下的jline-*.jar 变成HIVE_HOME\lib下的jline-2.12.jar。

查找文件[root@node1 hadoop-2.5.1]# find ./ -name "jline*.jar"./share/hadoop/yarn/lib/jline-0.9.94.jar[root@node1 lib]# mv /opt/modules/hive-1.2.1/jline-2.12.jar /opt/modules/hadoop-2.5.1/share/hadoop/yarn/lib/[root@node1 ~]# cd /opt/modules/hadoop-2.5.1/share/hadoop/yarn/lib/删除jline-0.9.94.jar包[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环境变量

HADOOP_HOME=/opt/modules/hadoop-2.5.1

2、3、修改/opt/modules/hive-1.2.1/conf目录下的hive-default.xml.template为hive-site.xml,增加配置

<property>    <name>hive.metastore.warehouse.dir</name>    <value>/usr/hive-1.2.1/warehouse</value>  </property>  <property>    <name>hive.metastore.local</name>    <value>true</value>  </property>  <property>    <name>javax.jdo.option.ConnectionURL</name>    <value>jdbc:mysql://192.168.230.10: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>123456</value>  </property>

hive --service metastore

2.4、上传mysql-connector-java-5.1.10.jar到/opt/modules/hive-1.2.1/lib目录下

2.5、安装Mysql

进入目录

2.5.1:解压压缩文件

[root@hive-matrix software]# unzip mysql-libs.zip

2.5.2:进入目录查看要安装的rpm源码包

[root@hive-matrix software]# cd mysql-libs

2.5.3:安装Mysql服务端

[root@hive-matrix mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm

出错:可能是系统中存在MySQL相关软件

2.5.4:查看系统是否安装过MySQL相关的软件

[root@hive-matrix mysql-libs]# rpm -qa|grep mysql

2.5.5:强制性卸载之前的MySQL相关软件

[root@hive-matrix mysql-libs]# rpm -e –nodeps mysql-libs-5.1.66-2.el6_3.x86_64

查看是否还存在MySQL的相关软件
[root@hive-matrix mysql-libs]# rpm -qa|grep mysql

2.5.6:安装Mysql服务端

[root@hive-matrix mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm

2.5.7:查看MySQL的密码

[root@hive-matrix ~]# sudo more /root/.mysql_secret

MySQL密码:HLvZqFKvyrzneWf2

进入目录
[root@hive-matrix ~]# cd /opt/software/mysql-libs

查看目录下安装包

2.5.8:查看mysql状态

[root@hive-matrix mysql-libs]# service mysql status

ps -aux|grep mysql
kill -9 21460

2.5.9:启动mysql服务

[root@hive-matrix mysql-libs]# service mysql start

查看mysql状态

2.6.1:设置mysql随着系统启动

[root@hive-matrix mysql-libs]# chkconfig mysql on

2.6.2:安装MySQL客户端

[root@hive-matrix mysql-libs]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm

2.6.3:连接mysql

[root@node1 mysql-libs]# mysql -uroot -pmHtNV9L9L37VYO5M

2.6.4:更改mysql登录密码

SET PASSWORD = PASSWORD(‘123456’);

2.6.5:退出mysql

exit

2.6.7:重新启动服务、同时重新登陆(使用设置的新密码)

[matrix@hive-matrix software]$ mysql -uroot -p123456

这个是远程连接,需要设置mysql能进行远程连接,
即使可以远程连接,你也需要告诉mysql那台需要进行连接也需要进行设置权限,
这个就是mysql基于安全的考虑
接下来我们登录mysql进行授权

mysql> use mysql;mysql> select User,Host,Password from user;

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

创建用户

CREATE USER 'root'@'192.168.230.10' IDENTIFIED BY '123456';CREATE USER 'root'@'192.168.230.14' IDENTIFIED BY '123456';CREATE USER 'root'@'192.168.230.1' IDENTIFIED BY '123456';CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY '123456';

这个是远程连接,需要设置mysql能进行远程连接,即使可以远程连接,你也需要告诉mysql那台需要进行连接也需要进行设置权限,这个就是mysql基于安全的考虑接下来我们登录mysql进行授权mysql> Grant all privileges on *.* to root@'%' identified by '123456';mysql> Grant all privileges on *.* to root@'192.168.230.10' identified by '123456';mysql> Grant all privileges on *.* to root@'192.168.230.14' identified by '123456';mysql> Grant all privileges on *.* to root@'192.168.230.1' identified by '123456';mysql> Grant all privileges on *.* to root@'127.0.0.1' identified by '123456';

mysql> flush privileges;

2.6.8授权好了,在进入/opt/modules/hive-1.2.1目录,启动hive

进入hive后,使用show tables命令查看,发现没有任何表

创建一张表

创建表的信息

hive> show create table emp;OKCREATE TABLE `emp`(  `empno` int,   `ename` string,   `job` string,   `mgr` int,   `hiredate` string,   `sal` double,   `comm` double,   `deptno` int)ROW FORMAT DELIMITED   FIELDS TERMINATED BY ',' STORED AS INPUTFORMAT   'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT   'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'LOCATION  'hdfs://matrix/usr/hive-1.2.1/warehouse/emp'TBLPROPERTIES (  'COLUMN_STATS_ACCURATE'='true',   'numFiles'='1',   'numRows'='0',   'rawDataSize'='0',   'totalSize'='96',   'transient_lastDdlTime'='1457655930')Time taken: 1.094 seconds, Fetched: 24 row(s)

2.6.9使用Navicat远程连接Linux主机上的Mysql数据库

2.7、进入mysql查看hive的元数据信息

mysql> use hive

mysql> create database hive;mysql> show tables;

mysql> select * from TBLS;

2.8、在navicat中使用命令行查看mysql中的hive数据库

失败!用户对hive数据库操作的权限

2.9、在mysql中设置允许root用户拥有对hive数据库全部权限

mysql> GRANT all ON hive.* TO root@'%' IDENTIFIED BY '123456';mysql> flush privileges;

0 0
原创粉丝点击