Hive

    除了 Hive 外,很多其他系统也会使用 Hive Metastore 存储元数据。所以通过 Hive Catalog,我们不仅能访问 Hive,也能访问使用 Hive Metastore 作为元数据存储的系统。如 Iceberg、Hudi 等。

    1. hive 支持 1/2/3 版本。
    2. 支持 Managed Table 和 External Table。
    3. 可以识别 Hive Metastore 中存储的 hive、iceberg、hudi 元数据。
    4. 支持数据存储在 Juicefs 上的 hive 表,用法如下(需要把juicefs-hadoop-x.x.x.jar放在 fe/lib/ 和 apache_hdfs_broker/lib/ 下)。

    除了 和 hive.metastore.uris 两个必须参数外,还可以通过更多参数来传递连接所需要的信息。

    如提供 HDFS HA 信息,示例如下:

    1. CREATE CATALOG hive PROPERTIES (
    2. 'type'='hms',
    3. 'hive.metastore.uris' = 'thrift://172.21.0.1:7004',
    4. 'hadoop.username' = 'hive',
    5. 'dfs.nameservices'='your-nameservice',
    6. 'dfs.namenode.rpc-address.your-nameservice.nn1'='172.21.0.2:4007',
    7. 'dfs.namenode.rpc-address.your-nameservice.nn2'='172.21.0.3:4007',
    8. 'dfs.client.failover.proxy.provider.your-nameservice'='org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider'
    9. );

    请在所有的 BEFE 节点下放置 krb5.conf 文件和 认证文件,keytab 认证文件路径和配置保持一致,krb5.conf 文件默认放置在 /etc/krb5.conf 路径。 hive.metastore.kerberos.principal 的值需要和所连接的 hive metastore 的同名属性保持一致,可从 hive-site.xml 中获取。

    提供 Hadoop KMS 加密传输信息,示例如下:

    1. CREATE CATALOG hive PROPERTIES (
    2. 'type'='hms',
    3. 'hive.metastore.uris' = 'thrift://172.21.0.1:7004',
    4. 'dfs.encryption.key.provider.uri' = 'kms://http@kms_host:kms_port/kms'
    5. );

    hive数据存储在JuiceFS,示例如下:

    1. # 1. 创建 Resource
    2. CREATE RESOURCE hms_resource PROPERTIES (
    3. 'type'='hms',
    4. 'hive.metastore.uris' = 'thrift://172.21.0.1:7004',
    5. 'dfs.nameservices'='your-nameservice',
    6. 'dfs.ha.namenodes.your-nameservice'='nn1,nn2',
    7. 'dfs.namenode.rpc-address.your-nameservice.nn1'='172.21.0.2:4007',
    8. 'dfs.namenode.rpc-address.your-nameservice.nn2'='172.21.0.3:4007',
    9. 'dfs.client.failover.proxy.provider.your-nameservice'='org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider'
    10. );
    11. # 2. 创建 Catalog 并使用 Resource,这里的 Key Value 信息会覆盖 Resource 中的信息。
    12. CREATE CATALOG hive WITH RESOURCE hms_resource PROPERTIES(
    13. 'key' = 'value'
    14. );

    我们也可以直接将 hive-site.xml 放到 FE 和 BE 的 conf 目录下,系统也会自动读取 hive-site.xml 中的信息。信息覆盖的规则如下:

    • Resource 中的信息覆盖 hive-site.xml 中的信息。
    • CREATE CATALOG PROPERTIES 中的信息覆盖 Resource 中的信息。

    Doris 可以正确访问不同 Hive 版本中的 Hive Metastore。在默认情况下,Doris 会以 Hive 2.3 版本的兼容接口访问 Hive Metastore。你也可以在创建 Catalog 时指定 hive 的版本。如访问 Hive 1.1.0 版本:

    适用于 Hive/Iceberge/Hudi