メインコンテンツまでスキップ
バージョン: 4.x

ロード高可用性

概要

Dorisは、データインポート中の高可用性を確保するための様々なメカニズムを提供します。この記事では、Dorisのデフォルトのインポート動作と、インポート可用性を向上させるための追加オプション、特に最小書き込みレプリカ数機能について詳しく説明します。

過半数書き込み

デフォルトでは、Dorisはデータの信頼性と整合性を確保するために過半数書き込み戦略を採用しています:

  • 正常に書き込まれたレプリカ数が総レプリカ数の半分を超えた場合、インポートが成功したとみなされます。
  • 例えば、3つのレプリカを持つテーブルでは、インポートが成功したとみなされるために、少なくとも2つのレプリカが正常に書き込まれる必要があります。

動作仕組み

  1. データ配布:インポートタスクは、まず関連するすべてのBEノードにデータを配布します。

  2. 並列書き込み:各BEノードは、データ書き込み操作を並列で処理します。

  3. 書き込み確認:データ書き込みを完了後、各BEノードはFEに確認を送信します。

  4. 過半数判定:FEは正常に書き込まれたレプリカ数をカウントし、過半数に達したときにインポートが成功したとみなします。

  5. トランザクションコミット:FEはインポートトランザクションをコミットし、データを外部から見えるようにします。

  6. 非同期レプリケーション:正常に書き込まれなかったレプリカについては、システムはバックグラウンドで非同期的にデータを複製し、すべてのレプリカ間で最終的な整合性を確保します。

過半数書き込み戦略は、データの信頼性とシステム可用性の間のDorisのバランスです。特別な要件があるシナリオでは、Dorisは最小書き込みレプリカ数などの他のオプションを提供して、システムの柔軟性をさらに向上させます。

最小書き込みレプリカ数

過半数書き込み戦略はデータの信頼性を確保しますが、特定のシナリオではシステムの可用性に影響を与える可能性があります。例えば、2つのレプリカの状況では、インポートを完了するために両方のレプリカが正常に書き込まれる必要があり、これはインポートプロセス中にレプリカが利用できなくなることが許可されないことを意味します。

この問題に対処し、インポートの可用性を向上させるために、DorisはMin Load Replica Numオプションを提供します。

機能説明

最小書き込みレプリカ数により、ユーザーはデータインポート中に正常に書き込まれる必要があるレプリカの最小数を指定できます。正常に書き込まれたレプリカ数がこの値以上である場合、インポートが成功したとみなされます。

使用例

  • 一部のノードが利用できない場合でも、データインポートを保証する必要がある場合。

  • データインポート速度に対する要件が高く、ユーザーがより高い可用性のために一部の信頼性を犠牲にすることを厭わない場合。

設定方法

1. 単一テーブル設定

a. テーブル作成時に設定:

CREATE TABLE example_table
(
id INT,
name STRING
)
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 10
PROPERTIES
(
'replication_num' = '3',
'min_load_replica_num' = '2'
);

b. 既存のテーブルを変更する:

ALTER TABLE example_table
SET ( 'min_load_replica_num' = '2' );

2. グローバル設定

FE設定項目 min_load_replica_num で設定します。

  • 有効値: 0より大きい値

  • デフォルト値: -1 (グローバル最小書き込みレプリカ数が無効であることを示す)

優先順位: テーブルプロパティ > グローバル設定 > デフォルトマジョリティルール

テーブルプロパティが設定されていない、または無効で、グローバル設定が有効な場合、テーブルの最小書き込みレプリカ数は: min(FE設定のmin_load_replica_num, テーブルのレプリカ数/2 + 1)

FE設定項目の確認と変更については、FE設定ドキュメントを参照してください。

その他の高可用性メカニズム

最小書き込みレプリカ数オプションに加えて、Dorisはインポート可用性を向上させるために以下のメカニズムも採用しています:

  1. インポートリトライ: 一時的な障害によって失敗したインポートタスクを自動的に再試行します。

  2. ロードバランシング: インポートタスクを異なるBEノードに分散し、単一ポイントへの過度な負荷を回避します。

  3. トランザクションメカニズム: データ整合性を保証し、障害時に自動的にロールバックします。