返回介绍

Hive Metastore 的三种配置方式

发布于 2024-06-23 16:10:22 字数 7780 浏览 0 评论 0 收藏 0

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

本地模式

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

本地模式具体配置示例:

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <configuration>
  4. <property>
  5. <name>hive.metastore.warehouse.dir</name>
  6. <value>/user/hive_remote/warehouse</value>
  7. </property>
  8. <property>
  9. <name>hive.metastore.local</name>
  10. <value>true</value>
  11. </property>
  12. <property>
  13. <name>javax.jdo.option.ConnectionURL</name>
  14. <value>jdbc:mysql://localhost/hive_remote?createDatabaseIfNotExist=true</value>
  15. </property>
  16. <property>
  17. <name>javax.jdo.option.ConnectionDriverName</name>
  18. <value>com.mysql.jdbc.Driver</value>
  19. </property>
  20. <property>
  21. <name>javax.jdo.option.ConnectionUserName</name>
  22. <value>hive</value>
  23. </property>
  24. <property>
  25. <name>javax.jdo.option.ConnectionPassword</name>
  26. <value>password</value>
  27. </property>
  28. </configuration>

远程配置

还有一种配置是远程 metastore 配置,这种配置情况下,一个或多个 metastore 服务器和 Hive 服务运行在不同的进程中。这样一来,数据库层可以完全置于防火墙后,客户端则不需要数据库凭证(密码账号),从而提供了更好的可管理性和安全。可以通过 hive.metastore.uris 设置为 metastore 服务器 URI(如果有多个服务器,可以用逗号分割),把 hive 服务设为使用远程 metastore 服务器的URI的格式为:thrift://host:port。

注意,仅连接远程的 mysql 并不能称之为“远程模式”,是否远程指的是 metastore 和 hive 服务是否在同一进程内。
hive远程metastore配置

远程模式配置示例如下:

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <configuration>
  4. <property>
  5. <name>hive.metastore.warehouse.dir</name>
  6. <value>/user/hive/warehouse</value>
  7. </property>
  8. <property>
  9. <name>javax.jdo.option.ConnectionURL</name>
  10. <value>jdbc:mysql://192.168.1.214:3306/hive_remote?createDatabaseIfNotExist=true</value>
  11. </property>
  12. <property>
  13. <name>javax.jdo.option.ConnectionDriverName</name>
  14. <value>com.mysql.jdbc.Driver</value>
  15. </property>
  16. <property>
  17. <name>javax.jdo.option.ConnectionUserName</name>
  18. <value>hive</value>
  19. </property>
  20. <property>
  21. <name>javax.jdo.option.ConnectionPassword</name>
  22. <value>password</value>
  23. </property>
  24. <property>
  25. <name>hive.metastore.local</name>
  26. <value>false</value>
  27. </property>
  28. <property>
  29. <name>hive.metastore.uris</name>
  30. <value>thrift://192.168.1.188:9083</valu>
  31. </property>
  32. </configuration>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文