如何配置Hive Metastore Docker容器?

问题描述 投票:0回答:1

我正在为我的公司构建一个演示,其设置为:

  • 三诺
  • MinIO
  • Hive 元存储(HMS)

Trino 应使用 HMS 作为 Iceberg 目录,数据和元数据应存储在 MinIO 中。

现在,在包含使 HMS 与 MinIO 一起工作所需的所有 jar 后,我在 Iceberg 目录中创建简单模式时收到错误

Failed to create external path s3a://warehouse/ for database warehouse. This may result in access not being allowed if the StorageBasedAuthorizationProvider is enabled: null

不知道为什么HMS要访问MinIO。我不认为它访问 MinIO 有什么意义。无论如何,我尝试为其提供

hive-site.xml
core-site.xml
。我不知道我的设置是否生效,因为当我指定了一些错误的配置时,没有错误。

<configuration>
    <!-- hive-site.xml -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>s3a://warehouse/</value>
        <description>Location of the default database for the warehouse</description>
    </property>
</configuration>

<configuration>
    <!-- core-site.xml -->
    <property>
        <name>fs.s3a.impl</name>
        <value>org.apache.hadoop.fs.s3a.S3AFileSystem</value>
    </property>

    <property>
        <name>fs.s3a.access.key</name>
        <value>minioadmin</value>
    </property>
    <property>
        <name>fs.s3a.secret.key</name>
        <value>minioadmin</value>
    </property>
    <property>
        <name>fs.s3a.endpoint</name>
        <value>http://minio:9000</value>
    </property>
    <property>
        <name>fs.s3a.path.style.access</name>
        <value>true</value>
    </property>

    <property>
        <name>fs.s3a.connection.ssl.enabled</name>
        <value>false</value>
    </property>
</configuration>

我在 compose 中设置 Hive 如下:

# In docker-compose.yaml
hms:
    image: docker.io/apache/hive:4.0.0
    ports:
      - 9083:9803
    environment:
      SERVICE_NAME: metastore
      HIVE_CUSTOM_CONF_DIR: /custom-conf
    volumes:
      - ./hive/:/custom-conf/
      ...and other jars

为了完整起见,这是我的 Trino 目录配置

connector.name=iceberg

hive.metastore.uri=thrift://hms:9083

fs.native-s3.enabled=true
s3.region=eu-north-1
s3.endpoint=http://minio:9000
s3.path-style-access=true
s3.aws-access-key=minioadmin
s3.aws-secret-key=minioadmin

我希望你能帮我弄清楚两件事:

  1. 这是为HMS指定配置的正确方法吗?
  2. 如何将 HMS 配置为 Trino 可以使用的 Iceberg 目录?

非常感谢!

hive trino apache-iceberg
1个回答
0
投票

HMS需要在“hive.metastore.warehouse.dir”定义的目录下为您创建的表创建一个子目录。建议预先创建“hive.metastore.warehouse.dir”。在 Hive 中,您可以为表指定不同的目录,“create table foo(i int) location “/my-other-directory”,但我不确定您是否可以从 Trino 执行此操作。

https://cwiki.apache.org/confluence/display/Hive/GettingStarted#:~:text=In%20addition%2C%20you%20must%20use%20below%20HDFS%20commands%20to%20create%20/tmp %20and%20/user/hive/warehouse%20(又名%20hive.metastore.warehouse.dir)%20and%20set%20them%20chmod%20g%2Bw%C2%A0before%20you%20can%20create%20a%20table% 20in%20Hive.

© www.soinside.com 2019 - 2024. All rights reserved.