エラスティックコンピュートノード
エラスティックコンピュートノードは、BEノードの特殊なタイプとして、データストレージ機能を持たず、データの計算のみを担当します。そのため、コンピュートノードはステートレスなBEノードと見なすことができ、簡単に追加および削除することが可能です。
レイクハウスデータ分析のシナリオでは、エラスティックコンピュートノードをHive、Iceberg、Hudi、Paimon、JDBCなどの外部データソースのクエリに使用できます。Dorisは外部データソースのデータストレージを処理しないため、エラスティックコンピュートノードを使用して外部データソースの計算能力を簡単に拡張できます。さらに、コンピュートノードにキャッシュディレクトリを設定して、外部データソースからのホットデータをキャッシュし、データ読み込みをさらに高速化することも可能です。
エラスティックコンピュートノードはDorisのストレージ・コンピューティング統合モードにおけるエラスティックリソース制御に適しています。Doris 3.0のストレージ・コンピューティング分離アーキテクチャでは、BEノードがステートレスであるため、独立したエラスティックコンピュートノードは不要になります。
コンピュートノードの使用方法
BEノードタイプ
ストレージ・コンピューティング統合モードでは、BEノードは2つのタイプに分かれます:
-
Mix
混合ノード。これはBEノードのデフォルトタイプです。これらのノードは計算とDoris内部テーブルデータのストレージの両方に参加します。
-
Computation
エラスティックコンピュートノード。データストレージは処理せず、データ計算のみを行います。
コンピュートノードの追加
BEのbe.conf設定ファイルに以下の設定を追加します:
be_node_role=computation
その後、BEノードを起動すると、Computationタイプとして実行されます。
次に、Dorisに接続して以下を実行します:
ALTER SYSTEM ADD BACKEND
このBEノードを追加します。正常に追加されると、SHOW BACKENDSのNodeRole列でノードタイプがcomputationと表示されます。
コンピュートノードの使用
コンピュートノードを有効にしてその動作を制御するには、FE設定ファイルfe.confで以下のパラメータを設定する必要があります:
| パラメータ名 | 説明 |
|---|---|
prefer_compute_node_for_external_table | デフォルトはfalseです。trueに設定すると、外部テーブルのクエリが優先的にコンピュートノードに割り当てられます。falseの場合、外部テーブルのクエリは任意のBEノードに割り当てられます。クラスタにコンピュートノードがない場合、このパラメータは効果がありません。 |
min_backend_num_for_external_table | prefer_compute_node_for_external_tableがtrueの場合のみ有効です。クラスタ内のコンピュートノード数がこの値未満の場合、外部テーブルのクエリはいくつかの混合ノードを取得して割り当てを試み、総ノード数がこの値に達するようにします。クラスタ内のコンピュートノード数がこの値より多い場合、外部テーブルのクエリはコンピュートノードのみに割り当てられます。バージョン2.0(含む)以前では、このパラメータのデフォルト値は3でした。バージョン2.1以降、デフォルト値は-1で、現在のコンピュートノード数のみを使用することを意味します。 |
min_backend_num_for_external_tableの詳細説明:
クラスタに3つのコンピュートノードと5つの混合ノードがあると仮定します。
min_backend_num_for_external_tableを3以下に設定した場合、外部テーブルクエリは3つのコンピュートノードのみを使用します。3より大きい値、例えば6に設定した場合、外部テーブルクエリは3つのコンピュートノードに加えて追加の3つの混合ノードを計算に使用します。
要約すると、このパラメータは主に外部テーブルの計算に参加できるBEノードの最小数に使用され、コンピュートノードを優先的に選択します。このパラメータを増やすと、より多くのBEノード(コンピュートノードに限定されません)が外部テーブルクエリ処理に参加できるようになります。このパラメータを減らすと、外部テーブルクエリ処理に参加するBEノード数を制限できます。
注意:
バージョン2.1以降、
min_backend_num_for_external_tableを-1に設定できます。以前のバージョンでは、このパラメータは正の数でなければなりません。このパラメータはprefer_compute_node_for_external_table = trueの場合のみ有効です。
min_backend_num_for_external_tableの値がBEノードの総数より大きい場合、最大ですべてのBEが選択されます。上記のパラメータは、
ADMIN SET FRONTEND CONFIGコマンドを使用してFEノードを再起動することなく動的に変更できます。すべてのFEノードを設定する必要があります。または、fe.confに設定を追加してFEノードを再起動することもできます。
ベストプラクティス
連携クエリのリソース分離とエラスティックスケーリング
連携クエリのシナリオでは、ユーザーは外部テーブルデータをクエリするための専用のコンピュートノードセットを配置できます。これにより、外部テーブルクエリの負荷(Hiveでの大規模分析など)と内部テーブルクエリの負荷(低レイテンシの高速データ分析など)を分離できます。
同時に、ステートレスなBEノードとして、コンピュートノードは簡単にスケールアップ・ダウンできます。例えば、k8sを使用してエラスティックコンピュートノードクラスタのセットを配置し、ビジネスピーク期間にはデータレイク分析により多くのコンピュートノードを利用し、オフピーク期間には迅速にスケールダウンしてコストを削減できます。
よくある問題
- 混合ノードとコンピュートノードは相互に変換できますか?
コンピュートノードは混合ノードに変換できます。ただし、混合ノードはコンピュートノードに変換できません。
- コンピュートノードにはデータストレージディレクトリの設定が必要ですか?
はい。コンピュートノードのデータストレージディレクトリはユーザーデータを保存せず、cluster_idなどのBEノード自体の一部の情報ファイルと、動作中の一部の一時ファイルのみを保存します。
コンピュートノードのストレージディレクトリは少量のディスク容量(MB レベル)のみを必要とし、ユーザーデータに影響を与えることなく、いつでもノードと一緒に破棄できます。
- コンピュートノードと混合ノードはファイルキャッシュディレクトリを設定できますか?
ファイルキャッシュは、最近アクセスしたリモートストレージシステム(HDFSまたはオブジェクトストレージ)からのデータファイルをキャッシュすることで、同じデータの後続のクエリを高速化します。
コンピュートノードと混合ノードの両方でファイルキャッシュディレクトリを設定できます。ファイルキャッシュディレクトリは事前に作成する必要があります。
- コンピュートノードはDECOMMISION操作による廃止が必要ですか?
いいえ。コンピュートノードはDROP BACKEND操作を使用して直接削除できます。