Hive的Metastore三种配置方式

metastore是Hive元数据的存储中心,可以使用内嵌的Derby或外部的MySQL等数据库。内嵌配置适合单用户,而本地配置支持多用户,通过配置文件连接独立数据库。远程配置则让metastore服务与Hive进程分离,提高安全性和管理性,客户端无需数据库凭证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

metastore 是 Hive 元数据的集中存放地。metastore 元数据存储主要体现在两个方面:服务和后台数据的存储。元数据包含用 Hive 创建的 database、table 等的元信息。元数据存储在关系型数据库中。如 Derby、MySQL 等。

客户端连接 metastore 服务,metastore 再去连接 MySQL 数据库来存取元数据。有了 metastore 服务,就可以有多个客户端同时连接,而且这些客户端不需要知道 MySQL 数据库的用户名和密码,只需要连接 metastore 服务即可。

一 、内嵌配置

默认情况下,metastore 服务和 Hive 的服务运行在同一个 JVM 中,包含了一个内嵌的以本地磁盘作为存储的Derby( Hive 自带的数据库)数据库实例。同时,这种配置也被称为内嵌配置。但是这种方式的不好之处就在于每次只有一个内嵌的 Derby 数据库可以访问某个磁盘上的数据文件,也就是说一次只能为每个 metastore 打开一个 hive 会话。如果尝试连接多个,会报错。这样效率很低。

二、本地配置

如果要支持多会话,或者多用户的话,需要使用一个独立的数据库(比如 mysql 比较常用),这种配置方式称为本地 metastore 配置。虽然这种方式 Hvie 服务和 Metastore 服务仍然在一个 JVM 进程中,但连接的却是另外一个进程中运行的数据库,在同一台机器上或者远程机器上。任何 JDBC 兼容的数据库都可以通过 javax.jdo.option.* 配置属性来供 metastore 使用。

这种安装方式和嵌入式的区别在于,不再使用内嵌的Derby作为元数据的存储介质,而是使用其他数据库比如MySQL来存储元数据。
hive服务和metastore服务运行在同一个进程中,mysql是单独的进程,可以同一台机器,也可以在远程机器上。
这种方式是一个多用户的模式,运行多个用户client连接到一个数据库中。这种方式一般作为公司内部同时使用Hive。
每一个用户必须要有对MySQL的访问权利,即每一个客户端使用者需要知道MySQL的用户名和密码才行。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive_remote/warehouse</value>
</property>
<property>
  <name>hive.metastore.local</name>
  
### Hive Metastore 配置与使用指南 #### 1. Hive Metastore 的安装配置 为了使 Hive 能够存储元数据,在安装过程中需确保 `<value>` 标签内的连接 URL、驱动程序类名、用户名和密码被替换为实际使用的 MySQL 数据库的具体参数[^1]。 对于 MySQL 数据库的集成部分,通常是在 `hive-site.xml` 文件中完成设置。以下是该文件的部分配置示例: ```xml <configuration> <!-- MySQL JDBC URL --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value> </property> <!-- MySQL Driver Class Name --> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <!-- Database Username and Password --> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>your_username</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>your_password</value> </property> </configuration> ``` #### 2. 启动 Hive Metastore 服务 当上述配置完成后,可以通过命令行来启动 Hive Metastore 服务: ```bash hive --service metastore & ``` 这条指令会在后台启动 Hive Metastore 服务进程。 #### 3. 使用 Hive CLI 或其他客户端访问 Hive 一旦 Hive Metastore 成功启动并运行正常,则可以借助 Hive 提供的各种接口(如 CLI 工具)来进行 SQL 查询和其他操作了。 #### 4. Flink 和 Hive Metastore 的集成注意事项 如果计划让 Apache Flink 应用程序能够利用 Hive Metastore 来管理表结构等信息的话,需要注意的是直接下载官方版本可能并不适用于所有环境尤其是云平台上的部署方案比如 Amazon Web Services (AWS) Elastic MapReduce (EMR),这是因为 EMR 对某些组件进行了定制化调整因此建议优先考虑从现有集群环境中获取带有特定标记(`amzn`)前缀的 JAR 文件用于兼容性保障[^2]。 #### 5. Spark 访问 Hive Metastore 的额外设定 为了让 Spark 可以顺利读取由 Hive 维护的数据字典,除了常规依赖项外还需要指定两个重要属性给 Spark,默认情况下这些选项应该放在 `$SPARK_HOME/conf/spark-defaults.conf` 文件里: - 设置 Hive 版本号对应于当前所使用的 Hive 发布版; - 明确指出包含有必要的 Hive 类库路径以便加载相应的 Java Archive(JAR) 文件[^3]。 ```properties spark.sql.hive.metastore.version=2.1.1 spark.sql.hive.metastore.jars=/opt/hive-2.1.1/lib/* ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员喵姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值