SeaTunnel 本地快速开始:从零部署到跑通第一个数据同步任务的完整指南

发布时间:2026/9/20 2:56:25
SeaTunnel 本地快速开始:从零部署到跑通第一个数据同步任务的完整指南
数据集成ETL大数据批处理流处理变更数据捕获【免费下载链接】seatunnelSeaTunnel is a multimodal, high-performance, distributed, massive data integration tool.项目地址https://gitcode.com/GitHub_Trending/se/seatunnel点击查看免费下载SeaTunnel 是一个多模态、高性能、分布式的海量数据集成工具通过声明式配置即可完成 Source数据来源、Transform数据变换与 Sink数据目标之间的数据流转。本指南以官方文档的本地快速开始路径为主线带你用最短路径在本机完成 SeaTunnel 部署、插件安装、首个任务运行并系统讲解作业配置结构与 Flink/Spark 引擎的可选路径。读完本文你将掌握本地跑通 SeaTunnel 任务的全流程能力并能从内置示例平滑迁移到 MySQL、Doris、Kafka、Iceberg 等真实业务链路。先选一条本地起步路径SeaTunnel 支持多种引擎运行方式不同情况对应不同的推荐入口你的情况推荐入口我想走默认的首跑路径SeaTunnel 引擎快速开始我需要先完成安装和插件准备部署团队已经有 Flink 环境Flink 引擎快速开始团队已经有 Spark 环境Spark 引擎快速开始对大多数第一次接触 SeaTunnel 的用户来说SeaTunnel 引擎Zeta是最推荐的起步路径它由 SeaTunnel 内置无需额外部署第三方计算集群部署最短、反馈最快、最适合作为首跑路径。只有当团队已经维护 Flink 集群或现有作业体系围绕 Spark 时才优先考虑 Flink/Spark 路径。推荐首跑顺序如下先完成部署章节的安装与插件准备安装示例任务所需的插件通过跑第一个任务或SeaTunnel 引擎快速开始跑通首个本地作业示例成功后再进入作业配置指南编写真实作业。更稳妥的顺序仍然是先把本地链路跑通再进入集群部署或远程提交可参考 submit-job-to-remote-zeta-cluster.md。准备工作环境依赖在开始本地运行前需要确保已安装 SeaTunnel 所依赖的软件Java需要 Java 8 或 11其他高于 Java 8 的版本理论上也可以工作并正确设置JAVA_HOME环境变量。下载 SeaTunnel 发行包下载二进制包从 SeaTunnel 下载页面获取最新版本的二进制安装包seatunnel-version-bin.tar.gz也可以通过终端直接下载export version3.0.0 wget https://archive.apache.org/dist/seatunnel/${version}/apache-seatunnel-${version}-bin.tar.gz tar -xzvf apache-seatunnel-${version}-bin.tar.gz解压后得到的apache-seatunnel-${version}目录即${SEATUNNEL_HOME}后续命令均在该目录下执行。下载连接器插件从 2.2.0-beta 版本开始二进制包不再默认提供连接器依赖因此在第一次使用时需要执行以下命令安装连接器sh bin/install-plugin.sh如果需要指定连接器版本以 3.0.0 为例sh bin/install-plugin.sh 3.0.0关于install-plugin.sh的下载机制官方文档给出了明确的版本差异说明正式发布的连接器版本脚本通过 HTTPS 直接下载 JAR 及其校验文件因此 Linux 和 macOS 不需要 Maven。该方式需要curl、mktemp以及sha512sum、sha1sum、shasum或openssl中的任意一个用于校验。Windows 环境install-plugin.cmd仍使用发行包内置的 Maven Wrapper。自定义 Maven 镜像如果需要为install-plugin.sh使用 Maven 兼容的 HTTPS 镜像可通过SEATUNNEL_MAVEN_REPOSITORY指定仓库根地址SEATUNNEL_MAVEN_REPOSITORYhttps://repo.example.com/maven2 \ sh bin/install-plugin.sh 3.0.0快照与版本范围直接下载仅支持提供.sha512或.sha1校验文件的不可变正式版本。SNAPSHOT、LATEST、RELEASE和版本范围需要解析 Maven 元数据此时脚本会自动使用发行包内置的 Maven Wrapper。如果需要继续使用 Mavensettings.xml中的镜像、认证仓库、代理或自定义 TLS 策略也可以设置SEATUNNEL_PLUGIN_DOWNLOAD_METHODmaven。也可以从 Apache Maven Repository 手动下载连接器 JAR放入connectors/目录下如果是 2.3.5 之前的版本则需要放入connectors/seatunnel目录。按需精简插件列表通常情况下你不需要安装全部连接器插件可以通过配置 config/plugin_config 来指定所需插件。以让示例应用正常工作为例只需要connector-console和connector-fake可将plugin_config精简为--seatunnel-connectors-- connector-fake connector-console --end--仓库根目录的 plugin-mapping.properties 列出了所有受支持的连接器及其对应的 plugin_config 配置名称可作为按需选择插件的参考清单。提示手动下载方式下只需下载需要的连接器插件并放入${SEATUNNEL_HOME}/connectors/目录即可。开发者说明本地部署指南默认面向使用官方二进制发行包的用户。如果需要验证未发布代码、调试 SeaTunnel 源码或构建自定义发行包请参考 搭建开发环境。跑第一个任务最短路径验证本地链路这一节只解决一件事用最短路径把 SeaTunnel 真正跑起来。该示例完全本地运行不依赖 MySQL、Kafka 或对象存储适合先确认安装、配置解析和执行引擎都正常。步骤 1先完成本地部署。完成部署章节并确认 SeaTunnel 目录下已经有bin/seatunnel.sh。步骤 2只安装示例真正需要的插件。将 config/plugin_config 收敛为connector-fake与connector-console两个插件然后执行安装命令并确认插件已下载到${SEATUNNEL_HOME}/connectorscd ${SEATUNNEL_HOME} sh bin/install-plugin.sh ls connectors | rg connector-(fake|console)步骤 3使用最小可运行配置。仓库中的 config/v2.batch.config.template 即官方提供的批量任务模板可将下面的配置保存为该文件或你自己的本地配置文件env { parallelism 1 job.mode BATCH } source { FakeSource { plugin_output fake row.num 16 schema { fields { name string age int } } } } transform { FieldMapper { plugin_input fake plugin_output fake1 field_mapper { age age name new_name } } } sink { Console { plugin_input fake1 } }步骤 4用本地模式运行cd apache-seatunnel-${version} ./bin/seatunnel.sh --config ./config/v2.batch.config.template -m local验证结果任务可以正常启动没有 connector 加载错误控制台会打印映射后字段的output rowType行控制台会打印 16 行ConsoleSinkWriter输出批任务在写完全部数据后正常退出。如果这里已经跑通说明本地基础链路正常后面就可以切换到真实数据源和真实目标端。SeaTunnel 引擎Zeta快速开始SeaTunnel Engine 既可以用于单机快速体验也可以部署为多节点集群。使用方式对照如下使用方式适用场景下一步单机快速开始在一台机器上验证配置、连接器或处理链路继续阅读本页的单机快速开始部分集群部署在测试、预发或生产环境中运行多节点任务跳转到 SeaTunnel Engine(Zeta) 安装部署单机快速开始Local 模式适合在单台机器上快速验证安装、连接器和作业配置下面的命令都使用-m local启动 SeaTunnel Engine。运行示例作业步骤 1部署 SeaTunnel 及连接器。按照部署下载并部署 SeaTunnel确保connector-fake与connector-console已安装sh bin/install-plugin.sh。步骤 2添加作业配置文件。编辑config/v2.batch.config.template定义作业它决定了 SeaTunnel 启动后数据输入、处理和输出的方式及逻辑内容与上文的最小可运行配置一致。步骤 3运行 SeaTunnel 应用程序cd apache-seatunnel-${version} ./bin/seatunnel.sh --config ./config/v2.batch.config.template -m local提示从 2.3.1 版本开始seatunnel.sh中的-e参数已被废弃请改用-m参数。-m local表示以本地模式启动 SeaTunnel Engine。查看输出运行命令后SeaTunnel 控制台会打印类似下面的日志信息可据此判断命令运行成功或失败2022-12-19 11:01:45,417 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - output rowType: new_nameSTRING, ageINT 2022-12-19 11:01:46,489 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex0 rowIndex1: SeaTunnelRow#tableId-1 SeaTunnelRow#kindINSERT: CpiOd, 8520946 2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex0 rowIndex2: SeaTunnelRow#tableId-1 SeaTunnelRow#kindINSERT: eQqTs, 1256802974 2022-12-19 11:01:46,490 INFO org.apache.seatunnel.connectors.seatunnel.console.sink.ConsoleSinkWriter - subtaskIndex0 rowIndex3: SeaTunnelRow#tableId-1 SeaTunnelRow#kindINSERT: UsRgO, 2053193072 ...日志中的关键信息有两类第一行output rowType展示经过FieldMapper变换后的字段类型new_nameSTRING, ageINT印证了 transform 的字段重命名与类型推导生效随后的每行ConsoleSinkWriter输出对应一条 FakeSource 生成的模拟数据。从源码结构看这两类日志分别来自 connector-console 的 ConsoleSinkWriter 在写入前的 rowType 打印与逐行写入打印row.num 16决定了打印行数为 16 行与 connector-fake 的 FakeSource 的模拟数据生成逻辑相对应。扩展示例从 MySQL 到 Doris 批处理模式当示例链路跑通后可以将 Source 与 Sink 替换为真实连接器。下面是从 MySQL 批量同步到 Doris 的完整过程。步骤 1下载连接器。在${SEATUNNEL_HOME}/config/plugin_config中加入连接器名称然后执行安装命令最后确认connector-jdbc、connector-doris已在${SEATUNNEL_HOME}/connectors/目录下# 配置连接器名称 --seatunnel-connectors-- connector-jdbc connector-doris --end--# 安装连接器 sh bin/install-plugin.sh步骤 2放入 MySQL 驱动。下载mysql-connector-java驱动 JAR并放置在${SEATUNNEL_HOME}/lib/目录下。步骤 3添加作业配置文件cd seatunnel/job/ vim st.confenv { parallelism 2 job.mode BATCH } source { Jdbc { url jdbc:mysql://localhost:3306/test driver com.mysql.cj.jdbc.Driver connection_check_timeout_sec 100 user user password pwd table_path test.table_name query select * from test.table_name } } sink { Doris { fenodes doris_ip:8030 username user password pwd database test_db table table_name sink.enable-2pc true sink.label-prefix test-cdc doris.config { format json read_json_by_linetrue } } }其中JdbcSource 通过url、driver、user、password建立数据库连接query指定读取 SQLconnection_check_timeout_sec控制连接检查超时DorisSink 通过fenodes指向 Doris FE 地址sink.enable-2pc true开启两阶段提交以保证写入一致性sink.label-prefix设置流式导入 label 前缀doris.config指定 JSON 格式导入参数。步骤 4运行 SeaTunnel 应用程序cd seatunnel/ ./bin/seatunnel.sh --config ./job/st.conf -m local运行成功后控制台会打印作业统计信息例如*********************************************** Job Statistic Information *********************************************** Start Time : 2024-08-13 10:21:49 End Time : 2024-08-13 10:21:53 Total Time(s) : 4 Total Read Count : 1000 Total Write Count : 1000 Total Failed Count : 0 ***********************************************Total Read Count与Total Write Count一致且Total Failed Count为 0说明 1000 条数据全部从 MySQL 读入并成功写入 Doris。如果需要优化作业请参照对应连接器的使用文档调整参数。集群部署如果已经完成单机验证并希望在多节点环境中运行 SeaTunnel Engine请继续阅读 SeaTunnel Engine(Zeta) 安装部署。集群部署文档集中说明了不同部署模式的适用场景包括 Local 模式、混合集群模式和分离集群模式混合集群模式与分离集群模式的部署步骤选择部署模式时的建议。建议如果只是想在一台机器上快速验证配置和任务链路使用 Local 模式即可如果需要多节点运行、资源隔离或更贴近测试和生产环境的部署方式请进入集群部署文档继续操作。集群相关配置示例可参考 config/hazelcast-master.yaml、config/hazelcast-worker.yaml 与 config/seatunnel.yaml。其他引擎路径Flink 与 SparkFlink 引擎快速开始这一页适合已经明确要把 SeaTunnel 跑在 Flink 上的团队。如果你只是第一次评估 SeaTunnel且没有必须使用 Flink 的前提建议先从 SeaTunnel 引擎快速开始入手。步骤 1按部署完成 SeaTunnel 及连接器部署。步骤 2部署并配置 Flink。下载 Flink需要版本 1.12.0然后修改 config/seatunnel-env.sh 中的设置将FLINK_HOME配置为 Flink 的部署目录仓库中该文件默认值为${FLINK_HOME:-/opt/flink}。步骤 3添加作业配置文件。编辑 config/v2.streaming.conf.template内容与示例作业一致env、FakeSource、FieldMapper、Console。步骤 4运行 SeaTunnel 应用程序。根据 Flink 版本选择对应启动脚本Flink 版本1.12.x到1.14.xcd apache-seatunnel-${version} ./bin/start-seatunnel-flink-13-connector-v2.sh --config ./config/v2.streaming.conf.templateFlink 版本1.15.x到1.18.xcd apache-seatunnel-${version} ./bin/start-seatunnel-flink-15-connector-v2.sh --config ./config/v2.streaming.conf.template运行成功后控制台会打印fields : name, age、types : STRING, INT以及row1 : elWaB, 1984352560形式的 16 行数据输出。Spark 引擎快速开始适合已经明确要把 SeaTunnel 跑在 Spark 上的团队。前置阅读可参考引擎概览与SeaTunnel 运行在 Spark 上。步骤 1按部署完成 SeaTunnel 及连接器部署。步骤 2部署并配置 Spark。下载 Spark需要版本 2.4.0然后修改 config/seatunnel-env.sh将SPARK_HOME修改为 Spark 的部署目录仓库中默认值为${SPARK_HOME:-/opt/spark}。步骤 3添加作业配置文件。编辑 config/v2.streaming.conf.template。步骤 4运行 SeaTunnel 应用程序。根据 Spark 版本选择对应启动脚本Spark 2.4.xcd apache-seatunnel-${version} ./bin/start-seatunnel-spark-2-connector-v2.sh \ --master local[4] \ --deploy-mode client \ --config ./config/v2.streaming.conf.templateSpark 3.x.xcd apache-seatunnel-${version} ./bin/start-seatunnel-spark-3-connector-v2.sh \ --master local[4] \ --deploy-mode client \ --config ./config/v2.streaming.conf.template--master local[4]指定本地模式与 4 个执行线程--deploy-mode client指定客户端部署模式。运行成功后的输出格式与 Flink 路径一致fields/types/rowN的 16 行数据。作业配置指南从示例到真实链路SeaTunnel 的大多数作业都通过声明式配置完成无需先写代码而是通过配置文件描述执行环境、数据来源、可选转换以及写入目标。配置结构总览大多数 SeaTunnel 作业遵循相同的顶层结构env { parallelism 1 job.mode BATCH } source { FakeSource { plugin_output fake row.num 16 schema { fields { name string age int } } } } transform { FieldMapper { plugin_input fake plugin_output renamed field_mapper { name user_name age age } } } sink { Console { plugin_input renamed } }从职责上看env控制作业如何执行source定义数据从哪里来transform负责链路中的数据变换可选sink定义数据最终写到哪里。各配置块详解env配置块用于配置作业级别的执行参数常见参数如下参数含义job.modeBATCH或STREAMINGparallelism作业默认并行度job.name可选的作业显示名称checkpoint.interval流作业或 exactly-once 场景下的 checkpoint 间隔如果使用 Flink 或 Spark引擎特定参数也放在env中。仓库中的 config/v2.batch.config.template 同时展示了parallelism 2、job.mode BATCH、checkpoint.interval 10000的写法。source配置块描述 SeaTunnel 如何从外部系统读取数据通常包括连接器名称、连接参数、读取范围表、topic、路径或查询、schema 或 format 相关参数以及用于给下游插件显式引用当前输出的plugin_output。如果一个作业里有多个 source建议显式命名每个 source 的输出。transform配置块是可选的当数据写入目标之前需要过滤、改名、映射、增强或校验时可以在这里完成。常见场景包括字段重命名或字段映射、行过滤、RowKind 处理、SQL 转换、写入前的数据校验。如果业务链路不需要中间转换可以完全省略这一段直接从source到sink。sink配置块定义 SeaTunnel 如何把数据写入目标系统通常包括连接器名称、连接参数、目标表/topic/路径、写入语义或批处理相关参数以及用于声明消费哪个上游输出的plugin_input。不同 sink 的可选项不一样具体参数、默认值和样例以对应连接器文档为准可参考数据来源连接器总览与数据写入连接器总览。plugin_input 与 plugin_output这两个字段是理解 SeaTunnel 数据流向的关键约定plugin_output用来给 source 或 transform 的输出命名plugin_input用来让 transform 或 sink 指向某个上游输出。在以下场景中它们尤其重要一个作业中存在多个 source一个 transform 的输出要写入多个 sink任务链路较复杂需要保证配置可读性。如果链路只有一个上游SeaTunnel 往往可以依赖默认约定继续向下流转但从可维护性角度仍然建议显式命名。支持的配置格式SeaTunnel 支持多种配置方式HOCON默认也是最常用的格式、JSON适合由其他系统自动生成配置、SQL适合 SQL 导向的作业表达方式。格式细节可继续阅读配置文件简介与SQL 配置。如何从示例迁移到真实作业推荐按下面顺序逐步替换保留示例中的env基本结构用真实 Source 替换FakeSource用真实 Sink 替换Console只有在源表结构和目标结构不直接匹配时再补充 transform按连接器要求补充驱动 JAR 或额外依赖。例如MySQL - Doris、Kafka - Iceberg、S3File - StarRocks、PostgreSQL CDC - Kafka。这些端到端场景在 场景教程 recipes 中有完整可运行示例如 MySQL CDC 到 Kafka、MySQL CDC 到 Doris、JDBC 到 S3、Kafka 到 Iceberg、Http 到 JDBC、File 到 StarRocks 与多表 CDC。运行前检查清单在真正启动作业之前建议确认以下事项Java 和JAVA_HOME已正确配置所需插件已经安装第三方驱动 JAR 已就位例如 MySQL 驱动放入${SEATUNNEL_HOME}/lib/Source 凭据与网络访问正确目标表、topic 或路径在需要时已提前创建job.mode与连接器能力相匹配。源码级印证本指南涉及的核心组件本指南涉及的示例链路FakeSource→FieldMapper→Console在仓库中均有对应实现FakeSource 模拟数据源位于 seatunnel-connectors-v2/connector-fake/src负责按schema.fields声明的字段结构生成指定row.num条随机模拟数据是本地验证链路最常用的无外部依赖 SourceConsole Sink 输出位于 seatunnel-connectors-v2/connector-console/src其中ConsoleSinkWriter在写入前打印output rowType逐行打印SeaTunnelRow#kindINSERT: name, age形式的数据与快速开始文档中的控制台输出一一对应JDBC 连接器位于 seatunnel-connectors-v2/connector-jdbc/src用于 MySQL 等关系型数据库的读取与写入共 405 个 Java 源文件是扩展示例中读取 MySQL 的核心Doris 连接器位于 seatunnel-connectors-v2/connector-doris/src支持通过sink.enable-2pc等参数控制写入语义。从源码结构看seatunnel.sh的-m local参数对应 SeaTunnel Engine 的本地运行模式而-e参数从 2.3.1 版本起废弃这与官方文档的说明一致。如需理解 SeaTunnel API 如何被适配到 Flink/Spark可继续阅读 Flink 转换层 与 Spark 转换层。下一步需要先跑通一个可执行示例查看 SeaTunnel 引擎快速开始需要看一条更接近真实业务的完整链路查看 场景教程需要具体参数说明查看数据来源连接器总览和数据写入连接器总览需要了解转换能力查看数据转换总览需要理解引擎差异查看执行引擎概览需要部署多节点 SeaTunnel Engine 集群继续阅读 SeaTunnel Engine(Zeta) 安装部署需要进一步了解 SeaTunnel Engine 本身参阅 SeaTunnel 引擎。只要本地链路跑通后续无论是切换真实数据源、扩展到流式处理还是部署多节点集群都可以在此基础上平滑进行。赞分享数据集成ETL大数据批处理流处理变更数据捕获【免费下载链接】seatunnelSeaTunnel is a multimodal, high-performance, distributed, massive data integration tool.项目地址https://gitcode.com/GitHub_Trending/se/seatunnel点击查看免费下载相关推荐SeaTunnel 本地快速上手指南最短路径跑通你的第一个数据同步任务SeaTunnel 本地快速上手指南最短路径跑通你的第一个数据同步任务 本篇指南围绕 Apache SeaTunnel 的 Local Quick Start数据集成ETL大数据批处理流处理变更数据捕获CloudQuery 快速开始如何从零开始配置你的第一个数据同步CloudQuery 快速开始如何从零开始配置你的第一个数据同步 CloudQuery 是一个高性能的数据管道框架专为云配置和安全数据设计。无论你是想要构建数据集成数据工程数据分析Isaac Lab 快速入门指南从零安装到跑通第一个 RL 训练任务Isaac Lab 快速入门指南从零安装到跑通第一个 RL 训练任务 Isaac Lab 是一个构建在向量化仿真之上的 GPU 加速机器人学习框架环境以数千人工智能强化学习机器人具身智能深度学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考