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

现代数据堆栈下的 Apache 项目

SeaTunnel 2022-11-16
2321

 点亮 ⭐️ Star · 照亮开源之路
https://github.com/apache/incubator-seatunnel
编辑 | 德通, github.com/mischaZhang
    

现代数据堆栈重构了企业数据生态系统。Hadoop、Snowflake、数据库、数据湖等数据引擎和Flink、Spark Streaming、Amazon kinesis等实时数据引擎和云服务支持数据处理,配合大量BI工具和数据应用,可以构建企业的大数据平台。


DataOps技术包括数据编排、数据集成、数据转换和数据治理。DolphinScheduler、Airflow、Airbyte、Fiveran、SeaTunnel、DBT、Collibra、BigEye是DataOps领域常用的工具和平台。

我今天要介绍的Apache SeaTunnel(incubating) 是一个专注于同步数据和将数据连接到不同系统的开源项目,而Apache DolphinScheduler是一个数据编排系统。


上图中展现了现代数据堆栈中Apache项目和企业中DataOps技术栈。

一般,我们把需要处理的数据分为批数据和流数据

流数据可以由传感器、物联网设备、网络日志、社交媒体、ERP、CRM系统生成。SeaTunnel连接器可以将流数据连接到数据的消费者,SeaTunnel agent可以收集网络日志、社交媒体,SeaTunnel CDC(change data capture)可以从数据库日志中获取数据。

SeaTunnel Engine,Flink, Spark可以用于把数据过滤,加载,归一化到指定位置,比如输出到Kafka、报警系统或是数据库。Kafka中的数据可以通过SeaTunnel加载到Elasticsearch、ClickHouse等数据库中,并由Kibana等加载进行可视化。

在某些情况下,用户需要将实时数据复制到批处理数据中,使用SeaTunnel可以把实时数据流复制到Hudi、Hive,将数据用于实时数据仓库。用SeaTunnel也可以把数据加载到批处理数据系统中。

批数据可以由非结构化数据生成,如文件、消息队列或关系数据库、云数据库、非关系型数据库和大数据系统。批数据可以由SeaTunnel收集并存储在HDFS和S3中,或使用SeaTunnel将数据加载到Hive、Apache Hudi、datalakes进行处理。

非结构化批处理数据也可以先加载到数据湖中,再把数据加载到数据仓库,如Snowflake、Teradata。使用SeaTunnel也可以不通过数据湖,直接将非结构化数据加载到数据仓库内。

如果要利用这些数据做计算,可以用DolphinScheduler这一编排系统来调度任务。DolphinScheduler可以编排批处理工作流、流数据工作流和MLOps工作流。

通过DolphinScheduler调度SeaTunnel接收器作业,批处理数据可以发到Oracle、SAP、SaaS系统、社交媒体和关系数据库。

01

Apache SeaTunnel


Apache SeaTunenl是一个数据同步项目,支持50多种数据源和输出,如MySQL、Presto、PostgraSQL、TiDB、Elasticsearch。SeaTunnel支持Spark、Flink、SeaTunnel引擎。

SeaTunnel可以使用标签语言生成Flink、Spark、SeaTunnel Engine代码,支持流式和批量数据同步。

开源SeaTunnel有两大用例:

1. 高容量和高频率的数据同步

哔哩哔哩在实际业务中有多数据源、高频次的数据抽取和加载需求,每天数据库与数仓数据同步的日均数据量在100TB以上,涉及数千亿条数据记录。

哔哩哔哩使用SeaTunnel将数据批量加载到ClickHouse。

SeaTunnel解决了他们把数据加载到ClickHouse速度慢且低效的问题,使用后数据可以高效地加载到ClickHouse中。SeaTunnel可以直接生成ClickHouse文件并将其复制到ClickHouse系统中,而不是面向ClickHouse逐行插入数据。这一过程称作ClickHouse系统的批量加载。SeaTunnel还可以将数据批量加载到数据库和系统中,如HBase。

2. 实时的异构数据同步

唯品会和滴滴使用SeaTunnel将MySQL、日志文件、Presto、Kafka、Spark、ClickHouse和Hudi等各种数据源的实时数据同步到其他数据系统,覆盖数十个集群。

SeaTunnel的设计目标是提供一个易用的、分布式、可扩展的数据集成平台,支持具有高吞吐量和高/低延迟的超大数据量。

总的来说,SeaTunnel解决了很多实际痛点:
  • 多种数据来源
企业经常使用大量数据系统,可能有数百个数据源,且版本之间不兼容,新版本不断涌现。SeaTunnel集成了多个数据连接器,并可以节省构建连接器的时间。
  • 批量加载数据和CDC冲突的问题
如果从零开始把数据从一个系统加载到另一个系统,需要把所有数据从一个系统批量加载到另一个系统。存储到源数据系统中的新数据通过CDC(更改数据捕获)过程加载到目标数据系统中。

如果不用SeaTunnel,我们就要有两个不同的数据处理流程做同步数据,而SeaTunnel可以同时处理批量加载数据和CDC数据,用户只需在SeaTunnel中定义一次数据处理即可完成全量和增量数据同步。
  • 技术堆栈复杂
用户无需在SeaTunnel中编写Scala或SQL,我们提供了脚本语言,将来也会有UI支持。
  • 数据质量和监控
SeaTunnel确保数据展示一致性。用户可以回滚到某些点并继续数据处理。
  • 管理和维护困难
如果不用数据同步框架,经常会出现各个数据同步进程被分散地部署和维护的问题,这让管理各种数据处理任务遇到很大的困难。

SeaTunnel不仅可以帮助用户集中地管理和维护数据同步作业,还可以管理数据切割,这可以让数据同步在离线批量数据同步和实时CDC之间顺畅地切换。

SeaTunnel目前支持50+个连接器,包括20+个数据源、20+种接收器和10+种转换。明年内连接器的数量将达到150个。

SeaTunnel社区非常活跃。今年内我们将支持的连接器数量增加了一倍,支持的数据系统包括:InfluxDB, IceBerg, MongoDB, ClickHouse, Doris, Kudu等。

SeaTunnel支持json和许多其他数据转换工具做数据转换,我们支持使用Flink、Spark和SeaTunnel引擎作为数据处理引擎。当数据在同步过程中没有任何转换时,SeaTunnel引擎会比其他两种引擎更加高效。

SeaTunnel Engine可以做实时处理或微批次处理,实现低延迟数据转换,并支持Source/Transform/Sink并行化以提高吞吐量性能。SeaTunnel实现了分布式快照算法、2PC提交和幂等写入,保证exactly-once数据传输。

官网:  https://seatunnel.apache.org 
GitHub:https://github.com/apache/incubator-seatunnel
Slack:  https://apacheseatunnel.slack.com 
Twitter :  https://twitter.com/asfseatunnel 
视频:https://space.bilibili.com/1542095008

02

Apache DolphinScheduler


DolphinScheduler是一个编排工具。

对于Linux用户,使用Cron调度任务和脚本不但难以管理定时任务,且部署任务脚本会比较复杂,频繁更新定时任务脚本还可能会导致稳定性变差。而Azkaban和Airflow等其他调度器工具,又存在管理大数量定时任务性能不佳、缺乏多云数据管理的问题。

DolphinScheduler提供多种可视化的任务调度,其去中心化的设计保证了调度系统的高稳定性和可用性。DolphinScheduler可稳定支持百万级数据,任务同步运行。

DolphinScheduler社区活跃,拥有1000多名活跃用户和350多名社区贡献者。

DolphinScheduler可以拖放任务,无需编程。下图显示了一个具有多个任务的工作流,Shell工作流连接到SQL就,我们称之为DAG。DAG可以很复杂,DAG中可以有子工作流,一个DAG可以被其他工作流作为函数调用。

DolphinScheduler是高性能和高可靠的多worker和master节点架构。DolphinScheduler支持多master和多worker。每个master管理自己的任务和作业。master节点不是活动备节点或主从关系,DolphinScheduler使用哈希算法为不同的master节点调度任务和工作流。

DolphinScheduler用户包括IBM、腾讯、思科等行业领先企业。

DolphinScheduler有三个典型使用场景:

1. 高性能、大容量的任务调度

中国联通最初使用企业内部实现的调度系统,用Shell调用HiveSQL,支持其全球数据平台的数据处理和任务调度。在对比了Airflow、Azkaban等调度框架后中国联通最终选择了DS。

DlophinScheduler支持中国联通按省、市等维度进行调度任务,总工作流和任务数量巨大,DolphinScheduler很好地适应联通的业务和调度功能需求,支持大数据量和低成本的任务调度。

2.  全球云部署

SHEIN最初使用Airflow来调度其国内和国际任务。但是Airflow的集中式设计、缺乏可视化和K8S支持,很难在云原生环境中进行多云的国内国际化的部署。SHEIN选择从Airflow迁移到DolphinScheduler正是因为DS提供了全球云部署、K8S支持、确保稳定性的去中心化架构,当然还有DS对数据用户的友好设计。
DolphinScheduler支持SHEIN部署在K8S上的50,000个任务。SHEIN的数据科学家和数据分析师即使不懂编程,也可以用DolphinScheduler来编排数据任务和工作流。

3. AI/ML编排

DolphinScheduler支持荔枝FM和360的数据科学平台。DolphinScheduler的DAG执行引擎,机器学习任务、AI训练任务和大数据任务可以被管理和重复使用。借助DolphinScheduler的低代码IDE,荔枝FM将数据获取过程连接起来,轻松对训练任务进行建模。

DolphinScheduler将推出一个新版本,3.1.0。

DolphinScheduler 2.X版本提供简单和所见即所得工作流,保证高可靠性,还有丰富的工作流功能,支持云原生且可扩展。3.1.0版本DolphinScheduler支持更多与机器学习相关的编排、数据流功能、Python和YAML工作流。

在3.1.0版本中,用户可以使用DolphinScheduler进行数据准备和MLOps,支持MLflow、Sagemaker、DVC、Jupyter和PyTorch。DolphinScheduler将在今年增加Kubeflow、TensorFlow、Bentoml。DlophinScheduler 3.1.0支持Flink和Spark流和数据流工作流管理,DolphinScheduler工作流可以直接从Python和YAML生成,让工作流的代码审查和版本管理更方便。

PyDolphinScheduler是Apache DolphinScheduler的Python API,用户可以使用Python或YAML代码定义工作流,也称为工作流即代码。工作流实例可以通过DolphinScheduler进行管理。

DolphinScheduler MLOps编排为MLOps提供编排能力,支持多种机器学习相关任务插件,帮助用户构建机器学习平台,能高效低成本地连接大数据平台。

DolphinScheduler可以编排用户现有的机器学习任务,为主流MLOps项目提供开箱即用的编排,通过开源机器学习项目预设算法功能,并提供将机器学习平台与大数据平台连接起来的能力。

用户可以使用Shell或EMR来准备数据,再使用PyTorch进行机器学习任务。

用户可以将机器学习工作流连接到Spark和SageMaker。SageMaker在DolphinScheduler中被视为任务。

DolphinScheduler提供支持机器学习工作流的插件,帮助数据科学家使用DVC和SageMaker管理数据,使用MLflow和SageMaker管理模型。DolphinScheduler支持OpenMLDB和SageMaker等功能存储。用户可以使用Shell、Python、Jupyter、MLflow、PyTorch、SageMaker训练模型,并使用shell、python、MLflow、SageMaker部署模型。

DolphinScheduler支持的机器学习工作流任务插件包括:

DolphinScheduler支持MLOps编排的任务插件:

DolphinScheduler将支持更多的机器学习项目,如TensorFlow、BentoML、KubeFlow和Core。如果您对MLOps及其编排感兴趣,请加入我们的Slack频道。

网站:https://dolphinscheduler.apache.org
GitHub:https://github.com/apache/dolphinscheduler
Wechat:海豚调度 
Slack:https://s.apache.org/dolphinscheduler-slack
推特:@dolphinschedule
视频:https://space.bilibili.com/515596012

SeaTunnel和DolphinScheduler在现代数据堆栈中的位置如下。它们让用户能够更高效地集成数据和编排任务。

郭炜 William Kwok:
Apache软件基金会成员 Apache IPMC成员 Apache DolphinScheduler PMC Apache SeaTunnel导师 ClickHouse中国社区创始人 Apache Con Asia 2021/2022工作流/数据治理分会主席   郭炜曾任联想高级大数据总监。曾在中金、IBM、Teradata担任大数据总监/经理,在大数据技术和数据管理方面拥有超过20年的经验。

领英:https://www.linkedin.com/in/williamk2000/ 
电子邮件:guowei@apache.org
推特:guowei_
William 微信:guodaxia2999


Apache SeaTunnel


Apache SeaTunnel(Incubating) 是一个分布式、高性能、易扩展、用于海量数据(离线&实时)同步和转化的数据集成平台

仓库地址: 
https://github.com/apache/incubator-seatunnel

网址:
https://seatunnel.apache.org/

Proposal:
https://cwiki.apache.org/confluence/display/INCUBATOR/SeaTunnelPro

Apache SeaTunnel(Incubating)  下载地址:
https://seatunnel.apache.org/download
 
衷心欢迎更多人加入!

能够进入 Apache 孵化器,SeaTunnel(原 Waterdrop) 新的路程才刚刚开始,但社区的发展壮大需要更多人的加入。我们相信,在「Community Over Code」(社区大于代码)、「Open and Cooperation」(开放协作)、「Meritocracy」(精英管理)、以及「多样性与共识决策」等 The Apache Way 的指引下,我们将迎来更加多元化和包容的社区生态,共建开源精神带来的技术进步!

我们诚邀各位有志于让本土开源立足全球的伙伴加入 SeaTunnel 贡献者大家庭,一起共建开源!

提交问题和建议:
https://github.com/apache/incubator-seatunnel/issues

贡献代码:
https://github.com/apache/incubator-seatunnel/pulls

订阅社区开发邮件列表 : 
dev-subscribe@seatunnel.apache.org

开发邮件列表:
dev@seatunnel.apache.org

加入 Slack:
https://join.slack.com/t/apacheseatunnel/shared_invite/zt-1cmonqu2q-ljomD6bY1PQ~oOzfbxxXWQ

关注 Twitter: 
https://twitter.com/ASFSeaTunnel

往期推荐




为什么我们要自研全球首款大数据同步引擎 SeaTunnel Engine?




SeaTunnel Connector 接入激励计划第二期“战报”来了!




马蜂窝毕博:分析完这9点工作原理,我们最终选择了 Apache SeaTunnel!



点击“阅读原文”参与活动!

文章转载自SeaTunnel,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论