カフカMaxComputeデータ移行のベストプラクティス

前提条件は、
カフカのクラスタを構築し
、データの移行前に、あなたが正しくあなた自身のカフカのクラスタ環境を確保する必要があります。カフカEMRクラスタを構築するための本明細書中で使用される、アリのクラウドサービスの自動化、詳細な手順としては、以下を参照してください。カフカはすぐに開始しました。

EMRカフカこのドキュメントのバージョン情報は以下の通りです:
EMRバージョン:EMR-3.12.1の
クラスタ型:カフカの
ソフトウェア情報:神経節3.7.2のZooKeeper 3.4.12カフカが住んでいた2.11-1.0.1カフカがために使用されるライブマネージャ1.3.3.16
カフカは、クラスタを生きるために使用されるには、独自のネットワークを使用しています以下に示すように、中国は、領域1(杭州)、コンピューティングリソースの主な例は、ECSとパブリックネットワークIP、具体的な構成を設定します。

MaxComputeプロジェクトを作成すると、
MaxComputeサービスを開始し、優れたプロジェクトを作成し、このプロジェクトは、東bigdata_DOC 1(杭州)領域に作成され、以下に示すように、DataWorks関連サービスを開始します。MaxComputeの開口部を参照してください。

背景
カフカは、分散パブリッシュおよびサブスクライブ・メッセージング・ミドルウェアで、高いパフォーマンスは、大量のスループット特性が広く使用されている、秒あたりのメッセージ数百万を扱うことができます。主にユーザーの行動を追跡するために使用されるストリーミングデータを、処理するのに適しカフカは、コレクションや他のシーンを記録します。

典型的なカフカクラスタは、生産者(プロデューサー)、ブローカー、消費者(消費者)の数と飼育係のクラスタで構成されています。クラスタ自体飼育係の管理とコラボレーションサービスを構成することにより、カフカクラスタ。

トピックカフカのクラスタは、メッセージが論理的な概念に格納され、最も一般的なメッセージのコレクションです。トピック物理ディスクが格納されているが、各ノードのパーティションによって特定のメッセージ・トピックのクラスタ内(パーティション)記憶ディスクされません。トピックは、それに送信されたメッセージを複数有していてもよく、各プロデューサは、それ(消費)メッセージを引っ張って、消費者が複数存在してもよいです。

各メッセージは、パーティションに追加される(0から番号、オフセット)オフセットを割り当てられる、メッセージは、パーティション内の固有の番号です。

手順は、
データとテストテーブルを作成するために
、テストデータを作成カフカクラスター
あなたが着陸EMRクラスターヘッダーホストとMaxComputeとDataWorksが円滑かつヘッダーホスト通信EMRクラスター、あなたが最初のEMRクラスタヘッダーホストセキュリティグループを設定することができますを滑らかにすることができますことを保証するために、TCP 22を介して置きますおよびTCP 9092ポート。
クラスタのログEMRヘッダーホストアドレス
EMR Hadoopのクラスタ管理コンソール]> [ホスト一覧]ページには、EMRクラスタヘッダーホストアドレスを確認し、SSH経由でリモートログインを接続してください。

テストトピックの作成
テストを作成し使用する2181 /カフカ-1.0.1 --partitions 10 --replication:使用kafka-topics.sh --zookeeper EMRヘッダ-1 -factor 3 --topic testkafka --create コマンドトピックtestkafkaを。あなたはkafka-topics.sh --list --zookeeper EMR-ヘッダ-1を使用することができます 2181 /カフカ-1.0.1: コマンドビュートピックが作成されています。
[EMRヘッダルート@〜1。]#kafka-topics.sh --zookeeper-EMRヘッダ1:10分の2181 --replication --partitionsカフカ-1.0.1-因子3 --topic testkafka --create。
作成トピック"testkafka。"
[ルートヘッダEMR @〜1。]#kafka-topics.sh --list --zookeeper-EMRヘッダ1:2181 /カフカ-1.0.1
__consumer_offsets
_emrクライアントメトリクス
_schemas
接続、コンフィグ
Qoffsetsコネクト
接続-ステータス
testkafkaの
書き込みテストデータ
アナログ・プロデューサーは、9092 --topic testkafkaコマンドでトピックtestkafkaにデータを書き込む:あなたはkafka-console-producer.sh --brokerリストを使用することができ、EMR-header- 1。カフカは、ストリーミングデータを処理するために使用されるので、あなたは、データへの書き込みを続けることができます。テスト結果を確保するために、我々はあなたが10の以上のデータを書き込むことをお勧めします。
[ルート@ EMR-ヘッダ-1 〜]#kafka-console-producer.sh --brokerリストEMR-ヘッダ-1:9092 --topic testkafka

123
ABC

データを確認するには、あなたがSSHウィンドウを再度開くことができ、同時に有効になるように書かれている、使用kafka-console-consumer.sh --bootstrapサーバEMR-ヘッダ-1:9092 --topic testkafka --from-始めて消費者をシミュレートするためのコマンドを、データが正常にカフカに書き込まれているかどうかを確認します。以下に示すように、データが正常に書き込まれたとき、あなたは、データが書き込まれていることがわかります。

[EMRヘッダルート@〜1。]#kafka-console-consumer.sh --bootstrap-サーバーEMRヘッダ1:--from-始まり9092 --topic testkafka
123
ABCは
MaxComputeテーブルを作成し
、滑らかな受信を確実にするためには、MaxComputeできカフカのデータは、最初MaxComputeにテーブルを作成します。この実施形態は便利なテスト、非パーティション表です。
DataWorksは、テーブルを作成するログ、表の管理を参照してください。

あなたは、次の文は、テーブルの構成を説明するテーブルを構築するためにDDLモードをクリックすることができます。
CREATE TABLE testkafka

`key` string,
`value` string,
`partition1` string,
`timestamp1` string,
`offset` string,
`t123` string,
`event_id` string,
`tag` string

);
ここで、各列は、あなたが自己命名することができ、データ統合DataWorksデフォルトの列カフカリーダーに対応しています。詳細については、構成リーダーカフカが住んでいた参照してください。
重要なメッセージを表して__key__。
__value__は、メッセージの完全な内容を表します。
メッセージは、現在のパーティションことを示し__partition__。
__headers__情報は、現在のメッセージヘッダーことを示しています。
__offset__メッセージは、現在のオフセットを表します。
__timestamp__メッセージの現在のタイムスタンプを表します。
データ同期
新しいカスタムリソースグループの
ために、現在のDataWorksデフォルトのリソース・グループのはカフカのプラグインのための完全なサポートすることはできません、あなたはデータの同期を完了するために、リソースのカスタムセットを使用する必要があります。カスタムリソースグループリソースの詳細は、新しいタスクを参照してください。

これに関連して、カスタム・リソース・グループとしてEMRクラスターヘッダホストを直接使用するリソースを節約するためです。終了したら、サーバの状態が利用可能になるのを待ちます。

新規および同期タスクを実行し
、データ統合ノードをビジネスプロセスのデータ統合を右クリックし、[新規]> [データの同期を選択します。

新しいデータ同期ノードの後、あなたはカフカのデータソースのデータソース、データODPSのデータソースの所在を選択し、odps_firstデフォルトのデータソースを使用する必要があります。新しいtestkafkaの居場所のためのデータテーブルを選択します。上記設定後、ボタンボックスの下をクリックしてください、とスクリプトモードに変換されます。

設定カフカリーダーを参照してください。次のスクリプトコードの解釈を設定します。
{

"type": "job",
"steps": [
    {
        "stepType": "kafka",
        "parameter": {
            "server": "47.xxx.xxx.xxx:9092",
            "kafkaConfig": {
                "group.id": "console-consumer-83505"
            },
            "valueType": "ByteArray",
            "column": [
                "__key__",
                "__value__",
                "__partition__",
                "__timestamp__",
                "__offset__",
                "'123'",
                "event_id",
                "tag.desc"
            ],
            "topic": "testkafka",
            "keyType": "ByteArray",
            "waitTime": "10",
            "beginOffset": "0",
            "endOffset": "3"
        },
        "name": "Reader",
        "category": "reader"
    },
    {
        "stepType": "odps",
        "parameter": {
            "partition": "",
            "truncate": true,
            "compress": false,
            "datasource": "odps_first",
            "column": [
                "key",
                "value",
                "partition1",
                "timestamp1",
                "offset",
                "t123",
                "event_id",
                "tag"
            ],
            "emptyAsNull": false,
            "table": "testkafka"
        },
        "name": "Writer",
        "category": "writer"
    }
],
"version": "2.0",
"order": {
    "hops": [
        {
            "from": "Reader",
            "to": "Writer"
        }
    ]
},
"setting": {
    "errorLimit": {
        "record": ""
    },
    "speed": {
        "throttle": false,
        "concurrent": 1,
        "dmu": 1
    }
}

}
あなたは、ヘッダーのホストkafka-consumer-groups.sh --bootstrapサーバEMR-header-使用することができます 9092 --list:1 group.idパラメータ、および消費者のグループ名を表示するコマンドを。
[ルート@ EMR-ヘッダ-1〜]#kafka-consumer-groups.sh --bootstrap-サーバーEMR-ヘッダ-1:9092 --list
注:これにより、約古い飼育係ベースの情報消費者は表示されません。

-client-メトリック_emrハンドラ基-
コンソール-消費者-69493
コンソール・消費者83505
コンソール・消費者-21030
コンソール・消費者-45322
コンソール・消費者-14773
-消費者-83505をコンソールに、たとえば、あなたは、ヘッダー内のパラメータに基づいてすることができますkafka-consumer-groups.sh --bootstrapサーバEMR-header-使用して、ホスト 9092 --describe --groupコンソール消費者-83505:1 とendOffsetのbeginOffset確認コマンドパラメータを。
[EMR-ヘッダ・ルート@〜1。]#kafka-consumer-groups.sh --bootstrap-SERVER-EMR-ヘッダ1:9092は--describe --groupコンソール消費者-83505
注:これは、古い情報を表示しません消費者ベースのZooKeeper。
コンシューマ・グループ'コンソール・消費者-83 505'を持つアクティブなメンバーNO。
TOPIC PARTITION CURRENT OFFSET-LOG OFFSET-END-CONSUMER LAG-ID-HOSTクライアントID
testkafka 6 0 0 0 - - -
試験6 3 3 0 - - -
testkafka 0 0 0 0 - - -
testkafka 1 1 1 0 - - -
testkafka 5 0 0 0 - - -
スクリプトの設定を完了した後、第一のスイッチタスクリソース・グループは、ちょうどあなたのリソース・グループのために作成[実行]をクリックします。

実行が完了したら、結果は、実行ログに成功し、実行次のログを実行している見ることができます。

結果は、ことを確認し
、新しいデータの開発タスクは、既存のデータは現在のテーブルから同期かどうかを確認するためにカフカからSQL文を実行し作成することができます。この例ではtestkafka SELECT * FROMを使用して、[実行]をクリックした後に声明を。

実行結果が結果、testkafkaトピックのデータ入力を複数確保するために、この場合には、以下の通りである、あなたは、データが一致しているかどうかを確認することができますし、入力します。

おすすめ

転載: yq.aliyun.com/articles/704008