暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB A 通过加速集群对HDFS数据进行查询

墨天轮 2019-10-12
1015

通过加速集群对HDFS数据进行查询

背景信息

GaussDB 200的场景中,由于数据保存在DN本地,而且经过精心设计后,比如采用分区,列存等数据保存的形式,会在执行计划的规划和执行过程中优化掉大量的数据扫描工作,因此IO时间在查询的整体执行时间中占比较小。但对于HDFS外表场景会有很大的不同,分布方式和数据保存位置会显著增加IO时间在查询整体执行时间中的占比。

GaussDB 200集群只拥有固定数量的执行节点(DN),在对大量数据扫描时,有限的DN数量也会导致IO时间变长。为了降低甚至消除这些因素对性能的影响,将部分操作(scan、agg等)下推到计算资源池,可以通过大量节点的并发操作来降低IO时间的占比。

此场景下存在两套集群,分别为客户集群和加速集群。客户端集群将部分计算任务发给加速集群,加速集群将中间结果返回给客户端集群,两套集群配合完成一个查询任务。

前提条件

使用加速集群提升HDFS外表的查询性能,需要先部署一个大规模的GaussDB 200集群作为加速集群,该集群和HDFS集群部署在同一套物理服务器上。

客户端集群配置

  • 根据跨集群访问HDFS在客户端集群配置访问远端Hadoop集群。
  • 使用gsql连接数据库。
  • 在CN上配置通过计算资源池进行加速。

    1
    set acceleration_with_compute_pool = on;
    

  • 创建dummy server用于保存计算资源池的连接信息。

    客户端集群需要在使用计算资源池的数据库中创建dummy server,以便提供访问加速集群的各种信息。

    1
    CREATE SERVER dummy_server FOREIGN DATA WRAPPER DFS_FDW OPTIONS (address 'xx.xx.178.243:61600', username 'omm', password 'Gauss@123', dbname 'accedb', remoteservername 'acceserver', type 'dummy');
    

    address:加速集群的连接地址,如果加速集群配置了LVS,则IP为LVS的IP地址,否则为加速集群某个CN的IP地址;

    username/password:在加速集群中创建,并提供给dummy server保存并用于连接加速集群的认证;

    dbname/remoteservername:在加速集群中创建,并提供给dummy server保存并用于下推的执行计划的运行环境。

  • 创建HDFS SERVER用于直接访问远端Hadoop集群。

    1
    CREATE SERVER orc_server FOREIGN DATA WRAPPER DFS_FDW OPTIONS (address 'xx.xx.185.201:25000,xx.xx.185.203:25000',hdfscfgpath 'hdfs_cfg', type 'hdfs');
    

    上面例子中,假设在步骤1中将HDFS客户端配置文件存储在了客户端集群物理服务器的/home/config路径下。因此将hdfscfgpath的值设置成了hdfs_cfg,具体请根据实际的配置值进行修改。

    address为HDFS集群的主备节点所在的IP地址以及端口;

    可创建HDFS外表,确认客户端集群远程读HDFS是否配置成功。

加速集群配置

加速集群CN参数配置:

  • 以操作系统用户omm登录CN所在主机,执行source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile命令启动环境变量。
  • 打开加速集群功能。

    gs_guc set -Z coordinator -Z datanode -N all -I all -c "use_workload_manager=on"
    gs_guc set -Z coordinator -Z datanode -N all -I all -c "enable_dynamic_workload=on"
    gs_guc set -Z coordinator -Z datanode -N all -I all -c "enable_acceleration_cluster_wlm=on"

  • 根据集群硬件规模设置max_active_statements为正值。

    gs_guc reload -Z coordinator -N all -I all -c "max_active_statements=10"

  • 使用gsql连接数据库。
  • 设置query_dop为1,由动态资源管理决定客户端请求在加速集群上的并发度。

    1
    SET query_dop = 1;
    

  • session_timeout, statement_timeout设置为0,避免长时间查询的连接断掉。

    1
    2
    SET session_timeout = 1;
    SET statement_timeout = 1;
    

其它配置:

  • LVS配置。

    LVS用于将客户端集群的请求分发到计算资源池不同的CN上,避免请求集中在同一个CN上。LVS配置请参考“软件安装>配置负载均衡软件”章节。

  • 创建用户名和密码。

    客户端集群访问计算资源池需要用户名和密码进行认证,因此需要预先在计算资源池端创建好用户名和密码,并赋予该用户查询权限。

  • 配置HDFS SERVER。

    根据跨集群访问HDFS配置加速集群访问远端Hadoop集群。这些配置用于在加速集群中建立数据库和HDFS SERVER以便下发到加速集群的请求使用。

    例子如下:

    1
    CREATE DATABASE accedb;
    
    1
    \c accedb
    
    1
    CREATE SERVER acceserver FOREIGN DATA WRAPPER DFS_FDW OPTIONS (address 'xx.xx.178.239:25000,xx.xx.178.241:25000', hdfscfgpath 'hdfs_cfg', type 'hdfs');
    

    上面的例子里,在加速集群中物理服务器的hdfs_cfg保存着存取HDFS系统的配置信息。因此将hdfscfgpath的值设置成了hdfs_cfg,具体请根据实际的配置值进行修改。

    address为HDFS集群的主备节点所在的IP地址以及端口。

    accedb和acceserver在客户端集群创建dummy server时体现,用于存取HDFS时的相关信息。

  • 配置CN接收连接的范围。

    在加速集群CN的pg_hba.conf文件中,加如下内容以便客户端集群的DN可以访问加速集群的CN。例子如下:

    gs_guc set -Z coordinator -N all -I all -h "host all all 0.0.0.0/0 sha256" gs_guc set -Z coordinator -N all -I all -h "host all all 10.0.0.0/8 sha256" gs_guc set -Z coordinator -N all -I all -h "host all all 192.168.0.0/16 sha256" gs_guc set -Z coordinator -N all -I all -h "host all all 10.185.181.0/24 sha256"


查看更多:华为GaussDB 200 跨集群访问其他数据平台
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论