hive元数据库配置、metadata

QQ交流群:335671559,欢迎交流


一、什么是hive元数据?

hive元数据就是hive的一些基本的元素, 主要包括 hive表的基本属性, 如下
(1)hive表的数据库名、表名、字段名称与类型、分区字段与类型
(2)表的分区,分区的属性location等
(3)serdeproperties, tblproperties等等
可以通过
desc formatted tablename
查看表有哪些属性
二、hive默认元数据库Derby(嵌入模式)
hive-default.xml通过如下配置设置

  1.   <name>javax.jdo.option.ConnectionURLname>  
  2.   <value>jdbc:derby:;databaseName=metastore_db;create=truevalue>  
  3.   <description>JDBC connect string for a JDBC metastoredescription>  
  4. property>  
  5.   
  6. <property>  
  7.   <name>javax.jdo.option.ConnectionDriverNamename>  
  8.   <value>org.apache.derby.jdbc.EmbeddedDrivervalue>  
  9.   <description>Driver class name for a JDBC metastoredescription>  
  10. property>  
    
    Apache Derby非常小巧,核心部分derby.jar只有2M,所以既可以做为单独的数据库服务器使用,也可以内嵌在应用程序中使用。所以hive采用了Derby作为一个内嵌的元数据库,可以完成hive安装的简单测试。
    hive安装完成之后,就可以在hive shell中执行一些基本的操作,创建表、查询等等。如果你细心的话,就会发现一个问题:
    当在某个目录下启动终端,进入hive shell时,hive默认会在当前目录下生成 一个 derby 文件 一个 metastore_db 目录 ,这两个文件主要保存刚刚在shell中操作的一些sql的结果,比如新建的表、添加的分区等等
这种存储方 式的带来 弊端
    1.在同一个目录下同时只能有一个hive客户端能使用数据库
    2. 切换目录 启动新的shell,无法查看之前创建的表,不能实现表数据的共享
三、使用mysql作为元数据库
    由于使用默认的元数据库有些弊端,所以采用mysql保存hive元数据解决上面的问题。hive所有的元数据都保存在同一个库里,这样不同开发者创建的表可以实现共享。

mysql配置又分为几种情况:
(1)mysql部署在hive服务器,使用本地服务(测试、学习使用)
hive元数据库配置、metadata_第1张图片
(2) mysql部署在其他机器,hive服务器开启metadata服务,在hive服务器上操作hive
hive元数据库配置、metadata_第2张图片
(3) mysql部署在其他机器, hive服务器开启metadata服务,在hive客户端访问hive的metadata服务
hive元数据库配置、metadata_第3张图片
配置 mysql
    配置mysql时,首先要把 mysql-jdbc-driver.jar 拷贝到 $HIVE_HOME/lib 目录下,修改 hive-default.xml名字为 hive-site.xml
第一种情况, hive-site.xml 配置如下
  1. <property>  
  2.   <name>hive.metastore.localname>  
  3.   <value>truevalue>  
  4. property>  
  5.    
  6. <property>  
  7.   <name>javax.jdo.option.ConnectionURLname>  
  8.   <value>jdbc:mysql://localhost/hive?createDatabaseIfNotExist=truevalue>  
  9. property>  
  10.    
  11. <property>  
  12.   <name>javax.jdo.option.ConnectionDriverNamename>  
  13.   <value>com.mysql.jdbc.Drivervalue>  
  14. property>  
  15.    
  16. <property>  
  17.   <name>javax.jdo.option.ConnectionUserNamename>  
  18.   <value>hivevalue>  
  19. property>  
  20.    
  21. <property>  
  22.   <name>javax.jdo.option.ConnectionPasswordname>  
  23.   <value>passwordvalue>  
  24. property> 

第二种情况 hive-site.xml 配置
  1. <property>  
  2.   <name>javax.jdo.option.ConnectionURLname>  
  3.   <value>jdbc:mysql://192.168.0.1:3306/hive?createDatabaseIfNotExist=truevalue>  
  4. property>  
  5.    
  6. <property>  
  7.   <name>javax.jdo.option.ConnectionDriverNamename>  
  8.   <value>com.mysql.jdbc.Drivervalue>  
  9. property>  
  10.    
  11. <property>  
  12.   <name>javax.jdo.option.ConnectionUserNamename>  
  13.   <value>hivevalue>  
  14. property>  
  15.    
  16. <property>  
  17.   <name>javax.jdo.option.ConnectionPasswordname>  
  18.   <value>passwordvalue>  
  19. property>  
  20.   
  21. <property>  
  22.   <name>hive.metastore.localname>  
  23.   <value>falsevalue>  
  24. property>  
  25.   
  26. <property>  
  27.   <name>hive.metastore.urisname>  
  28.   <value>thrift://192.168.0.101:9083value>  
  29. property>


第三种情况 hive-site.xml 配置
   1、 服务端配置
 
  1. <property>  
  2.   <name>javax.jdo.option.ConnectionURLname>  
  3.   <value>jdbc:mysql://192.168.1.214:3306/hive?createDatabaseIfNotExist=truevalue>  
  4. property>  
  5.    
  6. <property>  
  7.   <name>javax.jdo.option.ConnectionDriverNamename>  
  8.   <value>com.mysql.jdbc.Drivervalue>  
  9. property>  
  10.    
  11. <property>  
  12.   <name>javax.jdo.option.ConnectionUserNamename>  
  13.   <value>hivevalue>  
  14. property>  
  15.    
  16. <property>  
  17.   <name>javax.jdo.option.ConnectionPasswordname>  
  18.   <value>passwordvalue>  
  19. property>  
   
    2、客户端配置
  1. <property>  
  2.   <name>hive.metastore.localname>  
  3.   <value>falsevalue>  
  4. property>  
  5.   
  6. <property>  
  7.   <name>hive.metastore.urisname>  
  8.   <value>thrift://192.168.0.101:9083value>  
  9. property>

在使用hive开始前,如果mysql是部署在远端且  hive.metastore.local=false
则需要启动hive的metadata服务
  1. $ hive --service metastore   


客户端使用hive命令即可

  1. root@local:~$ hive   
  2. hive> show tables;  
  3. OK  
  4. Time taken: 0.7 seconds  
  5. hive>  

你可能感兴趣的:(hive,Hive实战)