4.4. 配置 Hive metastore


重要

Metering 是一个已弃用的功能。弃用的功能仍然包含在 OpenShift Container Platform 中,并将继续被支持。但是,这个功能会在以后的发行版本中被删除,且不建议在新的部署中使用。

有关 OpenShift Container Platform 中已弃用或删除的主要功能的最新列表,请参阅 OpenShift Container Platform 发行注记中已弃用和删除的功能部分。

Hive metastore 负责存储所有在 Presto 和 Hive 中创建的数据库表的元数据。metastore 默认会将这些信息存储在附加到 pod 的持久性卷中的本地嵌入式 Derby 数据库中。

通常,Hive metastore 的默认配置适用于小型集群,但用户可能希望通过使用专用 SQL 数据库存储 Hive metastore 数据来提高性能或从集群中移出存储要求。

4.4.1. 配置持久性卷

Hive 默认需要一个持久性卷才可运行。

Hive-metastore-db-data 是默认需要的主持久性卷声明(PVC)。Hive metastore 使用该 PVC 存储与表相关的元数据,如表名称、列和位置。处理查询时,Presto 和 Hive 服务器可使用 Hive metastore 来查找表元数据。如果使用 MySQL 或 PostgreSQL 作为 Hive metastore 的数据库,则不需要这个要求。

为了进行安装,Hive metastore 要求在存储类中启用动态卷置备功能,一个有正确容量的持久性卷必须预先手动创建,或使用已存在的 MySQL 或 PostgreSQL 数据库。

4.4.1.1. 为 Hive metastore 配置存储类

要为 hive-metastore-db-data 持久性卷声明配置和指定存储类,请在 MeteringConfig 自定义资源中指定存储类。下面的 metastore-storage.yaml 文件中包含一个带有 class 字段的 storage 部分示例。

apiVersion: metering.openshift.io/v1
kind: MeteringConfig
metadata:
  name: "operator-metering"
spec:
  hive:
    spec:
      metastore:
        storage:
          # Default is null, which means using the default storage class if it exists.
          # If you wish to use a different storage class, specify it here
          # class: "null" 
1

          size: "5Gi"
Copy to Clipboard Toggle word wrap
1
取消此行的注释,并将 null 替换为要使用的存储类的名称。使用 null 值会使 metering 使用集群的默认存储类。

4.4.1.2. 配置 Hive metastore 的卷大小

使用以下 metastore-storage.yaml 文件作为模板来配置 Hive metastore 的卷大小。

apiVersion: metering.openshift.io/v1
kind: MeteringConfig
metadata:
  name: "operator-metering"
spec:
  hive:
    spec:
      metastore:
        storage:
          # Default is null, which means using the default storage class if it exists.
          # If you wish to use a different storage class, specify it here
          # class: "null"
          size: "5Gi" 
1
Copy to Clipboard Toggle word wrap
1
size 值替换为您所需容量。示例文件显示“5Gi”。

4.4.2. 为 Hive metastore 使用 MySQL 或 PostgreSQL

默认安装的 metering 会把 Hive 配置为使用名为 Derby 的嵌入式 Java 数据库。该配置不适用于较大环境,它可以被替换为使用 MySQL 或 PostgreSQL 数据库。如果您的部署需要 Hive 使用 MySQL 或 PostgreSQL 数据库,则请使用以下配置示例文件。

有三个配置选项可用来控制 Hive metastore 使用的数据库: urldriversecretName

使用用户名和密码创建 MySQL 或 Postgres 实例。然后使用 OpenShift CLI(oc) 或 YAML 文件创建 secret。您为此 secret 创建的 secretName 必须映射到 MeteringConfig 对象资源中的 spec.hive.spec.config.db.secretName 字段。

流程

  1. 使用 OpenShift CLI(oc)或使用 YAML 文件创建 secret:

    • 使用以下命令创建 secret:

      $ oc --namespace openshift-metering create secret generic <YOUR_SECRETNAME> --from-literal=username=<YOUR_DATABASE_USERNAME> --from-literal=password=<YOUR_DATABASE_PASSWORD>
      Copy to Clipboard Toggle word wrap
    • 使用 YAML 文件创建 secret。例如:

      apiVersion: v1
      kind: Secret
      metadata:
        name: <YOUR_SECRETNAME> 
      1
      
      data:
        username: <BASE64_ENCODED_DATABASE_USERNAME> 
      2
      
        password: <BASE64_ENCODED_DATABASE_PASSWORD> 
      3
      Copy to Clipboard Toggle word wrap
      1
      secret 的名称。
      2
      base64 编码的数据库用户名。
      3
      base64 编码的数据库密码。
  2. 创建配置文件以将 MySQL 或 PostgreSQL 数据库用于 Hive:

    • 要将 MySQL 数据库用于 Hive,请使用以下示例配置文件。Metering 支持将内部 Hive metastore 配置为使用 MySQL 服务器版本 5.6、5.7 和 8.0。

      spec:
        hive:
          spec:
            metastore:
              storage:
                create: false
            config:
              db:
                url: "jdbc:mysql://mysql.example.com:3306/hive_metastore" 
      1
      
                driver: "com.mysql.cj.jdbc.Driver"
                secretName: "REPLACEME" 
      2
      Copy to Clipboard Toggle word wrap
      注意

      当将 Metering 配置为使用旧的 MySQL 服务器版本时,如 5.6 或 5.7 时,您可能需要在配置内部 Hive metastore 时添加 enabledTLSProtocols JDBC URL 参数

      1
      要使用 TLS v1.2 密码套件,将 url 设置为 "jdbc:mysql://<hostname>:<port>/<schema>?enabledTLSProtocols=TLSv1.2"
      2
      包含 base64 加密用户名和密码数据库凭证的 secret 名称。

      您可使用 spec.hive.config.url 来传递其他 JDBC 参数。如需了解更多详细信息,请参阅 MySQL Connector/J 8.0 文档

    • 要将 PostgreSQL 数据库用于 Hive,请使用以下示例配置文件:

      spec:
        hive:
          spec:
            metastore:
              storage:
                create: false
            config:
              db:
                url: "jdbc:postgresql://postgresql.example.com:5432/hive_metastore"
                driver: "org.postgresql.Driver"
                username: "REPLACEME"
                password: "REPLACEME"
      Copy to Clipboard Toggle word wrap

      您可使用 spec.hive.config.url 来传递其他 JDBC 参数。如需了解更多详细信息,请参阅 PostgreSQL JDBC 驱动程序文档

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat