更新时间:2024-11-29 GMT+08:00

配置Hudi数据源

操作场景

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

HetuEngine不支持Hudi的bootstrap表的读取。

前提条件

  • 创建Hudi数据源的代理用户,该代理用户为人机用户且需拥有hive组。
  • HetuEngine所在集群的所有节点的“/etc/hosts”文件中,添加待对接数据源所在集群的主机名称和对应的IP映射,及其“/etc/hosts”文件中的“10.10.10.10 hadoop.系统域名”(如“10.10.10.10 hadoop.hadoop.com”),否则HetuEngine无法根据主机名称连接到非本集群节点。
  • 参考创建HetuEngine用户创建HetuEngine管理员用户。

操作步骤

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

    1. 登录Hudi数据源所在集群的FusionInsight 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>

      若对接的Hudi数据源集群和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. 获取Hudi数据源的代理用户的“user.keytab”和“krb5.conf”文件。

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

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

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

    1. 获取Hudi数据源所在集群客户端文件压缩包解压路径下的“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. 配置“基本配置”,填写数据源名称,选择数据源类型“Hudi”。
    2. 配置“Hudi配置”,参数配置请参考表1
      表1 Hudi配置

      参数

      描述

      取值样例

      驱动

      默认为hudi。

      hudi

      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://10.92.8.42:21088,thrift://10.92.8.43:21088,thrift://10.92.8.44: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. 单击“确定”。

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

    cd /opt/client

    source bigdata_env

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

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

    hetu-cli --catalog 数据源名称 --schema 数据库名

    例如执行以下命令:

    hetu-cli --catalog hudi_1 --schema default

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

    show tables;

数据类型映射

目前Hudi数据源支持的数据类型为:INT、BIGINT、FLOAT、DOUBLE、DECIMAL、STRING、DATE、TIMESTAMP、BOOLEAN、BINARY、MAP、STRUCT、ARRAY。

性能优化

  • 元数据缓存

    Hudi连接器支持元数据缓存,以便更快地提供对各种操作的元数据请求。可参考调整元数据缓存

  • 动态过滤

    开启动态过滤有助于Hudi连接器的Join算子的计算优化。可参考调整动态过滤

  • 带分区条件查询

    建立分区表并且查询带分区过滤条件有助于过滤部分分区数据,从而提高性能。

约束

Hudi数据源只支持查询操作,更新和插入操作均不支持。