更新时间:2025-12-10 GMT+08:00
分享

添加Iceberg数据源

操作场景

HetuEngine支持查询Iceberg v1/v2类型表数据。本章节指导用户在HSConsole界面配置Iceberg类型数据源。

前提条件

  • 创建Iceberg数据源的代理用户,该代理用户为人机用户且需拥有hive组。
  • HetuEngine所在集群的所有节点的“/etc/hosts”文件中,添加待对接数据源所在集群的主机名称和对应的IP映射,及其“/etc/hosts”文件中的“10.10.10.10 hadoop.系统域名”(如“10.10.10.10 hadoop.hadoop.com”),否则HetuEngine无法根据主机名称连接到非本集群节点。
  • 参考创建HetuEngine权限角色创建HetuEngine管理员用户。
  • 数据源所在集群与HetuEngine集群的时间需保持一致。
  • 本章节仅适用于MRS 3.6.0-LTS及之后版本。

操作步骤

  1. 获取Iceberg数据源集群的“hdfs-site.xml”,“core-site.xml”配置文件。

    1. 登录Iceberg数据源所在集群的Manager页面。
    2. 在“主页”右上方单击“下载客户端”,根据界面提示下载“完整客户端”文件到本地。
    3. 将下载的客户端文件压缩包解压,获取“FusionInsight_Cluster_1_Services_ClientConfig/HDFS/config”路径下的“core-site.xml”和“hdfs-site.xml”。
    4. 查看“core-site.xml”文件中是否有“fs.trash.interval”配置项,若没有,则新增以下配置。
      <property>
      <name>fs.trash.interval</name>
      <value>2880</value>
      </property>
    5. 查看“hdfs-site.xml”文件中的“dfs.client.failover.proxy.provider.NameService名称”配置项,并将其值修改成“org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider”。
      以NameService名称为“hacluster”为例:
      <property>
      <name>dfs.client.failover.proxy.provider.hacluster</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
      </property>

      若对接的Iceberg数据源集群和HetuEngine处于同一个Hadoop集群中,“hdfs-site.xml”和“core-site.xml”配置文件的获取方式为从HDFS中获取,参考HDFS客户端使用实践进入集群HDFS客户端,执行以下命令获取:

      hdfs dfs -get /user/hetuserver/fiber/restcatalog/hive/core-site.xml

      hdfs dfs -get /user/hetuserver/fiber/restcatalog/hive/hdfs-site.xml

  2. 获取Iceberg数据源的代理用户的“user.keytab”和“krb5.conf”文件。

    1. 登录Iceberg数据源所在集群的Manager页面。
    2. 选择“系统 > 权限 > 用户”。
    3. 选择对应的数据源用户,在“操作”列中选择“更多 > 下载认证凭据”。
    4. 从下载的文件中解压后获取“user.keytab”和“krb5.conf”文件。

      Iceberg数据源的代理用户需至少关联“hive”用户组。

  3. 获取Metastore URL和服务端Principal。

    1. 获取Iceberg数据源所在集群客户端文件压缩包解压路径下的“FusionInsight_Cluster_1_Services_ClientConfig/Hive/config”下的“hive-site.xml”文件。
    2. 打开“hive-site.xml”文件,搜索“hive.metastore.uris”,其对应的值即为Metastore URL的值。搜索“hive.server2.authentication.kerberos.principal”,其对应的值即为服务端Principal的值。

  4. 使用HetuEngine管理员用户登录FusionInsight Manager,选择“集群 > 服务 > HetuEngine”,进入HetuEngine服务页面。
  5. 在概览页签下的“基本信息”区域,单击“HSConsole WebUI”后的链接,进入HSConsole界面。
  6. 选择“数据源”,单击“添加数据源”。在“添加数据源”页面填写参数。

    1. 配置“基本配置”,填写数据源名称,选择数据源类型“Iceberg”。
    2. 配置“Iceberg配置”,参数配置请参考表1
      表1 Iceberg配置

      参数

      描述

      取值样例

      hdfs-site文件

      在本地选择1获取的“hdfs-site.xml”配置文件,文件名固定。

      -

      core-site文件

      在本地选择1获取的“core-site.xml”配置文件,文件名固定。

      -

      krb5文件

      开启安全模式时填写此参数。

      Kerberos认证用到的配置文件,在本地选择2获取的“krb5.conf”文件。

      krb5.conf

    3. 配置“Metastore配置”,参数配置请参考表2 Metastore配置
      表2 Metastore配置

      参数

      描述

      取值样例

      Metastore URL

      数据源的Metastore的URL。获取方法请参考3

      thrift://192.168.1.1:21088,thrift://192.168.1.11:21088,thrift://192.168.1.2:21088

      安全认证机制

      打开安全模式后自动默认为KERBEROS。

      KERBEROS

      服务端Principal

      开启安全模式时填写此参数。

      meta访问metastore带域名的用户名。获取方法请参考3

      hive/hadoop.hadoop.com@HADOOP.COM

      客户端Principal

      开启安全模式时填写此参数。

      格式为:访问metastore的用户名@域名大写.COM。

      访问metastore的用户名就是2中获取的“user.keytab”文件所属的用户。

      admintest@HADOOP.COM

      keytab文件

      开启安全模式时填写此参数。

      连接metastore用户名的keytab凭据文件,固定名称。在本地选择2获取的“user.keytab”文件。

      user.keytab

    4. (可选)修改自定义配置。
      表3 自定义配置

      参数

      描述

      取值样例

      hive.parquet.use-column-names

      是否按照列名方式访问PARQUET存储文件:

      • true:是
      • false(默认值):否

      false

      hive.hdfs.wire-encryption.enabled

      若对接数据源上HDFS的“hadoop.rpc.protection”参数值为“authentication”或“integrity”时,需添加此参数,并设置值为false。

      false

      hive.ignore-absent-partitions

      查询是否忽略分区下是否有文件丢失。

      • true:允许查询分区下存在文件丢失的情况
      • false:不允许查询分区下存在文件丢失的情况,会直接报错(手动对接数据源时,不填则默认为该值)

      true

      iceberg.register-table-procedure.enabled

      允许用户调用register_table过程。主要用于数据迁移,将已存在的iceberg表注册到元数据中,默认为false。

      false

      • 单击“删除”,可以删除已增加的自定义配置参数。
    5. 单击“确定”。

  7. 登录集群客户端所在节点,执行以下命令,切换到客户端安装目录并认证用户。

    cd /opt/client

    source bigdata_env

    kinit HetuEngine组件操作用户 (普通模式集群跳过)

  8. 执行以下命令,登录数据源的catalog。

    hetu-cli --catalog 数据源名称 --schema 数据库名 --tenant 租户名称

    例如执行以下命令:

    hetu-cli --catalog iceberg --schema default --tenant default

  9. 执行以下命令,可正常查看数据库表信息或不报错即表示连接成功。

    show tables;

数据类型映射

表4 数据类型映射

Iceberg type

HetuEngine type

BOOLEAN

BOOLEAN

INT

INTEGER

LONG

BIGINT

FLOAT

REAL

DOUBLE

DOUBLE

DECIMAL(p,s)

DECIMAL(p,s)

DATE

DATE

TIME

TIME(6)

TIMESTAMP

TIMESTAMP(6)

TIMESTAMPTZ

TIMESTAMP(6) WITH TIME ZONE

STRING

VARCHAR

UUID

UUID

BINARY

VARBINARY

FIXED (L)

VARBINARY

STRUCT(...)

ROW(...)

LIST(e)

ARRAY(e)

MAP(k,v)

MAP(k,v)

约束

  • Iceberg数据源不支持数据源鉴权,仅支持Ranger鉴权。
  • Iceberg数据源使用的指定表分区的表属性为partitioning,比如表的分区为c1和c2列,分区属性为partitioning = ARRAY['c1', 'c2']。
  • Iceberg数据源使用时间旅行能力根据时间戳查询表的内容时,时间戳需要晚于建表时间,但是早于当前时间。
  • 本章节仅适用于MRS 3.6.0及之后版本。

相关文档