论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
云原生
›
深入理解DataX与SeaTunnel的核心架构
深入理解DataX与SeaTunnel的核心架构
盛世宏图
论坛元老
|
2024-8-7 04:12:08
|
显示全部楼层
|
阅读模式
楼主
主题
1019
|
帖子
1019
|
积分
3057
1. 引言
本文主要以
图文
的形式来总结 DataX 和 SeaTunnel 的架构和代码流程,以方便读者去相识内里的源码。首先往返顾DataX。
2. DataX
GitHub:https://github.com/alibaba/DataX
博主之前曾经写过相关的专栏《DataX专栏》,有兴趣的同学可以阅读下:
《DataX教程(01)- 入门》
《DataX教程(02)- IDEA运行DataX完整流程(填完全部的坑)》
《DataX教程(03)- 源码解读(超详细版)》
《DataX教程(04)- 配置完整解读》
《DataX教程(05)- DataX Web项目实践》
《DataX教程(06)- DataX调优》
《DataX教程(07)- 图解DataX使命分配及实行流程》
《DataX教程(08)- 监控与汇报》
《DataX教程(09)- DataX是怎样做到限速的?》
《DataX教程(10)- DataX插件热插拔原理》
2.1 DataX架构
DataX的核心架构设计如下:
举个简朴的例子去理解上图:
用户提交了一个DataX作业,而且配置了20个并发,目的是将一个100张分表的mysql数据同步到odps内里
。
DataX的调理决策思绪如下
:
Step1
:DataXJob根据分库分表切分成了100个Task;
Step2
:根据20个并发,DataX盘算共需要分配4个TaskGroup;
Step3
:4个TaskGroup平分切分好的100个Task,每一个TaskGroup负责以5个并发共计运行25个Task。
2.2 DataX代码实行流程
《图解DataX使命分配及实行流程》:https://yanglinwei.blog.csdn.net/article/details/122968465
关于代码层面,贴上博主之前画过的一张代码实行流程图:
上图主要有几个核心的类,它们的职责主要如下(点击类即可检察源码):
类职责JobContainer使命容器Reader读插件接口Writer写插件接口JobAssignUtil使命分配工具类AbstractScheduler使命调理抽象类TaskGroupContainer使命组容器
2.3 DataX存在的问题
首先说下DataX的优势,详细有如下:
可靠的数据质量监控:如流量、数据量运行时监控以及脏数据检测等;
丰富的数据转换功能:让数据在传输过程中可以轻松完成数据脱敏,补全,过滤等数据转换功能;
精准的速率控制:可以控制作业速率,让作业在库可以承受的范围内达到最佳的同步速率;
…
同时开源版本的
DataX
也存在不敷之处,例如:
不支持集群(仅支持单机多线程模式完成同步作业运行),且不支持实时处理,(如:实时数据源Kafka和大数据生态体系中的组件Flink)
。这个时间,
SeaTunnel
的出现,似乎弥补了DataX的短板。
当然,实时这块也可以参考 Chunjun(FlinkX),有兴趣的可以参考之前写过的一篇文章《深度分析FlinkX(纯钧)源码》
3. SeaTunnel
SeaTunnel
:https://github.com/apache/seatunnel
SeaTunnel对自己的定义如下:
下一代高性能、分布式、海量数据集成框架
。
ok,我们继续来看看它的相关功能特性。
3.1 SeaTunnel架构
这是官网贴出的一个SeaTunnel简要的产品设计架构图:
上图似乎不能体现出整个
SeaTunnel
的核心流程要点,仅仅是产品的功能,对于读者来说,可能更看重的是SeaTunnel是怎样做到
分布式、海量数据集成
的设计?
下面继续检察相关核心类图如下(图片来源:https://mp.weixin.qq.com/s/Hvf7TJxMEBVyvnMXVd8E_w):
博主认为他们自研的SeaTunnel Engine才是整个SeaTunnel的核心,它由三个主要的服务组成(
点击类名可以检察对应的源码
):
类职责CoordinatorServiceMaster 服务,负责Dag的天生、Checkpoint 流程控制、资源管理以及作业指标统计与汇总TaskExecutionServiceWorker服务,作业中每个task真正运行时环境SlotService在集群每个节点上都会运行,主要负责节点上资源的分别、申请和回收
3.2 SeaTunnel代码实行流程
关于SeaTunnel的架构大概和代码实行流程,似乎官网并没有贴出对应的流程设计图。
为了方便读者的理解,博主整理了
SeaTunnel
代码实行图,如下:
对于CMD命令层(入口),主要分为了如下几个命令
:
seatunnel-cluster.sh
:主要是用来启动SeaTunnel集群;
seatunnel.sh
:SeaTunnel客户端,主要用于提交作业至SeaTunnel集群或制止集群中运行的作业等;
seatunnel-start-seatunnel-flink-x-connector-v2.sh
:主要用于提交作业至Flink集群(
留意实行脚本内里使用了eval命令,去实行从FlinkStarter控制台打印的flink脚本命令
);
seatunnel-start-seatunnel-spark-x-connector-v2.sh
:主要用于提交作业至Spark集群(
留意实行脚本内里使用了eval命令,去实行从SparkStarter控制台打印的spark脚本命令
)。
实行引擎分为了如下几种
:
引擎核心类描述
SeaTunnel(Zeta)
SeaTunnelServer分为Master和Worker,Master主要用于作业Dag天生、资源管理、指标统计等。Worker主要是实行详细的使命节点,每个Worker是根据SlotProfile的IP 地点是否为本机地点来判断是否实行,详细在(org.apache.seatunnel.engine.server.dag.physical.PhysicalVertex#deploy)
Flink
SeaTunnelFlinkPluginExecutorProcessor范例分为Source、Sink、Transform,主要用于转义(Translation)SeaTunnel的配置为Flink可识别的配置,最后使用Flink的TableEnviorment去实行ETL使命
Spark
SeaTunnelSpark跟Flink引擎的实行逻辑类似,PluginExecutorProcessor范例分为Source、Sink、Transform最后转义并实行ETL使命
4. 文末
我们会发现很多项目的设计,都是存在共同之处的,或在其它项目都有类似的设计,比如阅读了SeaTunnel的代码,会发现有TaskGroup/Slot/ResourceManager(或许参考了DataX或Flink)、Master/Worker(或许参考了DolphinScheduler,固然现在没有拆分)、Connector(或许参考了Chunjun或Flink)等等…
至此,本文大致讲解完了
DataX
以及
SeaTunnel
的架构与代码流程了。本文也是博主阅读源码后的一些整理,仅代表个人的观点,可能存在范围性或不敷之处,接待各人留言评论,同时也希望能资助到各人,谢谢各人,本文完!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
盛世宏图
论坛元老
这个人很懒什么都没写!
楼主热帖
绝了,这20款可视化大屏模板太酷炫了( ...
零基础学Java(1)初识Java程序 ...
【十年网络安全工程师整理】—100渗透 ...
聊聊DevOps制品管理-不止是存储制品这 ...
Python程序运行内存的查看
记一次 .NET 某RFID标签管理系统 CPU ...
15年了,我们到底怎样才能用好 Serverl ...
Frida主动调用java函数来爆破解题思路 ...
【Linux进程概念——下】验证进程地址 ...
数据库扩容也可以如此丝滑,MySQL千亿 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
移动端开发
Mysql
SQL-Server
虚拟化与私有云
快速回复
返回顶部
返回列表