Project Icon

chunjun

基于Flink的分布式数据集成框架 支持异构数据源

ChunJun是基于Apache Flink的分布式数据集成框架,支持多种异构数据源间的同步和计算。框架提供JSON模板和SQL脚本配置,具备分布式运行、Docker部署、增量同步、实时处理等功能。ChunJun易扩展、灵活性高,在众多企业中稳定运行,为数据集成提供可靠解决方案。

ChunJun

npm version license npm downloads master coverage

英文文档 中文文档

简介

ChunJun是一个分布式集成框架,目前基于Apache Flink。它最初被称为FlinkX,并于2022年2月22日更名为ChunJun。它可以实现各种异构数据源之间的数据同步和计算。到目前为止,ChunJun已在数千家公司稳定部署和运行。

ChunJun官方网站:https://dtstack.github.io/chunjun/

ChunJun的特点

ChunJun将不同的数据库抽象为reader/source插件、writer/sink插件和lookup插件,具有以下特点:

  • 基于实时计算引擎Flink,支持JSON模板和SQL脚本配置任务。SQL脚本兼容Flink SQL语法;
  • 支持分布式运行,支持flink-standalone、yarn-session、yarn-per job等提交方式;
  • 支持Docker一键部署,支持在k8s上部署和运行;
  • 支持多种异构数据源,支持MySQL、Oracle、SQLServer、Hive、Kudu等20多种数据源的同步和计算;
  • 易于扩展,灵活性高,新扩展的数据源插件可以与现有数据源插件即时集成,插件开发者无需关心其他插件的代码逻辑;
  • 不仅支持全量同步,还支持增量同步和区间训练;
  • 不仅支持离线同步和计算,还兼容实时场景;
  • 支持脏数据存储,并提供指标监控等;
  • 配合flink checkpoint机制实现断点续传、任务灾难恢复;
  • 不仅支持同步DML数据,还支持DDL同步,如'CREATE TABLE'、'ALTER COLUMN'等;

构建和编译

获取代码

使用git克隆ChunJun的代码

git clone https://github.com/DTStack/chunjun.git

构建

在项目目录中执行以下命令:

./mvnw clean package

或执行

sh build/build.sh

常见问题

编译'ChunJun-core'模块时抛出'Failed to read artifact descriptor for com.google.errorprone:javac-shaded'

错误信息:

[ERROR]Failed to execute goal com.diffplug.spotless:spotless-maven-plugin:2.4.2:check(spotless-check)on project chunjun-core:
        Execution spotless-check of goal com.diffplug.spotless:spotless-maven-plugin:2.4.2:check failed:Unable to resolve dependencies:
        Failed to collect dependencies at com.google.googlejavaformat:google-java-format:jar:1.7->com.google.errorprone:javac-shaded:jar:9+181-r4173-1:
        Failed to read artifact descriptor for com.google.errorprone:javac-shaded:jar:9+181-r4173-1:Could not transfer artifact
        com.google.errorprone:javac-shaded:pom:9+181-r4173-1 from/to aliyunmaven(https://maven.aliyun.com/repository/public): 
        Access denied to:https://maven.aliyun.com/repository/public/com/google/errorprone/javac-shaded/9+181-r4173-1/javac-shaded-9+181-r4173-1.pom -> [Help 1]

解决方案: 从'https://repo1.maven.org/maven2/com/google/errorprone/javac-shaded/9+181-r4173-1/javac-shaded-9+181-r4173-1.jar'下载'javac-shaded-9+181-r4173-1.jar',然后使用以下命令在本地安装:

mvn install:install-file -DgroupId=com.google.errorprone -DartifactId=javac-shaded -Dversion=9+181-r4173-1 -Dpackaging=jar -Dfile=./jars/javac-shaded-9+181-r4173-1.jar

快速开始

下表显示了ChunJun的分支与Flink版本的对应关系。如果版本不一致,任务中可能会出现'序列化异常'、'NoSuchMethod异常'等问题。

分支Flink版本
master1.16.1
1.12_release1.12.7
1.10_release1.10.1
1.8_release1.8.3

ChunJun支持多种模式运行任务。不同模式依赖不同的环境和步骤。以下是

本地模式

本地模式不依赖Flink环境和Hadoop环境,在本地环境启动一个JVM进程执行任务。

步骤

进入'chunjun-dist'目录并执行以下命令:

sh bin/chunjun-local.sh  -job $SCRIPT_PATH

"$SCRIPT_PATH"参数表示"任务脚本所在的路径"。 执行后,您可以在本地执行任务。

注意:

当您在Windows上打包并在Linux上运行sh时,需要执行命令 sed -i "s/\r//g" bin/*.sh 来修复'\r'问题。

参考视频

独立模式

独立模式依赖于Flink独立环境,不依赖Hadoop环境。

步骤

1. 添加Chunjun的jar包
  1. 找到jar包目录: 如果您使用maven构建此项目,目录名为'chunjun-dist'; 如果您从发布页面下载tar.gz文件,解压后目录名类似'chunjun-assembly-${revision}-chunjun-dist'。

  2. 将jar包复制到Flink的lib目录,命令示例:

cp -r chunjun-dist $FLINK_HOME/lib

注意:此操作应在Flink集群的所有机器上执行,否则某些作业会因ClassNotFoundException而失败。

2. 启动Flink独立集群
sh $FLINK_HOME/bin/start-cluster.sh

启动成功后,Flink Web的默认端口为8081,您可以在'flink-conf.yaml'文件中配置。我们可以访问当前机器的8081端口进入独立集群的Flink Web界面。

3. 提交任务

进入'chunjun-dist'目录并执行以下命令:

sh bin/chunjun-standalone.sh -job chunjun-examples/json/stream/stream.json

命令执行成功后,您可以在Flink Web界面上观察任务状态。

参考视频

Yarn会话模式

Yarn会话模式依赖于Flink jar包和Hadoop环境,在提交任务之前需要启动yarn-session。

步骤

1. 启动yarn-session环境

Yarn会话模式依赖Flink和Hadoop环境。您需要提前设置$HADOOP_HOME和$FLINK_HOME,并且我们需要使用yarn-session的'-t'参数上传'chunjun-dist'。

cd $FLINK_HOME/bin
./yarn-session -t $CHUNJUN_HOME -d
2. 提交任务

通过yarn web获取对应yarn-session的应用ID $SESSION_APPLICATION_ID,然后进入'chunjun-dist'目录并执行以下命令:

sh ./bin/chunjun-yarn-session.sh -job chunjun-examples/json/stream/stream.json -confProp {\"yarn.application.id\":\"SESSION_APPLICATION_ID\"}

'yarn.application.id'也可以在'flink-conf.yaml'中设置。 提交成功后,可以在yarn web上观察任务状态。

参考视频

Yarn Per-Job模式

Yarn Per-Job模式依赖Flink和Hadoop环境。您需要提前设置$HADOOP_HOME和$FLINK_HOME。

步骤

配置正确后即可提交yarn per-job任务。进入'chunjun-dist'目录并执行以下命令:

sh ./bin/chunjun-yarn-perjob.sh -job chunjun-examples/json/stream/stream.json

提交成功后,可以在yarn web上观察任务状态。

连接器文档

详情请访问:https://dtstack.github.io/chunjun/documents/

贡献者

感谢所有贡献者!我们很高兴您能为Chunjun做出贡献。

贡献者

贡献者随时间变化

Stargazers Over Time

许可证

ChunJun采用Apache 2.0许可证。详情请访问LICENSE

联系我们

加入ChunJun Slack。 https://join.slack.com/t/chunjun/shared_invite/zt-1hzmvh0o3-qZ726NXmhClmLFRMpEDHYw

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号