HIVE之-------metastore
Posted 女菜鸟成长记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HIVE之-------metastore相关的知识,希望对你有一定的参考价值。
1、名词解释:
metastore:元数据集仓库,是Hive元数据的集中存放地,包括两个部分:服务和后台数据存储
URI:uniform resource identifier ,是一个用于标识某一互联网资源名称的字符串,该标识允许用户对任意(包括本地和互联网)的资源通过特定的协议进行交互操作
JDBC:Java Database Connectivity ,java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成
.jdo :JavaData.object 一个用于存取某种数据仓库中的对象的标准化API
2、metastore的三种配置
2.1分类以及配置
分为三种:embedded metastore (内嵌式)、local metastore(本地)、remote metastore (远程)(如下图所示:)
embedded metastore
默认情况下,metastore服务和hive服务运行在同一个JVM中,它包含一个内嵌的以本地磁盘为存储的derby数据库实例。
这种方式是最简单的存储方式,只需要在hive-site.xml做如下配置便可:
执行初始化命令:
schematool -dbType derby -initSchema
查看初始化后的信息:
schematool -dbType derby -info
配置完成后就可在shell中以CLI的方式访问hive 进行操作验证
注:
使用derby存储方式时,运行hive会在当前目录生成一个derby文件和一个metastore_db目录。这种存储方式的弊端是在同一个目录下同时只能有一个hive客户端能使用数据库,否则会提示错误信息。
local metastore
本地数据集仓库以mysql数据库为例,此存储方式需要在本地运行一个mysql服务器,hive-site.xml作如下配置:(需要将mysql的jar包拷贝到$HIVE_HOME/lib目录下))
如果是第一次需要执行初始化命令:
schematool -dbType mysql -initSchema
查看初始化后信息
schematool -dbType mysql -info
初始化后查看mysql中表情况:
show tables;
remote metastore
远程配置中,一个或者多个metastore服务器和hive服务运行在不同的进程内。数据库可以完全置于防火墙后,客户端不需要数据库凭据(用户名和密码),从而提供了更好的可管理性和安全。
以Mysql数据库为例:创建好用户:hive;database:hive_meta
(需要把mysql的驱动包copy到目录 <HIVE_HOME>/lib 中)
Remote方式需要分别配置服务端和客户端的配置文件:
服务端hive-site.xml的配置文件:
如果是第一次需要执行初始化命令:
schematool -dbType mysql -initSchema
客户端的配置文件:
hive metastore 服务端启动命令:
hive --service metastore -p <port_num>
如果不加端口默认启动:hive --service metastore
,则默认监听端口是:9083 ,注意客户端中的端口配置需要和启动监听的端口一致。服务端启动正常后,客户端就可以执行hive操作了。
2.2 重要的metastore属性
从以上的配置文件可以看出,针对metastore的配置存在以下几个重要的配置属性
URL(相对于fs.default.name(HDFS的默认路径)的目录,托管表(由hive负责管理的数据,Hive把数据移入到仓库目录,即warehous directory)就储存在这里)
1)属性名称:hive.metastore.warehouse.dir (HIVE的数据仓库的目录是hdfs上的)
类型:URI
默认值:/user/hive/warehouse
2)属性名称:hive.metastore.uris(hive的数据仓库目录,这里指多个数据仓库的情况下))
类型:逗号分隔的URI,无默认值
如果不设定,就使用当前的metastore,否则连接到由URI列表指定要连接的远程metastore服务器。如果有多个远程metastore服务器,客户端会以询轮(round robin)的方式连接
3)属性名称:hive.jdo.option.ConnectionURL(metastore数据库的JDBC 的URL
类型:URI
默认值:jdbc:derby:;databaseName=metastored b; create=true
注:如果是本地mysql,这边就设置为:jdbc:mysql://host/dname? createDatabaseIfNotExist=true
驱动
属性名称 javax.jdo.option.ConnectionDriverName(JDBC驱动器的类名)
类型:字符串
默认值:org.apache.derby.jdbc.EmbeddedDriver
注:如果是本地mysql,这边就设置为:com.mysql.jdbc.Driver
用户名、密码
1)属性名称:javax.jdo.option.ConnectionDriverName(JDBC用户名)
类型:字符串
默认值:APP
2)属性名称:javax.jdo.option.ConnectionDriverPsssword(JDBC密码)
类型:字符串
默认值:mine
以上是关于HIVE之-------metastore的主要内容,如果未能解决你的问题,请参考以下文章
大数据(Hive的MetaStore切换及其Hive的语法细节)
derby 中的 Hive Metastore 与 Hive/Warehouse 中的 Hive Metastore 有啥区别?
远程连接元数据库hive.metastore.uris怎么写