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

添加Iceberg数据源

操作场景

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

前提条件

  • 创建Iceberg数据源的代理用户,该代理用户为人机用户且需拥有hive组,创建用户可参考创建HetuEngine权限角色
  • HetuEngine所在集群的所有节点的“/etc/hosts”文件中,添加待对接数据源所在集群的NameNode实例和MetaStore实例的主机名称和对应的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”。

      若对接的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
    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>

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

    1. 登录Iceberg数据源所在集群的Manager页面。
    2. 选择“系统 > 权限 > 用户”。
    3. 选择对应的数据源用户,在“操作”列中选择“更多 > 下载认证凭据”。

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

    4. 从下载的文件中解压后获取“user.keytab”和“krb5.conf”文件。

  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管理员用户登录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
      表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增加自定义配置参数。
      表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. 登录集群客户端所在节点,执行以下命令,切换到客户端安装目录例如安装目录为“/opt/client,具体以实际替换

    cd /opt/client

    执行以下命令配置环境变量。

    source bigdata_env

    执行以下命令,进行用户认证。(集群未启用Kerberos认证(普通模式)时跳过此步骤)

    kinit HetuEngine组件操作用户

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

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

    例如执行以下命令:

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

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

    show tables;

Iceberg数据类型映射

表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及之后版本。

相关文档