Alibaba Cloud Realtime Compute for Apache Flink は、Apache Flink を基盤とするエンタープライズ向け高性能リアルタイムビッグデータ処理プラットフォームです。Hologres は Flink と緊密に統合されており、ストリーミングデータのリアルタイム書き込みおよびクエリが可能で、効率的にリアルタイムデータウェアハウスを構築できます。
サービスタイプ
Realtime Compute for Apache Flink はデータを保存しません。外部ストレージシステムからデータを処理し、以下のデータストレージタイプをサポートします。
ソーステーブル
ソーステーブルは Flink ジョブへの入力データを提供します。Hologres テーブルをソーステーブルとして使用する場合、データはストリーミングモードではなくバッチモードでインポートされます。Hologres は全表スキャンを実行し、データをダウンストリームの送信先に送信した後、ジョブが完了します。
ディメンションテーブル
ディメンションテーブルは通常、キーによるポイントルックアップに使用されます。そのため、Hologres テーブルをディメンションテーブルとして使用する場合は、行指向ストレージ(Row-oriented Storage)の利用を推奨します。JOIN 条件には、テーブルの完全なプライマリキーを使用する必要があります。
結果テーブル
結果テーブルは Flink 処理からの出力データを受信・保存します。ダウンストリームでの消費のために読み取りおよび書き込みインターフェイスを提供します。
Realtime Compute for Apache Flink は Hologres と深く統合され、以下のエンタープライズ向け高度機能を提供します。
Hologres バイナリログの消費
この機能により、メッセージキュー方式で Hologres テーブルの変更ログを消費できます。
Flink Catalog
Hologres のメタデータを Flink 内のカタログとしてインポートできます。これにより、テーブルを手動で登録することなく、Fully Managed Flink コンソールから直接 Hologres のメタデータを読み取ることが可能です。この機能は開発効率を向上させ、スキーマの正確性を保証します。
スキーマ進化
Fully Managed Flink はスキーマ進化をサポートしています。Flink が JSON データを読み取る際、データ型を自動的に解析して対応するテーブル列を作成し、動的なデータモデル進化を実現します。
以下の表では、Hologres がサポートする Flink サービスタイプおよびその特徴について説明します。
サービスタイプ | データストレージタイプ | 高度機能 | 説明 | ||||
ソーステーブル | 結果テーブル | ディメンションテーブル | Hologres バイナリログ | Flink Catalog | スキーマ進化 | ||
Semi-managed Flink | 行指向ストレージおよび列指向ストレージの両方をサポートします。バイナリログソーステーブルの場合、行指向ストレージまたはハイブリッド行列表示ストレージの利用を推奨します。 | 行指向ストレージおよび列指向ストレージの両方をサポートします。 | 行指向ストレージまたはハイブリッド行列表ストレージの使用を推奨します。 | 対応 | 対応 | 対応 | EMR Studio 開発プラットフォームを使用します。 |
Blink in exclusive mode(非推奨) | 行指向ストレージおよび列指向ストレージの両方をサポートします。バイナリログソーステーブルの場合、行指向ストレージまたはハイブリッド行列表示ストレージの利用を推奨します。 | 行指向ストレージおよび列指向ストレージの両方をサポートします。 | 行指向ストレージまたはハイブリッド行列表示ストレージの利用を推奨します。 | Hologres V0.8 では行指向ストレージのみをサポートします。Hologres V0.9 以降では、行指向および列指向ストレージの両方をサポートします。行指向ストレージの利用を推奨します。 | 非対応 | 非対応 | ベイズ開発プラットフォームを使用します。 フルマネージド Flink の使用を推奨します。 |
Apache Flink V1.10 | 非対応 | 行指向ストレージおよび列指向ストレージの両方をサポートします。 | 非対応 | 非対応 | 非対応 | 非対応 | ― |
Apache Flink V1.11 以降 | 非対応 | 行指向ストレージおよび列指向ストレージの両方をサポートします。 | 行指向ストレージの利用を推奨します。 | 非対応 | 非対応 | 非対応 | Hologres コネクタのコードは Apache Flink V1.11 以降でオープンソース化されています。詳細については、「alibabacloud-hologres-connectors」をご参照ください。 |
Apache Flink V1.13 以降 | 対応 | 行指向ストレージおよび列指向ストレージの両方をサポートします。 | 行指向ストレージの利用を推奨します。 | 非対応 | 非対応 | 非対応 | Hologres コネクタのコードは Apache Flink V1.11 以降でオープンソース化されています。詳細については、「alibabacloud-hologres-connectors」をご参照ください。 |
Hologres コネクタのリリースノート
Flink バージョン | VVR バージョン | Hologres バージョン | 更新情報 | 参考資料 |
1.20 | 11.6 | 3.2.x 4.0.x 4.1.x | ソーステーブル:
Catalog:
一般:
| |
1.20 | 11.5 | 3.2.x 4.0.x 4.1.x | ソーステーブル:
ディメンションテーブル:
一般:
バグ修正:
| |
1.20 | 11.4 | 3.2.x 4.0.x 4.1.x | 結果テーブル:
ディメンションテーブル:
バグ修正:
| |
1.20 | 11.3 | 3.1.x 3.2.x 4.0.x | ソーステーブル:
シンクテーブル:
一般:
バグ修正:
| |
1.20 | 11.2 | 3.1.x 3.2.x 4.0.x | シンクテーブル:
一般:
バグ修正:
| |
1.20 | 11.1 | 3.1.x 3.2.x | ソーステーブル:
結果テーブル:
ディメンションテーブル:
一般:
| |
1.20 | 11.0 | 3.1.x 3.2.x | 一般:
ソーステーブル:
| |
1.17 | 8.0.11 | 2.1.x 2.2.x 3.0.x | ソーステーブル:
結果テーブル:
一般:
バグ修正:
| |
1.17 | 8.0.9~8.0.10 | 2.1.x 2.2.x 3.0.x |
| |
1.17 | 8.0.8 | 2.1.x 2.2.x | 結果テーブル:
| |
1.17 | 8.0.7 | 2.1.x | ディメンションテーブル:
一般:
| |
1.17 | 8.0.6 | 2.1.x | ソーステーブル:
一般:
| |
1.17 | 8.0.5 | 2.0.x 2.1.x | ソーステーブル:
結果テーブル:
一般:
| |
1.17 | 8.0.4 | 2.0.x 2.1.x | ソーステーブル:
一般:
| |
1.17 | 8.0.3 | 2.0.x 2.1.x | 一般:
| |
1.15 | 6.0.7 |
|
| |
1.15 | 6.0.6 | 1.3.x | ソーステーブル:
| |
1.15 | 6.0.5 | 1.3.x |
| |
1.15 | 6.0.3~6.0.4 | 1.3.x | ソーステーブル:
結果テーブル: Fixed Copy モードによるデータ書き込みのサポートを追加しました。Fixed Copy は Hologres V1.3 で導入された新機能です。JDBC モードと比較して、Fixed Copy モードはストリーミングによる高いスループットおよび低いデータ遅延を提供し、バッチ処理を排除することでクライアントのメモリ使用量を削減します。 Hologres Catalog:
sdkMode パラメーター:Hologres 内のテーブルタイプごとに異なるモードが利用可能です。sdkMode パラメーターは、モード選択を統合するために使用されるようになりました。 | |
1.13 | 4.0.18 | 1.1 以降 | 結果テーブルのメトリクス報告が書き込みパフォーマンスを低下させていた問題を修正しました。 | |
1.13 および 1.15 | 4.0.15 および 6.0.2 | 1.1 以降 | ソーステーブル:
ディメンションテーブル: Hologres ディメンションテーブルに対する非同期リクエストタイムアウト( 結果テーブル:
| |
1.13 | 4.0.13 | 1.1 以降 |
| |
1.13 | 4.0.11 | 0.10 以降 | CTAS および CDAS のサポートを追加しました。 | |
1.13 | 4.0.8 | 0.10 以降 | 結果テーブル、ソーステーブル、ディメンションテーブルに対する Hologres Catalog のサポートを追加しました。 | |
1.13 | 3.0.0 | 0.9 以降 | Hologres からのリアルタイムデータ消費のサポートを追加しました。 |
既知の問題および修正
問題および修正に関する注意事項
各問題の影響を受けるバージョンが明確に指定されています。リストに記載されていないバージョンは影響を受けません。
影響を受けるバージョンが「N/A」と記載されている場合、その問題はコネクタではなく Hologres エンジンの欠陥である可能性があります。
重大度レベル
P0(重大):直ちにアップグレードすることを推奨します。この問題が発生すると、本番運用に影響を与える可能性があり、クエリの正確性や書き込み成功率が低下するおそれがあります。
P1(高):潜在的な問題を防止するために、アップグレードすることを推奨します。
P2(中):任意のアップグレードです。これらの問題は断続的に発生し、回避策またはジョブの再起動によって解決できます。
重大度 | 説明 | 影響を受けるバージョン | 修正済みバージョン | 解決策 |
P0 | 結果テーブルへの一部列への書き込み時、未書き込みのフィールドに time 関連のデフォルト値(例:current_timestamp や now())が設定されている場合、設定される値が不正になることがあります。これは FixedFE モードが time 関連のデフォルト値を正しく処理できないためです。 | 11.0~11.5 | N/A | Flink 側の now() 関数を使用して、結果テーブルの対応するフィールドに値を渡すか、 |
P0 | バイナリログ消費時、物理列とメタデータ列の名前が | 8.0.11、11.0~11.4 | 11.5 | バージョン 11.5 以降にアップグレードし、 |
P1 | バイナリログ消費時、列のプルーニングにより、データが誤った列に読み込まれることがあります。これは holo-client が列のプルーニング処理で予期しない列を取得してしまうためです。 | 11.3~11.5 | 該当するすべてのバージョン(11.3~11.5)に対して修正プログラムがリリースされています。 | この問題に対処する修正プログラムが提供されているため、発生する可能性は低くなっています。DataStream ジョブの場合は、最新のコネクタバージョンを使用してください。 |
P2 | 一対多のディメンションテーブルのスキャナーは、ジョブを停止した際に正しく閉じられません。これにより、リソースリークやシャットダウン時のジョブタイムアウトが発生する可能性があります。この問題は、holo-client の内部スキャナー終了処理の不具合が原因です。 | 11.3 より前のバージョン | 11.4 | バージョン 11.4 以降にアップグレードしてください。 |
P1 | チェックアンドプット機能を使用した場合、DELETE レコードの処理時に NullPointerException(NPE)が発生し、ジョブが失敗します。 | 8.0.11~11.4 | 11.5 | バージョン 11.5 以降にアップグレードしてください。あるいは、DELETE 操作を含むストリームに対してチェックアンドプットを使用しないでください。 |
P2 | ジョブ実行中にテーブルが削除・再作成された場合、コネクタがチェックポイントから復旧できず、失敗します。 | 11.0~11.2 | 11.3 | テスト環境では、この問題を回避するためにバージョン 11.3 以降にアップグレードできます。ただし、バイナリログ消費中にテーブルを再構築するとデータの正確性に影響を与えるため、本番環境ではバイナリログ消費中のテーブル再構築を避けてください。 |
P1 | JDBC バイナリログ経由で RoaringBitmap データを読み取ろうとした場合、解析例外が発生し、失敗します。 | 11.0~11.2 | 11.3 | バージョン 11.3 以降にアップグレードしてください。 |
P1 | 物理パーティションテーブルから消費する場合、シャードにデータがないと、コネクタが状態のログシーケンス番号(LSN)を誤って 0 に初期化します。これにより、ジョブがこの状態から再開された際にデータ損失が発生します。 | 8.0.10 より前のバージョン、11.0~11.2 | 8.0.11、11.3 | バージョン 8.0.11 または 11.3 以降にアップグレードしてください。 |
P1 | null 要素を含む TEXT 配列を書き込もうとした場合、NPE が発生し、書き込み操作が失敗します。 | 11.0~11.1 | 11.2 | バージョン 11.2 以降にアップグレードしてください。あるいは、上流の TEXT 配列に null 要素が含まれないようにしてください。 |
P1 | パーティション作成接尾辞と動的パーティションの間で競合が発生し、パーティション作成が失敗します。 | 11.0~11.2 | 11.3 | バージョン 11.3 以降にアップグレードしてください。 |
P2 | ダーティデータとは無関係の例外がダーティデータポリシーをトリガーし、有効な例外が誤って処理される(例:黙って破棄される)ことがあります。 | 11.0~11.1 | 11.2 | バージョン 11.2 以降にアップグレードしてください。 |
P1 | 完全および増分統合ソーステーブルの場合、JDBC バイナリログは LSN+1 から消費を開始します。現在の LSN がすでにチェックポイント内にある場合、そこから再開すると 1 件のレコードがスキップされる可能性があります。 | 8.0.10 以前 | 8.0.11 | バージョン 8.0.11 にアップグレードしてください。 |
P2 | CTAS シナリオにおいて、列削除と型変更を同一操作で行った場合、型正規化エラーによりスキーマ変更が失敗します。 | 8.0.10 以前 | 8.0.11 | バージョン 8.0.11 にアップグレードしてください。あるいは、列削除と型変更を同一操作で行わないでください。 |
P2 | カタログディメンションテーブルを使用する場合、バイナリログパラメーターのファクトリ検証により誤検知の例外が発生します。 | 8.0.10 以前 | 8.0.11 | バージョン 8.0.11 にアップグレードしてください。 |
P2 | 複数テーブルシナリオにおいて、過剰な JDBC ポーリングリクエストにより SQL Gateway がタイムアウトします。 | 11.0~11.5 | 11.6 | バージョン 11.6 にアップグレードしてください。あるいは、単一ジョブ内の Hologres テーブル数を減らしてください。 |
P2 | FixedFE モードを選択した場合、テーブルに FixedFE がサポートしないデータ型が含まれていると、接続が自動的に FE 接続にダウングレードされず、書き込みまたはクエリ例外が発生します。 | 11.0~11.2 | 11.3 | バージョン 11.3 以降にアップグレードしてください。あるいは、FE 接続モードを手動で指定してください。 |
P1 | JDBC モードでバイナリログを消費する場合、「Binlog Convert Failed」例外が発生したり、一部のシャードからのデータ読み取りが停止することがあります。これは、Hologres インスタンスのゲートウェイがバックエンドタイムアウト例外をクライアントに返す際に問題を抱えており、読み取り操作が停止または解析エラーで失敗するためです。 | N/A | N/A | この問題は、ジョブのバックプレッシャーが高い場合に発生しやすくなります。データの読み取りが停止した場合は、ジョブを再起動して、最新のチェックポイントから再開してください。 この問題を完全に解決するには、Hologres インスタンスをバージョン 2.2.21 以降にスペックアップしてください。 |
P2 | ジョブのデプロイが遅い、またはタイムアウトします。スレッドダンプ分析により、処理が GetTableSchema で停止していることが確認できます。 | N/A | N/A | この問題には複数の原因が考えられます。以下の手順でトラブルシューティングを行ってください。
|
P0 | FixedFE モード(コネクタの jdbc_fixed モードに対応)で TEXT、JSON、JSONB データを Hologres に書き込む場合、データソースに無効な文字が含まれていると、予期しない例外が発生します。これにより、接続された FE ノードが再起動し、接続が中断されます。 | N/A | N/A | 上流の文字列の有効性を保証できない場合は、JDBC モードでデータを書き込み、結果テーブルの設定を有効化する必要があります。
あるいは、jdbc_fixed モードを引き続き使用するには、Hologres インスタンスをバージョン 3.0 以降にスペックアップしてください。 |
P1 | JDBC ディメンションテーブルで一対多結合を実行した場合、Flink タスクのメモリ使用量が高くなる、または Out Of Memory(OOM)エラーが発生することがあります。 | N/A | N/A | Hologres V1.3 では、 この問題を完全に解決するには、Hologres インスタンスを V2.0 以降にスペックアップしてください。 |
P1 | バイナリログジョブがステートフル回復中に | 8.0.4 | 8.0.9 | バージョン 8.0.9 以降では、テーブル ID のチェックは実施されなくなり、代わりに警告がログに出力されるため、ジョブは最新の状態から再開できます。ただし、バイナリログジョブ実行中にテーブルを再構築すると、以前のすべてのバイナリログデータが失われるため、これを避けてください。 |
P2 | ジョブ実行中にバックプレッシャーが発生します。スレッドダンプにより、実行プールが close() または start() メソッドで停止していることが確認できます。これは、複数のクライアントが同じ接続プールを共有している場合にデッドロックが発生し、接続プールが正しく閉じられないことが原因です。 | 8.0.5 | 8.0.9 | コネクタのバージョンをアップグレードしてください。 |
P2 | ソーステーブルに対して | 8.0.6 以前 | 8.0.7 | コネクタのバージョンをアップグレードするか、増分消費の開始時刻を指定してください。 |
P1 | ディメンションテーブルに多数のフィールドが含まれている場合、ジョブデプロイメントがタイムアウトします。 | 8.0.6 | 8.0.7 | コネクタのバージョンをアップグレードしてください。 |
P0 | バッチソーステーブルに対して 説明 この問題は、完全および増分統合ソーステーブルおよびバイナリログソーステーブルには影響しません。 | 8.0.5 以前 | 8.0.6 | コネクタのバージョンをアップグレードしてください。 |
P0 | FixedFE モード(コネクタの | 8.0.5 以前 | なし | 上流の JSON または JSONB 文字列の妥当性が保証できない場合、JDBC モードでデータを書き込んでください。 |
P1 | JDBC ディメンションテーブルで一対多結合を実行した場合、接続障害などの内部例外が適切にスローされません。これは、非同期結合ノードでのバックプレッシャーとして現れ、データフローが停止する可能性があります。この問題は稀に発生します。 | 6.0.7 以前 | 8.0.3 | コネクタのバージョンをアップグレードしてください。一時的な解決策として、ジョブを再起動することもできます。 |
P1 | JDBC モードでバイナリログデータを消費する場合、メモリリークが発生します。これは、ジョブ開始時に消費率が高く、その後継続的に低下するという形で現れることがあります。 | 6.0.7 以前 | 6.0.7 | コネクタのバージョンをアップグレードしてください。DataStream ジョブの場合は、バージョン 6.0.7-1 の依存関係を使用する必要があります。 |
P0 | JDBC モードで書き込みを行う場合、スケジュールされたフラッシュ(jdbcWriteFlushInterval パラメーターで制御)中にキャプチャされた例外は、次のデータレコードが処理されるまでスローされません。書き込みトラフィックが少ない場合、チェックポイントが正常に作成される一方で、例外がキャプチャされてもまだスローされていない状態になることがあります。その後に障害が発生した場合、ジョブはこの無効なチェックポイントから再開され、データ損失につながる可能性があります。 | 6.0.6 以前 | 6.0.7 | この問題は、トラフィックが少ない場合に発生しやすくなります。コネクタのバージョンをアップグレードするか、jdbcWriteFlushInterval をチェックポイント間隔よりも長く設定してください。 |
P2 | JDBC モードでバイナリログデータを消費する場合、スロット名を設定していないと、システムが自動的にスロットを作成します。テーブル名またはスキーマ名に特殊文字が含まれている場合、自動生成されたスロット名が無効となり、構文エラーが発生します。 | 6.0.6 | 6.0.7 | コネクタのバージョンをアップグレードしてください。DataStream ジョブの場合は、バージョン 6.0.7-1 の依存関係を使用する必要があります。 |
P1 | 同一ジョブ内で異なる Hologres インスタンスまたはデータベースが同じ | 6.0.6 以前 | 6.0.7 | 同一ジョブ内で使用する各 Hologres インスタンスまたはデータベースに対して、異なる |
P1 | ディメンションテーブルに | 6.0.6 | 6.0.7 | コネクタのバージョンをアップグレードしてください。 |
P0 | Hologres ソーステーブルに対してフィルターのプッシュダウンがデフォルトで有効になっています。しかし、ジョブが Hologres ディメンションテーブルも使用しており、書き込み DML がディメンションテーブルの非プライマリキー列に対するフィルターを含む場合、フィルターが誤ってディメンションテーブルにもプッシュダウンされます。これにより、ディメンションテーブルの JOIN 結果が不正になる可能性があります。 | 6.0.3~6.0.5 | 6.0.6 | コネクタのバージョンをアップグレードしてください。 |
P0 | 複数の結果テーブルが異なる | 6.0.2 以前 | 6.0.3 | すべての結果テーブルの |
P1 | バイナリログソーステーブルの DDL で | 6.0.2 | 6.0.3 | このフィールドの使用をやめるか、コネクタのバージョンをアップグレードしてください。 |
P1 | メトリクス報告が結果テーブルの書き込みパフォーマンスに影響を与えます。 | 4.0.15~4.0.17 | 4.0.18 | この問題の影響を受けないバージョンを使用してください。 |
P2 | バッチソーステーブルから STRING または STRING 配列型のデータを読み取る場合、データに特殊文字が含まれていると、解析が失敗します。 | 4.0.14 以前 | 4.0.15 | ソーステーブルからダーティデータを除去するか、コネクタのバージョンをアップグレードしてください。 |
P2 | 完全および増分統合ソーステーブルの DDL で | 4.0.13 | 4.0.14 | 完全および増分統合機能の使用を避けるか、コネクタのバージョンをアップグレードしてください。 |