当需要从Hive等Hadoop集群迁移数据到GaussDB 200集群时,因为数据量太大,可能无法导出到本地。此时需要GaussDB 200跨集群读取HDFS上的数据,并写入GaussDB 200集群。

目前GaussDB 200只支持跨集群访问FusionInsight HD中的HDFS。

前提条件

  • FusionInsight HD和GaussDB 200两个集群状态正常并且可以互相通信。
  • 远端FusionInsight HD集群被访问的表为ORC格式。
  • 远端FusionInsight HD集群HDFS服务配置选项“hadoop.rpc.protection”值为“authentication”。
  • 远端FusionInsight HD集群存在具有访问集群HDFS数据目录权限的用户。
  • 远端FusionInsight HD集群已安装了客户端。

    操作步骤

    1、创建配置文件

    登录FusionInsight Manager>选择“集群 > 待操作的集群名称 > 服务 > MPPDB > 对接 > 对接HDFS”,单击“创建”,填写配置组名称,单击“确定”。如下图所示:
    GaussDB 200跨集群访问HDFS_第1张图片
    各个参数的说明如下图所示:
    GaussDB 200跨集群访问HDFS_第2张图片
    保存完成后,mppdb概览里会显示配置状态为过期配置,立即重启mppdb服务即可。另外,上传的文件位置位于${BIGDATA_HOME}/mppdb/hdfs_conf下面。

    2、创建HDFS外表SERVER

    使用omm用户,登录数据库执行下面的操作创建外表server。

    [omm@hd01 ~]$ source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
    [omm@hd01 ~]$ gsql -d rhnschema -p 25308 -r
    rhnschema=# create server server_test foreign data wrapper hdfs_fdw options(address '192.168.110.35:25000,192.168.110.36:25000',hdfscfgpath '/opt/huawei/Bigdata/mppdb/hdfs_conf/FHD/[email protected]',type 'HDFS');
    CREATE SERVER

    GaussDB 200跨集群访问HDFS_第3张图片
    可以使用下面的SQL查询已创建的server信息:

    rhnschema=# select *from pg_foreign_server where srvname='server_test';

    GaussDB 200跨集群访问HDFS

3、创建HDFS外表

rhnschema=# create foreign table f_a (id int,name text) server server_test options(format 'orc',foldername '/user/hive/warehouse/hivedb.db/a') distribute by roundrobin;
CREATE FOREIGN TABLE

创建外表的语法如下图所示:
GaussDB 200跨集群访问HDFS_第4张图片

4、验证

rhnschema=# select *from f_a;

GaussDB 200跨集群访问HDFS_第5张图片