データ統合フレームワーク FlinkX の入門 (Chunjun)

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-standaloneyarn-sessionyarn-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 (デフォルト値)、 standaloneyarn-sessionyarn-per-job、< /span> モードを使用して、提出する 。 次に、 、詳細については、ClusterMode クラスを参照してください。 kubernetes-sessionkubernetes-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 の簡単な使い方を簡単に説明し、その原理とソース コードについては後ほど続けて説明します。皆様のお役に立てれば幸いです。読んでいただきありがとうございます。この記事は完了です。

おすすめ

転載: blog.csdn.net/qq_20042935/article/details/134163899