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 流程。⼀个同步任务的基本结构如下:

{
"job": {
"content": [
{
"nameMapping": {},
"reader": {
"parameter": {},
"name": "reader"
},
"writer": {
"parameter": {},
"name": "writer"
},
"restoration": {
"cache": {
"properties": {}
},
"workerMax": 3,
"workerSize": 3,
"workerNum": 2,
"ddl": {
"properties": {}
}
}
}
],
"setting": {
"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

CREATE TABLE xx(xxx) WITH(xxx);
CREATE VIEW xxx

● DML

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 来进⾏代码依赖管理,对应的打包命令是:

mvn clean package -Dmaven.test.skip

ChunJun 使⽤的是 spotless 插件来进⾏代码⻛格管理,在修改源码之后打包,需要对源码先执⾏下 mvn spotless:apply 命令来进⾏代码格式化,否则会出现格式化不合规问题。

● 目录结构

chunjun-dist
├── chunjun-core.jar
├── connector
├── ddl
├── dirty-data-collector
├── docker-build
├── metrics
└── restore-plugins

通过 ChunJun Client 端提交任务

通过 LocalTest、Standalone、Yarn Session、Yarn Perjob 四种模式为大家介绍如何通过ChunJun Client 端提交任务。

LocalTest 模式(适⽤于本地调试)

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

Standalone 模式

● 环境准备

下载 Flink 并解压

wget "http://archive.apache.org/dist/flink/flink-<flink.version>/flink-<flink.version>-bin-scala_<scala.version>.tgz"
tar -zxvf flink-<flink.version>-bin-scala_<scala.version>.tgz

● 配置 ChunJun

1)下载 ChunJun 并解压

wget "https://github.com/DTStack/chunjun/releases/download/<chunjun-tag>/chunjun-dist.tar.gz"
tar -zxvf chunjun-dist.tar.gz

2)将 ChunJun-Dist 内容复制到 Flink Lib ⽬录下并启动 Flink Standalone 集群

# copy the chunjun-dist to the flink_lib
cp -r chunjun-dist $FLINK_HOME/lib
# start flink standalone cluster
sh $FLINK_HOME/bin/start-cluster.sh

3)在 Flink classpath 中可以看到 ChunJun 相关 jar,表示启动成功;

● 提交任务

sh $CHUNJUN_DIST/bin/chunjun-standalone.sh <task-script path>

命令执⾏成功之后,即可在 Flink WEB UI 中看到对应的任务。

Yarn Session 模式

● 环境准备

1)下载 ChunJun 并解压

wget "https://github.com/DTStack/chunjun/releases/download/<chunjun-tag>/chunjun-dist.tar.gz"
tar -zxvf chunjun-dist.tar.gz

2)下载 ChunJun 并提交到 Yarn Session 集群中

sh $FLINK_HOME/bin?yarn-session.sh -t $CHUNJUN_DIST -d

· 执⾏命令成功之后,即可在Yarn Session ⽇志,对应Classpath 部分中看到 ChunJun 相关的jar, 表示启动成功;

· 记录当前 Yarn Session 的,并将任务提交到指定 Session中;

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 并解压

wget "http://archive.apache.org/dist/flink/flink-<flink.version>/flink-<flink.version>-bin-scala_<scala.version>.tgz"
tar -zxvf flink-<flink.version>-bin-scala_<scala.version>.tgz

● 配置 ChunJun

下载 ChunJun 并解压

wget "https://github.com/DTStack/chunjun/releases/download/<chunjun-tag>/chunjun-dist.tar.gz"
tar -zxvf chunjun-dist.tar.gz

● 提交任务

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 端⼝即可(端⼝号可以⾃⼰定义)。

# debug jobmanager
env.java.opts.jobmanager: -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
# debug taskmanager
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

保姆级教程!玩转 ChunJun 详细指南的更多相关文章

  1. 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)

    写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

  2. 强大博客搭建全过程(1)-hexo博客搭建保姆级教程

    1. 前言 本人本来使用国内的开源项目solo搭建了博客,但感觉1核CPU2G内存的服务器,还是稍微有点重,包括服务器内还搭建了数据库.如果自己开发然后搭建,耗费时间又比较多,于是乎开始寻找轻量型的博 ...

  3. RocketMQ保姆级教程

    大家好,我是三友~~ 上周花了一点时间从头到尾.从无到有地搭建了一套RocketMQ的环境,觉得还挺easy的,所以就写篇文章分享给大家. 整篇文章可以大致分为三个部分,第一部分属于一些核心概念和工作 ...

  4. 自建本地服务器,自建Web服务器——保姆级教程!

    搭建本地服务器,Web服务器--保姆级教程! 本文首发于https://blog.chens.life/How-to-build-your-own-server.html. 先上图!大致思路就是如此. ...

  5. Eclipse for C/C++ 开发环境部署保姆级教程

    Eclipse for C/C++ 开发环境部署保姆级教程 工欲善其事,必先利其器. 对开发人员来说,顺手的开发工具必定事半功倍.自学编程的小白不知道该选择那个开发工具,Eclipse作为一个功能强大 ...

  6. vue-cli环境搭建 (超详细保姆级教程)

    一.使用之前,我们先来掌握3个东西是用来干什么的. npm: Nodejs下的包管理器. webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资 ...

  7. 保姆级教程,如何发现 GitHub 上的优质项目?

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...

  8. 保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

    导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键.但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务 ...

  9. 保姆级教程!手把手教你使用Longhorn管理云原生分布式SQL数据库!

    作者简介 Jimmy Guerrero,在开发者关系团队和开源社区拥有20多年的经验.他目前领导YugabyteDB的社区和市场团队. 本文来自Rancher Labs Longhorn是Kubern ...

  10. 保姆级教程!使用k3d实现K3s高可用!

    你是否曾经想尝试使用K3s的高可用模式?但是苦于没有3个"备用节点",或者没有设置相同数量的虚拟机所需的时间?那么k3d这个方案也许你十分需要噢! 如果你对k3d尚不了解,它的名字 ...

随机推荐

  1. Win10锁屏与关机相关设置-注册表

    禁用锁屏 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\SessionData ...

  2. L2-3 锦标赛

    先画图理解 具体就是先存入每个左右子树的lose,然后存入根的lose和win 然后往下建树,左右的win也可以交换 可以学习这样的完全二叉树存储结构 #include <bits/stdc++ ...

  3. Clion搭建C语言开发环境

    1.下载和安装MinGW 1)下载链接:http://www.mingw.org/ 2)选择安装目录,目录尽可能简单(如:D:\MinGW)且不要包含中文和空格 3)添加相关的包 所需的包如下:min ...

  4. Spring Cloud Config分布式配置中心

    一.Spring Cloud Config分布式配置中心作用:可以通过修改在git仓库中的配置文件实现其它所有微服务的配置文件的修改 二.结构图

  5. Spring Boot 根据配置决定服务(集群、单机)是否使用某些主件

    比如:在集群模式下,我想用 Nacos 组件,单机版不想用它. server: name: VipSoft Server Dev port: 8193 cloud: nacos: discovery: ...

  6. fiddler抓包常用辅助工具

    一.过滤器 1.hosts: 只展示内网或外网的hosts,internet(外网),Intranet(内网) 展示下面的hosts/隐藏下面的hosts/:选择后填写需要设置的hosts(地址前面的 ...

  7. 如何将EndNote 和 Word (office)连接起来

    1,首先在电脑上打开word2019,点击左上角的"文件"菜单. 2,然后在打开的文件菜单中点击"选项"的快捷链接. 3,接下来在打开的Word选项窗口中点击左 ...

  8. Spring创建Bean的三种方式及Bean的生命周期

    目录 Spring创建Bean的三种方式及Bean的生命周期 Spring创建Bean的三种方式 第一种方式:使用默认构造函数创建 第二种方式:使用普通工厂中的方法创建对象 第三种方式:使用工厂中的静 ...

  9. mysql8.0.16 设置远程主机访问

    新版的的mysql版本已经将创建账户和赋予权限的方式分开了 1.创建账户 create user 'root'@'%' identified by '123456'; 注意密码是否符合要求,我用的阿里 ...

  10. 【经验】微信小程序开发 云后台比价(自带云开发、leancloud、bmob)(2022/10/31更新)

    目录 前言 1. 免费配额 2. 超过额度时收费情况 3. 另外的价钱 总结 前言 作为前端开发者,没有购买云服务器的习惯,在只需要使用数据库的情况下,开发微信小程序完全可以用现在免费的云后台. 常用 ...