《EtLT场景下的数据集成平台Apache SeaTunnel-高俊.pdf》由会员分享,可在线阅读,更多相关《EtLT场景下的数据集成平台Apache SeaTunnel-高俊.pdf(37页珍藏版)》请在三个皮匠报告上搜索。
1、EtLT架构下的数据集成平台Apache SeaTunnel白鲸开源/高俊开源爱好者开源爱好者白鲸开源:数据集成产品负责人10年大数据相关工作,主要从事大数据平台建设、OLAP引擎设计研发工作。开源爱好者,参与多个开源项目的贡献。Apache DolphinScheduler PMCApache SeaTunnel(incubator)PPMCTrino ContributorApache Arrow-DataFusion ContributorETL到EtLT架构演进Contents0数据集成领域的痛点&常见的解决方案下一代数据集成平台Apache SeaTunnel
2、SeaTunnel的核心架构及设计下一代数据集成引擎SeaTunnel Zeta近期规划&如何快速参与社区建设ETL到EtLT架构演进01ETL时代(1990-2015)数据源主要是结构化数据,MySQL、SQL Server、Oracle、ERP、CRM等 数据仓库由OLTP时代的Oracle,DB2来承担 Informatica、Talend、Kettle出现ELT时代(2005-2020)MPP技术、分布式技术流行(Hadoop,Hive)数据源中的数据只做简单标准化写入数仓 无法处理复杂数据源,EL过程需要写Spark、MapReduce程序来实现CDC 读取读取Cloud API文件
3、抽取文件抽取数据库抽取数据库抽取类型转化类型转化数据过滤数据过滤SaaS API结构转化结构转化脏数据清洗脏数据清洗业务业务ETL设计设计Bulk Load表结构变化表结构变化日志同步日志同步数据数据JDBCAPI加载加载Data ScientistData Security EngineerDataOps EngineerETL/ELT DeveloperArchitectExtract抽取抽取transform 轻量级清洗轻量级清洗Load 加载加载Transform 数据业务级转化数据业务级转化数据业务逻辑处理数据业务逻辑处理数据数据Join、聚集聚集数据数据ETL开发开发SQL编写与管
4、理编写与管理协同开发协同开发数据钩稽关系检查数据钩稽关系检查Ops处理处理调度调度&协同协同Marketing AnalystSQL DeveloperSales Analyst数据源迅速复杂,数据糊和实时数仓的出现让数据写入的目标端也变的更加复杂。需要:更加专业的团队和专业的项目来专门负责EL过程的处理。软件软件 APIReverse ETL数据工程人员数据工程人员业务分析业务分析、数据应用人员数据应用人员EtLT时代(2020-未来)02数据集成领域的痛点&常见的解决方案数据集成领域面临的需求痛点有限资源下如何实现高有限资源下如何实现高吞吐吞吐、低延时低延时同步场景复杂:离线、实时,全量、
5、增量,CDC,多表同步如何做到数据一致性如何做到数据一致性、不丢失不丢失、不重复不重复数据源多,增长迅速、版本不兼容、长尾效应如何降低对数据如何降低对数据源的影响源的影响过程如何监控过程如何监控、指标如何量化指标如何量化技术栈要简单技术栈要简单易管理易管理易维护易维护易使用易使用易扩展易扩展常见的数据集成方案探索03下一代数据集成平台Apache SeaTunnel 简单易用简单易用通过简单的配置和命令即可创建同步任务和运行同步任务下一代数据集成平台下一代数据集成平台、数据集成数据集成(同步同步)一站式解决方案一站式解决方案同步过程可监同步过程可监控控、指标可量指标可量化化同步过程中自动统计任
6、务读取写入的数据量,性能指标,数据延时等信息丰富的数据源丰富的数据源生态生态国内外数据库消息队列云存储、云组件数据湖、仓SaaS服务支持用户自定义数据源全场景支持全场景支持支持所有数据集成场景:离线、实时、全量、增量、CDC、CDC整库同步、DDL变更、动态加表数据一致性保数据一致性保障障数据不丢失、不重复、精确处理一次。支持断点续传资源使用少资源使用少内存优化CPU线程优化多表同步数据库连接共享SeaTunnel的设计目标SeaTunnel的发展历程项目发展历程与规划20172021.112021.122022.032022.102022.11 首个首个Apache版本版本发布发布进入进入A
7、pache孵化孵化器并更名为器并更名为SeaTunnel发布版本发布版本30+腾讯腾讯、新浪新浪、等上等上百家企业生产使用百家企业生产使用开源WaterDrop新一代数据同步引擎Zeta发布发布第一个重大版本发布第一个重大版本2.2.0,实现跨引擎的实现跨引擎的连接器支持连接器支持支持支持CDC同步同步,连连接器个数突破接器个数突破100+2022.122023-?支持支持Flink15/Spark3Zeta引擎支持引擎支持CDC整库同步和整库同步和多表同步多表同步支持支持Schema evolution支持自动建表支持自动建表SeaTunnel社区现状https:/ APIZetaTable
8、 APISource APIEngine APISink API100+数据源数据源3x版本迭代版本迭代2x/年年数据源数增长数据源数增长MySQLPostgreSQLKafkaMongoDBElasticTiDBDruidRedisHiveHudiKuduHBaseMySQLMongoDBDruidHudiInfluxDBPostgreSQLElasticRedisKuduNeo4jKafkaTiDBHiveHBaseFeishuFacebookGoogle AdsHubSpotSalesforceAirtableApps StoreFlinkSparkSeaTunnel的整体架构流批一体流
9、批一体统一了流和批的处理API,新的Connector只需要按API实现一次,即可同时支持流处理和批处理下的数据集成。03JDBC多复用多复用/数据库日志多表解析数据库日志多表解析支持多表或整库同步,解决JDBC连接过多的问题;支持多表或整库数据库日志读取解析,解决CDC多表同步场景下需要重复解析日志的问题。04与引擎解藕,专为数据集成场景设计与引擎解藕,专为数据集成场景设计.多引擎支持多引擎支持定义一套SeaTunnel自己的API,不依赖具体的执行引擎,实现一套代码可在不同的引擎上执行。01多版本支持多版本支持通过Translation层将Connector与引擎解藕,解决以往为了支持底层
10、引擎一个新的版本,大部分Connector都需要修改代码的问题。02与引擎解藕的连接器APISeaTunnel Source APISeaTunnel Transform APISeaTunnel Sink APISeaTunnel Checkpoint APISeaTunnel Translation API同一个连接器,只需要在env配置中指定job.mode为BATCH或STREAMING即可轻松切换离线和实时同步两种模式。支持离线和实时两种运行方式支持离线和实时两种运行方式 并行读取,提供更大的吞吐能力 动态分片发现,无需重启作业 字段投影,只读取需要的列 Exactly-once语义
11、支持,CheckPoint能力适配Zeta,Spark,Flink三种引擎与引擎解藕的连接器实现Source Connector同一个连接器,只需要在env配置中指定job.mode为BATCH或STREAMING即可轻松切换离线和实时同步两种模式。支持离线和实时两种运行方式支持离线和实时两种运行方式 SaveMode支持,灵活选择目标表现有数据的处理方式 自动建表,支持建表模板修改,多表同步场景下解放双手 Exactly-once语义支持,数据不丢失也不会重复,CheckPoint能力适配Zeta,Spark,Flink三种引擎 CDC支持,支持处理数据库日志事件与引擎解藕的连接器实现Sin
12、k Connector与引擎解藕的连接器实现Transform Connector 支持复制一列到新列 支持字段改名、改顺序、类型修改、删除列 支持替换数据中的内容 支持将一列拆分成多列CDC Connector设计 支持无锁并行快照历史数据 支持动态加表 支持分库分表和多结构表读取 支持Schema evolution 支持Checkpoint流程,保证数据不丢失不重复 支持离线批量CDC同步Checkpoint功能设计Spark:SeaTunnel实现了snapshot存储功能Flink:SeaTunnel使用Flink的snapshot存储能力Zeta:SeaTunnel使用SeaTun
13、nel Zeta的snapshot存储能力05下一代数据集成引擎SeaTunnel ZetaSeaTunnel Zeta的设计目标简单易用简单易用,全场景数据集成的专用引擎。更快、更稳定、更省资源SeaTunnel Zeta集群管理 不需要依赖三方组件不需要依赖三方组件,不依赖大数据平台不依赖大数据平台 无主无主(自选主自选主)WAL,整个集群重启也可恢复之前正在运行的作业 支持分布式快照算法,保障数据一致性SeaTunnel Zeta PipelineBase Failover 无论是批作业,还是流作业,以Pipeline为单位进行资源分配,Pipeline分配到所需资源后即可开始执行,不会
14、等待所有task获取到资源 以Pipeline为粒度进行容错(Checkpoint,状态回滚)支持对单个Pipeline进行手工恢复SeaTunnel Zeta 动态线程共享适用于CDC多表同步等大量小表的实时同步作业单个JVM并行运行500个Job,开启动态线程共享、性能提升2倍SeaTunnel Zeta 连接池共享适用于所有需要大量JDBC连接器的场景,比如单个非常大的表,有很多个并行Task去处理;或者多表离线同步,多表CDC同步等。在同一个TaskExecutionService节点上的同一个Job可以共享JDBC连接。SeaTunnel Zeta 多表同步连接池共享动态线程共享Se
15、aTunnel Zeta 性能对比本地测试场景:MySQL-Hive,Postgres-Hive,SQLServer-Hive,Orache-Hive云测试场景:MySQL-S3列数:32,基本包含大部分数据类型行数:3000w行Hive文件text格式18G测试节点:1,8C16G本地测试:SeaTunnel Zeta VS DataXSeaTunnel Zeta 比DataX同步数据快30-50%左右。内存对SeaTunnel Zeta的性能没有显著影响。云数据同步:SeaTunnel在MySQL到S3场景下性能是Airbyte的30多,是AWS DMS和Glue的2到5倍。06近期规划&如何快速参与社区建设 Spark3支持 Flink15、16支持 Schema evolution 多表同步SeaTunnel 近期规划参与社区Apache SeaTunnel(Incubating)Apache SeaTunnel(Incubating)是一个分布式、高性能、易扩展、用于海量数据(离线&实时)同步和转化的数据集成平台仓库地址:仓库地址:https:/ SeaTunnel(Incubating)Apache SeaTunnel(Incubating)下载地址:下载地址:https:/seatunnel.apache.org/download