《10-2 openLooKeng 基于高速协议的 MPP 数据库 Connector 方案实践.pdf》由会员分享,可在线阅读,更多相关《10-2 openLooKeng 基于高速协议的 MPP 数据库 Connector 方案实践.pdf(25页珍藏版)》请在三个皮匠报告上搜索。
1、 基于高速协议基于高速协议的的程一舰 中国人民大学硕士中国光大银行总行 openLooKeng项目负责人|openLooKengMppConnector数据库数据库实践实践0101背景介绍背景介绍openLooKeng介绍及金融场景痛点0202社区方案社区方案社区的方案0303优化方案优化方案我们的方案0404性能测试性能测试初步性能测试目录目录 CONTENT|背景介绍01|背景介绍openLooKeng引擎介绍|联邦查询联邦查询:openLooKeng引擎可以提供跨不同数据源、不同集群的联合查询即席查询即席查询:基于内存的计算使引擎能够快速进行查询计算响应,提供交互式的即席查询集群集群A:
2、Hive集群集群B:Hive集群集群C:MppDB/Kafka/HBase等等背景介绍openLooKeng引擎介绍|数据源连接器openLooKeng引擎支持多种不同的数据源连接器,通过不同的数据源连接器可以对接不同的数据源引擎可以支持用户根据标准接口实现自定义的数据源连接器自定义.背景介绍金融场景痛点介绍|Hadoop体系仓库体系仓库Hive/Hbase/kudu传统传统MPP仓库仓库GaussDB/Greenplum/Teradata数据搬家贴源数据数仓建模/集市历史或现实 持续或长期共存数据科学家数据分析师探查 建模.提工单、评审、投产目前一般套路背景介绍金融场景痛点介绍|数据源连接器
3、openLooKeng引擎支持多种不同的数据源连接器,通过不同的数据源连接器可以对接不同的数据源引擎可以支持用户根据标准接口实现自定义的数据源连接器Hadoop体系仓库体系仓库Hive传统传统MPP仓库仓库GaussDB/Greenplum/Teradata跨源联邦查询jdbcGB/TB?select *from hive.hdb1.htbl1 t1join gaussdb.gdb2.gtbl2 t2on t1.id=t2.id社区方案02|社区方案基础方案|实现机制openLooKeng引擎的openGauss Connector基于jdbc协议实现在进行数据读取时是通过GaussDB CN
4、节点读取存在问题openLooKeng引擎侧与GaussDB之间的数据传输是单节点出、单节点进(处理)的过程在进行大数据量读取的场景下效率非常低社区优化方案多jdbc连接方案|当前普遍的解决方案根据读取目标表的主键或某列的具体取值范围信息进行数据切片划分根据划分的切片数来决定创建的jdbc连接数仍存在的问题openLooKeng引擎端的并发解决了,但是数据依然从GaussDB的CN单节点出,并不能从根本上解决问题单CN出?多连接?分割键?数值型?不连续?社区优化方案谓词下推方案|谓词下推,动态过滤目前已经实现了部分的Filter下推,社区新增基于Connector的下推,可以进一步将更多算子根
5、据数据源特点进行下推,例如Limit、TopN、Aggregation 以及 Join 下推等。但是,对于全量或过滤后数据集依然很大的情况仍然无法解决。优化方案03|postgreSQL特性FDW机制|connectorcatalogfile_fdw:file connectormysql_fdw:mysql connectormongo_fdw:mongo connector一种外部数据源支持方式postgreSQL特性FDW机制|mysql_fdw_servermongo_fdw_serverfile_fdw_servergds_fdw_server基于GDS协议的方案GDS基于FDW机制
6、|openLooKeng并行处理并行读取HDFS DN节点的数据GDS数据快速读取创建GaussDB外表,挂载外部目录通过Insert操作触发GaussDB调用GDS服务将数据从DN节点并行导出到挂载的外部目录内存管道监听内存管道数据并导入到HDFS DN节点FDW实现hdfs dfs-copyFromLocal/tbl1/mem.pipe/gdsdata/tbl1/|基于GDS协议的方案处理流程-HDFSGDS基于FDW机制|Linux fuse机制fuse用户自定义文件系统在Linux中,对文件的访问都是统一通过VFS层提供的内核接口进行的(比如open/read)一个进程(称为user)
7、访问由daemon实现的文件系统时,依然需要途径VFS。ls-l mnt 命令执行(1)IO 请求先进内核,经VFS传递给内核 FUSE 文件系统模块;(2)内核 FUSE 模块把请求发给到用户态,由用户自定义的文件系统接收并且处理,完成之后原路返回;|Alluxio posix接口Linux Dir分布式缓存GDS将数据落到过alluxio fuse挂载的本地目录Alluxio的Fuse机制兼容Posix接口|Alluxio的Fuse机制兼容Posix接口Linux DirGDS将数据落到过alluxio fuse挂载的本地目录GDS将数据最终落到分布式缓存Alluxio中GDS方案数据流F
8、DW机制|启动gds server(类比mysqlserver)./gds-d/home/msap/gdsconn/gdsdata/auxfuse-p 10.2.3.4:35005-H 0.0.0.0/0-l/home/msap/gdsconn/gdsdata/gds5.log-D-t 5LocalFirstPolicyMostAvailableFirstPolicyRoundRobinPolicy SpecificHostPolicy$ALLUXIO_HOME/integration/fuse/bin/alluxio-fuse mount|GDS数据快速读取创建GaussDB外表,挂载外部目
9、录(该目录同时被Alluxio Fuse挂载)通过Insert操作触发GaussDB调用GDS服务将数据从DN节点并行导出到挂载的外部目录,通过Fuse机制进入Alluxio各节点的MemoryopenLooKeng并行处理并行读取Alluxio各节点Mem的数据基于GDS协议的方案GDS基于FDW机制|基于GDS协议的方案处理流程-AlluxioGDS基于FDW机制性能测试04|TPC-H Benchmark初步测试结果|最高提升4-5倍复用可提升20倍Mpp Connector方案通用性GaussDB/Greenplum/Teradata/mysql.|Greenplum数据库的FDW机制gpfdist协议用于CREATE EXTERNAL TABLE SQL命令,以访问Greenplum Database gpfdist文件服务器实用程序提供的外部数据。当外部数据由gpfdist提供时,Greenplum数据库系统中的所有节点都可以并行读取或写入外部表数据。Teradatamysql load等.