記事ディレクトリ
01 FlinkXとは何ですか?
官网地址:https://dtstack.github.io/chunjun/
Github: https ://github.com/DTStack/chunjun
FlinkX はChunjun に名前が変更されました。これは実際には < a i=4>Flink は、複数の異種データ ソースと</u?。
FlinkX は、さまざまなデータベースを reader/source
プラグイン、writer/sink
プラグイン、lookup
ディメンション テーブル プラグインに抽象化します。 には次の特徴があります:
- リアルタイム コンピューティング エンジン Flink に基づいており、JSON テンプレート構成タスクをサポートし、構文;
- は分散操作をサポートし、
flink-standalone
、yarn-session
、yarn-per job
などの複数の送信方法をサポートします。 - 支持
Docker
一键部署,支持K8S
部署运行; - はさまざまな異種データ ソースをサポートし、20 を超えるデータ ソースの同期と計算をサポートできます。
MySQL、Oracle、SQLServer、Hive、Kudu
; - 拡張が容易で柔軟性が高く、新しく拡張されたデータ ソース プラグインは既存のデータ ソース プラグインと即座に相互運用でき、プラグイン開発者は他のプラグインのコード ロジックを気にする必要がありません。
- 完全同期をサポートするだけでなく、増分同期とインターバルローテーショントレーニングもサポートします。
- バッチとストリームを統合することで、オフラインの同期と計算をサポートするだけでなく、リアルタイムのシナリオとも互換性があります。
- ダーティ データ ストレージをサポートし、インジケーターの監視などを提供します。
- と協力して
checkpoint
、ブレークポイントの再開を実現します。 - データの
DML
同期だけでなく、Schema
変更の同期もサポートします。
実際、json
に基づくテンプレート構成は DataX
に似ています。前のブロガーは に関するチュートリアルも書いています。 =3> 、興味のある学生は 「DataX 列」 を参照してください。 さて、次はチュートリアルに従って Chunjun を使って MySQL と MySQL を同期する機能を実装します。 DataX
02 FlinkX を使用して MySQL を MySQL に同期する
2.1 ソースコードのコンパイル
まず、Chunjun のソース コードを複製します。ダウンロード速度を向上させるために、gitee ウェアハウスを直接複製できます:https://gitee.com/ dtstack_dev_0/chunjun.git 。
clone
が完了すると、Chunjun
のディレクトリ構造が次のとおりであることがわかります (注釈)。
- bin # 存放执行脚本的目录
├── chunjun-docker.sh # Docker 启动脚本
├── chunjun-kubernetes-application.sh # Kubernetes 应用模式启动脚本
├── chunjun-kubernetes-session.sh # Kubernetes 会话模式启动脚本
├── chunjun-local.sh # 本地启动脚本
├── chunjun-standalone.sh # 单机模式启动脚本
├── chunjun-yarn-perjob.sh # YARN 每作业模式启动脚本
├── chunjun-yarn-session.sh # YARN 会话模式启动脚本
├── start-chunjun # 通用启动脚本
└── submit.sh # 提交任务脚本
- build # 构建脚本目录
└── build.sh # 构建脚本
- chunjun-assembly # 汇总装配模块目录
- chunjun-clients # 客户端模块目录
- chunjun-connectors # 连接器模块目录
├── (多个子目录) # 不同的数据连接器子模块
- chunjun-core # 核心模块目录
- chunjun-ddl # 数据定义语言模块目录
├── chunjun-ddl-base # DDL 基础模块
├── chunjun-ddl-mysql # MySQL DDL 模块
├── chunjun-ddl-oracle # Oracle DDL 模块
- chunjun-dev # 开发工具模块目录
├── (多个子目录) # 包含开发用的各种工具和资源
- chunjun-dirty # 脏数据处理模块目录
├── (多个子目录) # 不同的脏数据处理子模块
- chunjun-docker # Docker 相关模块目录
├── (多个子目录) # Docker 相关资源和配置
- chunjun-e2e # 端到端测试模块目录
- chunjun-examples # 示例模块目录
├── json # JSON 示例
└── sql # SQL 示例
- chunjun-local-test # 本地测试模块目录
- chunjun-metrics # 指标监控模块目录
├── (多个子目录) # 包含不同的监控模块
- chunjun-restore # 数据恢复模块目录
├── chunjun-restore-common # 通用数据恢复模块
└── chunjun-restore-mysql # MySQL 数据恢复模块
コンパイルの前提条件: JDK と MAVEN。ここでは詳しく説明しません。
コンパイルコマンドを実行します。
mvn clean package -DskipTests
正常にコンパイルされました:
すべてのリソースは、プロジェクト ディレクトリの下の出力ディレクトリにあります。
これを解凍して、このディレクトリの内容を確認してみましょう。
├── bin
│ ├── chunjun-docker.sh
│ ├── chunjun-kubernetes-application.sh
│ ├── chunjun-kubernetes-session.sh
│ ├── chunjun-local.sh
│ ├── chunjun-standalone.sh
│ ├── chunjun-yarn-perjob.sh
│ ├── chunjun-yarn-session.sh
│ ├── start-chunjun
│ └── submit.sh
├── chunjun-dist
│ ├── chunjun-core.jar
│ ├── connector
│ ├── ddl
│ ├── dirty-data-collector
│ ├── docker-build
│ ├── metrics
│ └── restore-plugins
├── chunjun-examples
│ ├── json
│ └── sql
└── lib
├── chunjun-clients.jar
├── log4j-1.2-api-2.19.0.jar
├── log4j-api-2.19.0.jar
├── log4j-core-2.19.0.jar
└── log4j-slf4j-impl-2.19.0.jar
上記の内容でタスクを送信できます。タスク送信タイプは次のとおりです: local
(デフォルト値)、 standalone
、 yarn-session
、 yarn-per-job
、< /span> モードを使用して、提出する 。 次に、 、詳細については、ClusterMode クラスを参照してください。 kubernetes-session
、kubernetes-application
local
2.2 タスクを送信する
サンプルを実行するためにコンテンツを直接変更できます (場所「Unzip directory/chunjun-examples/json/mysql」)。< /span> a>
「mysql_mysql_realtime.json」の内容を直接変更します。
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"column": [
{
"name": "id",
"type": "int"
},
{
"name": "name",
"type": "string"
},
{
"name": "age",
"type": "int"
}
],
"customSql": "",
"where": "id < 1000",
"splitPk": "id",
"startLocation": "2",
"polling": true,
"pollingInterval": 3000,
"queryTimeOut": 1000,
"username": "root",
"password": "root",
"connection": [
{
"jdbcUrl": [
"jdbc:mysql://127.0.0.1:32306/test?useSSL=false"
],
"table": [
"t_user"
]
}
]
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"username": "root",
"password": "root",
"connection": [
{
"jdbcUrl": "jdbc:mysql://127.0.0.1:32306/test?useSSL=false",
"table": [
"t_user_copy"
]
}
],
"writeMode": "insert",
"flushIntervalMills":"3000",
"uniqueKey": ["id"],
"column": [
{
"name": "id",
"type": "int"
},
{
"name": "name",
"type": "string"
},
{
"name": "age",
"type": "int"
}
]
}
}
}
],
"setting": {
"restore": {
"restoreColumnName": "id"
},
"speed": {
"channel": 1,
"bytes": 0
}
}
}
}
宿題を提出します:
cd 安装目录/bin
sh chunjun-local.sh -job ../chunjun-examples/json/mysql/mysql_mysql_realtime.json
起動すると、次のように表示されます。
起動後 (DataX と非常によく似ています):
t_user テーブルのデータが t_user_copy テーブルに同期されていることがわかります。
03 記事の終わり
さて、この記事では主に FlinkX の簡単な使い方を簡単に説明し、その原理とソース コードについては後ほど続けて説明します。皆様のお役に立てれば幸いです。読んでいただきありがとうございます。この記事は完了です。