MaxCompute Streaming Tunnel を使用すると、専用の API とバックエンドサービスを利用して、MaxCompute にデータをストリーミングモードで書き込むことができます。これらの API は、分散サービスの開発コストを大幅に削減し、パーティションロックの競合、小さなファイルの断片化、複雑な同期コードなど、高い同時実行性や高QPS (Queries Per Second) のシナリオにおける MaxCompute Tunnel のパフォーマンスボトルネックを解消します。
MaxCompute Streaming Tunnel は、2021 年 1 月 1 日からパブリックプレビュー中で、プレビュー期間中は無料です。今後の課金変更については、「お知らせ」をご参照ください。
Streaming Tunnel の利用シーン
MaxCompute Streaming Tunnel は、MaxCompute Tunnel を置き換えるものではなく、補完するものです。ワークロードに適したチャネルを決定するには、次の表を使用してください。
| ディメンション | MaxCompute Streaming Tunnel | MaxCompute Tunnel |
|---|---|---|
| データ形式 | ストリーミング行 | バッチ化されたファイル |
| 同時実行性 | 高い同時実行性をサポート、パーティションロックの競合なし | 同時書き込みによりパーティションロックの競合が発生する可能性あり |
| 書き込みスループット | 高QPS に最適化、小さなファイルの断片化を防止 | 高QPS での小さな batch size は多数の小さなファイルを生成 |
| 増分データ | バックグラウンドで非同期にマージされ、サービス中断なし | 組み込みの非同期マージなし、データはそのまま書き込まれる |
| パーティショニング | 同時ジョブ間での自動パーティショニング | 手動パーティション管理が必要 |
| 最適な用途 | リアルタイムログ取り込み、ストリーム処理結果、メッセージキュー同期 | 大規模バッチETL、定期的な一括ロード |
主な機能
-
ストリーミングセマンティックAPI:分散データ同期サービスの開発を容易にし、開発コストを削減します。
-
自動パーティショニング:複数の同期ジョブが同時に同じテーブルに書き込む際の同時パーティションロックを排除します。
-
非同期データマージ:アクティブな書き込み操作を中断することなく、バックグラウンドで増分データをマージし、ストレージ効率を向上させ、小さなファイルの蓄積を防止します。
-
データ集約 (マージ):この機能によりストレージ効率が向上します。
-
zorder byソート:この機能によりストレージとクエリ効率が向上します。
-
-
増分データの非同期
zorder byソート。zorder byの詳細については、「データの挿入または上書き (INSERT INTO | INSERT OVERWRITE)」をご参照ください。
データリンクとメタデータアクセス間の完全な隔離。この機能は、高同時実行書き込みシナリオにおけるメタデータアクセスによって引き起こされるロック競合による遅延とエラーを解決します。
ユースケース
| シナリオ | 説明 |
|---|---|
| リアルタイムイベントログ取り込み | ログデータを MaxCompute に直接書き込み、ダウンストリームバッチ処理に利用します。中間ストレージサービスが不要になり、パイプラインコストを削減します。 |
| ストリーム処理結果の保存 | Flink またはその他のストリームコンピューティング結果を、同時実行数や batch size の制限なしに MaxCompute に永続化し、高頻度書き込みによる小さなファイルの蓄積を回避します。MaxCompute Streaming Tunnel は、高同時実行ロックを伴うシナリオでのストリーミングサービスの可用性を保証します。 |
| メッセージキュー同期 | DataHub または ApsaraMQ for Kafka から MaxCompute へ、高い同時実行性と大量のバッチでデータを同期し、以前 Simple Message Queue コネクタで必要とされていた回避策を置き換えます。 |
アップストリームサービスとの統合
デフォルトでは、Realtime Compute for Apache Flink、DataWorks、および ApsaraMQ for Kafka は MaxCompute Tunnel を介して MaxCompute に書き込みます。Streaming Tunnel に切り替えるには、次の手順を実行します。
| サービス | Streaming Tunnel を有効にする方法 |
|---|---|
| Realtime Compute for Apache Flink | Realtime Compute for Apache Flink が提供する組み込みの Streaming Tunnel プラグインを使用します。 |
| DataWorks | DataWorks の担当エンジニアに連絡して、バックグラウンドで Streaming Tunnel を有効にしてください。 |
| ApsaraMQ for Kafka | Kafka の担当エンジニアに連絡して、バックグラウンドで Streaming Tunnel を有効にしてください。 |
制限事項
書き込み中のテーブルまたはパーティションロック
MaxCompute Tunnel Service は、ストリーミング書き込みの持続時間中、ターゲットテーブルまたはパーティションをロックします。insert into や insert overwrite など、データを変更するすべての DML 操作は、書き込みが完了してロックが解除されるまでブロックされます。
スキーマ変更はサポートされていません
Streaming Tunnel がアクティブな間にターゲットテーブルのスキーマが変更された場合、ストリーミングデータをテーブルに書き込むことはできません。
ホットデータの一時ストレージオーバーヘッド
非同期データマージまたは ZORDER BY が有効になっている場合、Streaming Tunnel は、前の 1 時間以内に書き込まれたデータの 2 つのコピーを保持します。元の取り込みデータと、非同期でマージされたコピーです。この冗長ストレージは、デフォルトの保持期間である 1 時間後に自動的にクリーンアップされます。
マージウィンドウ中にワークロードの取り込みレートが高い場合は、それに応じてストレージ容量を計画してください。