新世代のデータ統合ツール ETLCloud エントリーの実践: MySQL から ClickHouse への迅速な移行を実現する

バックグラウンド

ビッグ データで最も重要なのはデータであり、データがなければ話すことはありません (GPT は今日非常に普及しており、大量のデータの収集、保存、計算、管理機能の向上による恩恵も受けています)。ビッグデータ プロジェクト開発の主なタスクは大量のデータを収集することであり、そのためには大量のデータを収集する能力が必要です。

実際の作業では、通常、データ ソースが 2 つあり、1 つはログ ファイルから、もう 1 つはデータベースからです。データ ソースごとに多くの収集テクノロジがあり、一般に、ログ ファイル データの収集には Flume、Logstash、Filebeat などのツールが使用され、データベース内のデータの収集には Sqoop、Canal、DataX などのツールが使用されます。

しかし、上記のデータ収集ツールや統合ツールは基本的に開発者向けであり、ユーザーに高い技術力が求められるため、開発者はコマンドラインや設定ファイル、インターフェースなどと向き合い、目的を達成するまでの効率が悪く、注意しないと設定ミスによる移行失敗やデータサービスの中断が発生する可能性があります。今日、マルチソースの異種データ統合ツールである ETLCloud が誕生しました。ETLCloud: 新世代 (インテリジェント) グローバル データ統合プラットフォームで、主流のデータベース、データ ウェアハウス、データ レイク、さらにはメッセージ ミドルウェア製品と互換性があり、完全にローカライズされた適応により、視覚的な自動処理プロセスを提供します。ユーザーは数回クリックするだけでデータ処理タスクを作成し、複数の異種データ ソースでのデータ同期とデータ クリーニングと送信を簡単に実現できます。

実際の運用では、DataX ツールを使用して MySQL データの複数の関連テーブルを ClickHouse OLAP データベースに同期し、最終的に複数テーブルの関連付けの効率的なクエリを実現しました。ここでは、MySQL から ClickHouse への詩データベースの移行タスクを例として、コードゼロ、視覚化、効率的なデータ移行を実現するための ETLCloud Community Edition の使用プロセスをすぐに体験します。

データセットの説明

MySQL データベース内のライブラリ テーブルの詩構造は次のとおりです。データ量は 311828 です。

CREATE TABLE `poetry` (
	`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
	`title` VARCHAR(150) NOT NULL COLLATE 'utf8mb4_unicode_ci',
	`yunlv_rule` TEXT NOT NULL COLLATE 'utf8mb4_unicode_ci',
	`author_id` INT(10) UNSIGNED NOT NULL,
	`content` TEXT NOT NULL COLLATE 'utf8mb4_unicode_ci',
	`dynasty` VARCHAR(10) NOT NULL COMMENT '诗所属朝代(S-宋代, T-唐代)' COLLATE 'utf8mb4_unicode_ci',
	`author` VARCHAR(150) NOT NULL COLLATE 'utf8mb4_unicode_ci',
	PRIMARY KEY (`id`) USING BTREE
)
COLLATE='utf8mb4_unicode_ci'
ENGINE=InnoDB
AUTO_INCREMENT=311829;

詩.jpg

基本的な環境

データベース サービスは、合計 3 つのクラウド ホストを含​​むマルチクラウド環境にデプロイされており、オペレーティング システムと構成は次のとおりです。

  1. MySQL が配置されているホスト (Aliyun)のオペレーティング システム
    : Ubuntu16
root@hostname:~# uname -a
Linux hostname 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

root@iZuf69c5h89bkzv0aqfm8lZ:~# cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.2 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.2 LTS"
VERSION_ID="16.04"

基本構成: 2C8G
データベースバージョン: 5.7.22-0ubuntu0.16.04.1

  1. ClickHouseが配置されているホスト(HUAWEI CLOUD)のOS
    :CentOS 6
[root@ecs-xx-0003 ~]# uname -a
Linux ecs-xx-0003 2.6.32-754.15.3.el6.x86_64 #1 SMP Tue Jun 18 16:25:32 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
[root@ecs-xx-0003 ~]# cat /proc/version 
Linux version 2.6.32-754.15.3.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) ) #1 SMP Tue Jun 18 16:25:32 UTC 2019

基本構成: 4C8G
データベースバージョン: 19.9.5.36

[root@ecs-xx-0003 clickhouse-server]# clickhouse-server --version
ClickHouse server version 19.9.5.36.
  1. ETLCloud ホスト (Tencent Cloud)
    オペレーティング システム: CentOS 7
    基本構成: 2C2G

注: ここでは ETLCloud のコミュニティ バージョンが選択されています。これは軽量で、Docker デプロイメントの使用をすぐに開始できます。エントリー レベルのエクスペリエンスとして、ETLCloud のホスト構成は比較的低いため、実際の運用に向けてホスト構成をアップグレードすることをお勧めします。

移行の実践

次に、移行の実践に入ります。プロセス全体はゼロコードで視覚化され、ドラッグ アンド ドロップで行われ、MySQL から ClickHouse への詩データの迅速なコピー操作はマウスの 1 クリックで完了できます。

データソース構成

データ ソースを構成する前に、ETLCloud Community Edition で現在サポートされているデータ ソースのリストを見てみましょう。
データソース.jpg

  1. ソースの構成: MySQL

左側に提供されているデータ ソース上の MySQL を直接変更し、IP: ポートとユーザーのパスワード情報を入力しました。
ConfigMySQL.jpg
テスト接続は成功しました~
テストMySQL.jpg

  1. シンクの構成: ClickHouse

左側にあるデータ ソースの ClickHouse を直接変更し、IP: ポートとユーザーのパスワード情報を入力しました。
ConfigClickHouse.jpg
テスト接続は成功しました~
テストクリックハウス.jpg

アプリケーションとプロセスを作成する

アプリケーションを作成し、基本的なアプリケーション構成情報を入力します (アプリケーション ID は一意で不変であることに注意してください)。
アプリの作成.jpg
次に、データ フローを作成し、情報を入力します。
フローの作成.jpg
プロセスを作成した後、「プロセス設計」ボタンをクリックしてプロセス視覚化構成ページに入ることができます。
フローOK.jpg

視覚的な構成プロセス

プロセスを構成する前に、この構成ページのさまざまな領域を簡単に紹介します: 左側はコンポーネント領域、中央上部は機能領域、中央の大部分はプロセス描画領域です。描画領域でコンポーネントをダブルクリックすると、ドロワー スタイルでポップアップ表示されるコンポーネントの詳細な構成項目領域が表示されます。

  1. データベーステーブル入力: MySQL

左側の入力コンポーネントで「ライブラリ テーブル入力」を選択し、中央のプロセス描画領域にドラッグし、ダブルクリックして構成ステージに入ります。

ステップ 1: 構成した MySQL データ ソースを選択すると、MySQL に既存のテーブルをロードできます。
ソース1.jpg
ステップ 2: 選択したテーブルに基づいて SQL ステートメントを生成します (実際、ここで複数のテーブルをクエリして、大きな幅のテーブルを形成できます)。
ソース2.jpg
ステップ 3: テーブルから各フィールドの定義を読み取り、フィールドの追加と削除をサポートできます。
ソース3.jpg
ステップ 4: SQL ステートメントに従ってデータ プレビューが自動的に実行され、このようなチェック操作により、後続の操作が正常に実行されることが保証されます。
ソース4.jpg
最後に: 3 番目のステップでは、いくつかの変換ルールをさまざまなフィールドに適用して、データの前処理とクリーニング操作を実現できます。ETLCloud には、一般的に使用される多くのルールが組み込まれています。
ソース5.jpg

  1. ライブラリテーブル出力: ClickHouse

左側の出力コンポーネントで「ライブラリ テーブル出力」を選択し、中央のプロセス描画領域にドラッグし、ダブルクリックして構成ステージに入ります。

ステップ 1: 構成した ClickHouse データ ソースを選択します。最初は ClickHouse に対応するテーブルがないため、ここで最初にテーブル名を手動で入力します。3 番目のステップでは、テーブルを自動的に構築することを選択できます (テーブル構造を MySQL から ClickHouse に自動的にマッピングします、ほめ~) 最初は、テーブルが自動的に構築できるかどうかわかりませんでした。まず、テーブル構造は ETLCloud の別のライブラリ テーブル同期コンポーネントを通じて同期されまし
シンク1.jpg
ステップ 2: テーブルから各フィールドの定義を読み取り、フィールドの追加、削除、ルールのバインドをサポートできます。
シンク2.jpg
ステップ 3: 出力オプションを構成します: テーブル データをクリアするかどうか、テーブルを自動的に構築するかどうかなど。
シンク3.jpg
最後に、startlibrary table inputlibrary table Outputend流程线コンポーネントをそれぞれ接続することで、データ移行の視覚的な構成が完了します。
フロー.jpg

問題記録

  • ClickHouse データ ソースが接続プール メソッドを使用するとエラーが報告される

問題の説明: DB:: 例外: テーブル helloworld.dual が存在しません (バージョン 19.9.5.36) )
問題分析: ClickHouse にはデュアル仮想テーブルがなく、その仮想テーブルは system.one です
解決策: validationQuery=SELECT 1 FROM system.one

  • 主キーが ClickHouse の出力側で構成されていないため、データ抽出プロセスが失敗します。

問題の説明: ClickHouse の出力側で主キーが構成されていないため、データ抽出プロセスが失敗します。
キーエラー.jpg
解決策: ライブラリ テーブルの出力: ClickHouse の 2 番目のステップで、テーブルの主キーを指定します。
キーフィックス.jpg

要約する

上記は、エントリーレベルの ETLCloud データ移行実践であり、ゼロコード、ビジュアル、ドラッグ アンド ドロップ方式で MySQL から ClickHouse へのデータ移行を迅速に完了します。実践プロセス全体では、移行目標を効率的に完了することに加えて、他にもいくつかのポイントがあります: フールプルーフ、視覚化、詳細なログ、動的プロセス監視、豊富なドキュメント。異種データ統合のためのこの強力なツールは、試してみる価値があります。

タスク監視ボード、グローバル制御。
モニター.jpg
データ同期の進行状況を動的に監視し、一目瞭然です。
進捗状況.jpg

参照


ご質問やバグが見つかった場合は、お気軽にご連絡ください。

ご意見やご提案は大歓迎です。

おすすめ

転載: blog.csdn.net/u013810234/article/details/131150450