大象教程
首页
Spark
Hadoop
HDFS
MapReduce
Hive
Hive 教程
Hive 教程
Hive 安装(基于Ubuntu系统)
Hive 架构
Hive 内置函数
Hive UDF 简介
Hive DDL 命令
Hive 视图
Hive 索引
Hive Metastore 的三种配置方式
Hive 数据模型
Hive 数据类型
Hive 操作符
Hive SerDe(序列化与反序列化)
Hive 数据分区
Hive 分桶
Hive 分区与分桶的比较
Hive Join 的原理与机制
Hive map Join
Hive bucket map join
#Hive Metastore 的三种配置方式 metastore 是 Hive 元数据的集中存放地。metastore 元数据存储主要体现在两个方面:服务和后台数据的存储。元数据包含用 Hive 创建的 database、table 等的元信息。元数据存储在关系型数据库中。如 Derby、MySQL 等。 客户端连接 metastore 服务,metastore 再去连接 MySQL 数据库来存取元数据。有了 metastore 服务,就可以有多个客户端同时连接,而且这些客户端不需要知道 MySQL 数据库的用户名和密码,只需要连接 metastore 服务即可。 ##Metastore 的三种配置方式 由于元数据不断地修改、更新,所以 Hive 元数据不适合存储在 HDFS 中,一般存在 RDBMS 中,如 Mysql、Derby。元数据的存储支持三种不同配置方式: - 内嵌配置 - 本地配置 - 远程配置 ###内嵌模式 默认情况下,metastore 服务和 Hive 的服务运行在同一个 JVM 中,包含了一个内嵌的以本地磁盘作为存储的Derby( Hive 自带的数据库)数据库实例。同时,这种配置也被称为内嵌配置。但是这种方式的不好之处就在于每次只有一个内嵌的 Derby 数据库可以访问某个磁盘上的数据文件,也就是说一次只能为每个 metastore 打开一个 hive 会话。如果尝试连接多个,会报错。这样效率很低。 ![hive metastore](/media/editor/file_1574260544000_20191120223548908881.png "hive metastore") ###本地模式 如果要支持多会话,或者多用户的话,需要使用一个独立的数据库(比如 mysql 比较常用),这种配置方式称为**本地 metastore 配置**。虽然这种方式 Hvie 服务和 Metastore 服务仍然在一个 JVM 进程中,但连接的却是另外一个进程中运行的数据库,在同一台机器上或者远程机器上。任何 JDBC 兼容的数据库都可以通过 `javax.jdo.option.*` 配置属性来供 metastore 使用。 ![hive metastroe](/media/editor/file_1574260593000_20191120223638750997.png "hive metastroe") 本地模式具体配置示例: ```xml
hive.metastore.warehouse.dir
/user/hive_remote/warehouse
hive.metastore.local
true
javax.jdo.option.ConnectionURL
jdbc:mysql://localhost/hive_remote?createDatabaseIfNotExist=true
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
hive
javax.jdo.option.ConnectionPassword
password
``` ###远程配置 还有一种配置是**远程 metastore 配置**,这种配置情况下,一个或多个 metastore 服务器和 Hive 服务运行在不同的进程中。这样一来,数据库层可以完全置于防火墙后,客户端则不需要数据库凭证(密码账号),从而提供了更好的可管理性和安全。可以通过 `hive.metastore.uris` 设置为 metastore 服务器 URI(如果有多个服务器,可以用逗号分割),把 hive 服务设为使用远程 metastore 服务器的URI的格式为:thrift://host:port。 注意,仅连接远程的 mysql 并不能称之为“远程模式”,是否远程指的是 metastore 和 hive 服务是否在同一进程内。 ![hive远程metastore配置](/media/editor/file_1574260664000_20191120223748792913.png "hive远程metastore配置") 远程模式配置示例如下: ```xml
hive.metastore.warehouse.dir
/user/hive/warehouse
javax.jdo.option.ConnectionURL
jdbc:mysql://192.168.1.214:3306/hive_remote?createDatabaseIfNotExist=true
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
hive
javax.jdo.option.ConnectionPassword
password
hive.metastore.local
false
hive.metastore.uris
thrift://192.168.1.188:9083
```
加我微信交流吧