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

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_profile


export HIVE_HOME=/opt/modules/hive-1.2.1
export 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;
OK
tclass
testclass
Time taken: 3.012 seconds, Fetched: 2 row(s)



[root@node1 ~]# cd /opt/modules/hive-1.2.1/bin
[root@node1 ~]# hive
hive> show tables;
OK
Time 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;
OK
CREATE 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;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值