ChunJun是一个分布式集成框架,目前基于Apache Flink。它最初被称为FlinkX,于2022年2月22日更名为ChunJun。它可以实现各种异构数据源之间的数据同步和计算。目前ChunJun已在上千家企业部署并稳定运行。
ChunJun官网:https://dtstack.github.io/chunjun/
ChunJun将不同的数据库抽象为reader/source插件、writer/sink插件和lookup插件,它具有以下特点:
使用git克隆ChunJun的代码
git clone https://github.com/DTStack/chunjun.git
在项目目录下执行命令。
./mvnw clean package
或者执行
sh build/build.sh
错误信息:
[ 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-”下载“javac-shaded-9+181-r4173-1.jar” 1/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版本的对应关系。如果版本不对齐,任务中会出现mysql‘序列化异常’、‘NoSuchMethod异常’等问题。
分支机构 | Flink版本 |
---|---|
掌握 | 1.16.1 |
1.12_发布 | 1.12.7 |
1.10_发布 | 1.10.1 |
1.8_发布 | 1.8.3 |
ChunJun支持多种模式运行任务。不同的模式取决于不同的环境和步骤。以下是
本地模式不依赖于Flink环境和Hadoop环境,在本地环境中启动JVM进程来执行任务。
进入“chunjun-dist”目录并执行以下命令:
sh bin/chunjun-local.sh -job $SCRIPT_PATH
“$SCRIPT_PATH”参数的意思是“任务脚本所在的路径”。执行后,就可以在本地执行任务了。
笔记:
when you package in windows and run sh in linux , you need to execute command sed -i "s/r//g" bin/*.sh to fix the 'r' problems.
参考视频
Standalone模式依赖于Flink Standalone环境,不依赖于Hadoop环境。
查找 jars 目录:如果使用 maven 构建此项目,则目录名称为 'chunjun-dist' ;如果您从release页面下载tar.gz文件,解压后,目录名称将类似于“chunjun-assemble-${revision}-chunjun-dist”。
将 jar 复制到 Flink lib 目录,命令示例:
cp -r chunjun-dist $FLINK_HOME /lib
注意:该操作需要在Flink集群的所有机器上执行,否则部分作业会因为ClassNotFoundException而失败。
sh $FLINK_HOME /bin/start-cluster.sh
启动成功后,Flink Web 默认端口为 8081,可以在“flink-conf.yaml”文件中配置。我们可以访问本机的8081端口,进入standalone集群的flink web。
进入“chunjun-dist”目录并执行以下命令:
sh bin/chunjun-standalone.sh -job chunjun-examples/json/stream/stream.json
命令执行成功后,可以在flink web上观察任务状态。
参考视频
YarnSession 模式取决于 Flink jar 和 Hadoop 环境,在任务提交之前需要启动yarn-session。
Yarn-Session 模式依赖于 Flink 和 Hadoop 环境。您需要提前设置$HADOOP_HOME和$FLINK_HOME,并且我们需要使用yarn-session'-t'参数上传'chunjun-dist'。
cd $FLINK_HOME /bin
./yarn-session -t $CHUNJUN_HOME -d
通过yarn web获取yarn-session对应的application 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 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
提交成功后,可以在纱网上观察任务状态。
详情请访问:https://dtstack.github.io/chunjun/documents/
感谢所有贡献者!我们很高兴您能为Chunjun 做出贡献。
ChunJun 使用 Apache 2.0 许可证。请访问许可证了解详细信息。
加入 ChunJun Slack。 https://join.slack.com/t/chunjun/shared_invite/zt-1hzmvh0o3-qZ726NXmhClmLFRMpEDHYw