保姆级教程!玩转 ChunJun 详细指南

打印 上一主题 下一主题

主题 536|帖子 536|积分 1610

ChunJun是一款稳定、易用、高效、批流一体的数据集成框架,⽀持海量数据的同步与计算。ChunJun 既可以采集静态的数据,比如 MySQL,HDFS 等,也可以采集实时变化的数据,比如 binlog,Kafka 等。同时 ChunJun 也是一个支持原生 FlinkSQL 所有语法和特性的计算框架。
经过5年的迭代和开发,ChunJun 已经帮助很多公司快速进行数据整合,并解决数据开发人员需要过多进行繁琐的数据抽取工作的问题,可以专注在企业业务场景的构建。
之前的内容当中,我们已经介绍过 ChunJun 的技术力、优势,及如何提交 pr、Issue 的方法。作为「chunJun 新手入门」系列的第三篇,本文将为大家介绍如何配置一个 ChunJun 任务以及通过 ChunJun Client 端提交任务的流程等内容,教会大家更好地玩转 ChunJun。
ChunJun 新手入门

Hi,我是ChunJun,一个有趣好用的开源项目
Ding!您有一份ChunJun实用指南,请查收
ChunJun 地址

官网:
https://dtstack.github.io/chunjun/
GitHub:
https://github.com/DTStack/chunjun
Gitee:
https://gitee.com/dtstack_dev_0/chunjun
配置一个 ChunJun 任务

ChunJun 的任务脚本⽀持两种模式:Sync(Json) 和 SQL,前者配置更加丰富,底层使⽤的是 StreamAPI,在同步场景使⽤的较多;后者借助 Flink SQL 本身的能⼒,利⽤ SQL 实现对数据的聚合等计算操作,底层使⽤的是 TableAPI。
Sync

同步任务使⽤的 Json 格式的配置⽂件,通过配置 Source/Sink 来完成数据的 EL 流程。⼀个同步任务的基本结构如下:
  1. {
  2. "job": {
  3. "content": [
  4. {
  5. "nameMapping": {},
  6. "reader": {
  7. "parameter": {},
  8. "name": "reader"
  9. },
  10. "writer": {
  11. "parameter": {},
  12. "name": "writer"
  13. },
  14. "restoration": {
  15. "cache": {
  16. "properties": {}
  17. },
  18. "workerMax": 3,
  19. "workerSize": 3,
  20. "workerNum": 2,
  21. "ddl": {
  22. "properties": {}
  23. }
  24. }
  25. }
  26. ],
  27. "setting": {
  28. "restore": {},
复制代码
● Job 整个任务的参数配置
1)同步任务的算⼦配置,如 Reader/Writer/Restoration 等。
• nameMapping:表名映射配置,⽤在 CDC 场景
• reader:同步任务 reader 的配置
• writer:同步任务writer的配置
• restoration:数据还原相关配置
2)setting 系统的⼀些参数配置,如增量同步(restore)、流控(speed)等。
SQL

ChunJun 的 SQL 任务直接沿⽤了 FlinkSQL 的引擎。详细⽂档请看:
https://nightlies.apache.org/flink/flink-docs-release-1.16/docs/dev/table/overview/
● DDL
  1. CREATE TABLE xx(xxx) WITH(xxx);
  2. CREATE VIEW xxx
复制代码
● DML
  1. INSERT INTO xxx;
复制代码
获取 ChunJun

前置准备

· Java(JDK8);
· Maven(3.6.3,版本太低会找不到对应的 jar,另外,⾼版本的 Maven 对仓库地址强制要求是 HTTPS,会存在仓库地址访问失败的情况)
ChunJun 下载

● release 下载
ChunJun release 下载地址:
https://github.com/DTStack/chunjun/releases
● 源码编译
源码下载:
https://github.com/DTStack/chunjun.git
ChunJun 是通过 Maven 来进⾏代码依赖管理,对应的打包命令是:
  1. mvn clean package -Dmaven.test.skip
复制代码
ChunJun 使⽤的是 spotless 插件来进⾏代码⻛格管理,在修改源码之后打包,需要对源码先执⾏下 mvn spotless:apply 命令来进⾏代码格式化,否则会出现格式化不合规问题。
● 目录结构
  1. chunjun-dist
  2. ├── chunjun-core.jar
  3. ├── connector
  4. ├── ddl
  5. ├── dirty-data-collector
  6. ├── docker-build
  7. ├── metrics
  8. └── restore-plugins
复制代码
通过 ChunJun Client 端提交任务

通过 LocalTest、Standalone、Yarn Session、Yarn Perjob 四种模式为大家介绍如何通过ChunJun Client 端提交任务。
LocalTest 模式(适⽤于本地调试)

Local Test 模式是针对开发者同学⽤来进行本地测试验证的模块,只需要修改 main() 中的 jobPath 路径即可,需要注意,同步任务的脚本请以 json ⽂件结尾,计算任务的脚本请以 sql ⽂件结尾。
Standalone 模式

● 环境准备
下载 Flink 并解压
  1. wget "http://archive.apache.org/dist/flink/flink-<flink.version>/flink-<flink.version>-bin-scala_<scala.version>.tgz"      
  2. tar -zxvf flink-<flink.version>-bin-scala_<scala.version>.tgz
复制代码
● 配置 ChunJun
1)下载 ChunJun 并解压
  1. wget "https://github.com/DTStack/chunjun/releases/download/<chunjun-tag>/chunjun-dist.tar.gz"  
  2. tar -zxvf chunjun-dist.tar.gz
复制代码
2)将 ChunJun-Dist 内容复制到 Flink Lib ⽬录下并启动 Flink Standalone 集群
  1. # copy the chunjun-dist to the flink_lib
  2. cp -r chunjun-dist $FLINK_HOME/lib
  3. # start flink standalone cluster
  4. sh $FLINK_HOME/bin/start-cluster.sh
复制代码
3)在 Flink classpath 中可以看到 ChunJun 相关 jar,表示启动成功;
● 提交任务
  1. sh $CHUNJUN_DIST/bin/chunjun-standalone.sh <task-script path>
复制代码
命令执⾏成功之后,即可在 Flink WEB UI 中看到对应的任务。
Yarn Session 模式

● 环境准备
1)下载 ChunJun 并解压
  1. wget "https://github.com/DTStack/chunjun/releases/download/<chunjun-tag>/chunjun-dist.tar.gz"  
  2. tar -zxvf chunjun-dist.tar.gz
复制代码
2)下载 ChunJun 并提交到 Yarn Session 集群中
  1. sh $FLINK_HOME/bin?yarn-session.sh -t $CHUNJUN_DIST -d
复制代码
· 执⾏命令成功之后,即可在Yarn Session ⽇志,对应Classpath 部分中看到 ChunJun 相关的jar, 表示启动成功;
· 记录当前 Yarn Session 的,并将任务提交到指定 Session中;
  1. sh ./bin/chunjun-yarn-session.sh -job <task-script path> -confProp {"yarn.application.id":"<ApplicationID>"}
复制代码
之后就可以在 Yarn Session 中看到对应的任务,注意以下两点:
• 如果将 yarn.application.id 配置到 flink-conf.yaml,那么使⽤这份配置⽂件的任务都会提交到这个 id 的 session 中;
• 如果将 yarn.application.id 配置到 confProp,那么仅有当前任务会提交到这个 id 的 session 中。
Yarn Perjob 模式

后续会废弃这种模式,改⽤ Application 模式。
● 环境准备
下载 Flink 并解压
  1. wget "http://archive.apache.org/dist/flink/flink-<flink.version>/flink-<flink.version>-bin-scala_<scala.version>.tgz"      
  2. tar -zxvf flink-<flink.version>-bin-scala_<scala.version>.tgz
复制代码
● 配置 ChunJun
下载 ChunJun 并解压
  1. wget "https://github.com/DTStack/chunjun/releases/download/<chunjun-tag>/chunjun-dist.tar.gz"  
  2. tar -zxvf chunjun-dist.tar.gz
复制代码
● 提交任务
  1. sh ./bin/chunjun-yarn-perjob.sh -job <task-script path>
复制代码
执⾏成功之后,可以在 Yarn Web UI 中看到相关任务。
调试 ChunJun 代码

调试代码能够更好地定位问题,并解决问题。下⾯将为开发者介绍如何快速调试 ChunJun 代码:
本地调试

ChunJun 为开发者准备了⼀个 local-test 模块,替换 main ⽅法中的 jobPath 即可。需要提前将相关插件配置在 local-test 模块的 pom 中,部分插件相互存在依赖冲突,需要开发者关注下。
远程调试

在 flink-conf.yaml 中配置 debug 端⼝即可(端⼝号可以⾃⼰定义)。
  1. # debug jobmanager
  2. env.java.opts.jobmanager: -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
  3. # debug taskmanager
  4. env.java.opts.taskmanager: -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5006
复制代码
《数据治理行业实践白皮书》下载地址:https://fs80.cn/380a4b
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=szbky
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术qun」,交流最新开源技术信息,qun号码:30537511,项目地址:https://github.com/DTStack

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南七星之家

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表