メインコンテンツまでスキップ

Elastic Compute Node

エラスティックコンピュートノードは、BEノードの特殊なタイプとして、データストレージ機能を持たず、データ計算のみを担当します。そのため、コンピュートノードはステートレスなBEノードとして扱うことができ、簡単に追加・削除が可能です。

レイクハウスデータ分析シナリオでは、エラスティックコンピュートノードを使用してHive、Iceberg、Hudi、Paimon、JDBCなどの外部データソースをクエリできます。Dorisは外部データソースデータのストレージを処理しないため、エラスティックコンピュートノードを使用して外部データソース向けの計算能力を簡単に拡張できます。さらに、コンピュートノードはキャッシュディレクトリを設定して外部データソースのホットデータをキャッシュし、データ読み取りをさらに高速化することもできます。

エラスティックコンピュートノードはDorisのStorage-Computing統合モードでのエラスティックリソース制御に適しています。Doris 3.0のStorage-Computing分離アーキテクチャでは、BEノードはステートレスであるため、別途エラスティックコンピュートノードは不要になります。

コンピュートノードの使用方法

BEノードタイプ

Storage-Computing統合モードでは、BEノードは2つのタイプに分かれます:

  • Mix

    混合ノード。これはBEノードのデフォルトタイプです。これらのノードは計算とDorIS内部テーブルデータのストレージの両方に参加します。

  • Computation

    エラスティックコンピュートノード。データストレージは処理せず、データ計算のみを行います。

コンピュートノードの追加

BEのbe.conf設定ファイルに以下の設定を追加します:

be_node_role=computation

その後、BEノードを起動すると、Computationタイプとして実行されます。

次にDorisに接続して以下を実行します:

ALTER SYSTEM ADD BACKEND

このBEノードを追加します。追加が成功すると、SHOW BACKENDSNodeRole列でノードタイプがcomputationと表示されます。

コンピュートノードの使用

コンピュートノードを有効にしてその動作を制御するには、FE設定ファイルfe.confで以下のパラメータを設定する必要があります:

パラメータ名説明
prefer_compute_node_for_external_tableデフォルトはfalseです。trueに設定すると、外部テーブルのクエリが優先的にコンピュートノードに割り当てられます。falseの場合、外部テーブルのクエリは任意のBEノードに割り当てられます。クラスタにコンピュートノードがない場合、このパラメータは効果がありません。
min_backend_num_for_external_tableprefer_compute_node_for_external_tabletrueの場合のみ有効です。クラスタ内のコンピュートノード数がこの値より少ない場合、外部テーブルのクエリはいくつかの混合ノードを取得しようとして割り当て、総ノード数がこの値に達するようにします。クラスタ内のコンピュートノード数がこの値より多い場合、外部テーブルのクエリはコンピュートノードにのみ割り当てられます。バージョン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ノード数を制限できます。

注意:

  1. バージョン2.1以降、min_backend_num_for_external_table-1に設定できます。以前のバージョンでは、このパラメータは正の数である必要があります。このパラメータはprefer_compute_node_for_external_table = trueの場合のみ有効です。

  2. min_backend_num_for_external_tableの値がBEノードの総数より大きい場合、最大でもすべてのBEが選択されます。

  3. 上記のパラメータはADMIN SET FRONTEND CONFIGコマンドを使用してFEノードを再起動せずに動的に変更できます。すべてのFEノードを設定する必要があります。または、fe.confに設定を追加してFEノードを再起動してください。

ベストプラクティス

フェデレーテッドクエリのリソース分離とエラスティックスケーリング

フェデレーテッドクエリシナリオでは、ユーザーは外部テーブルデータをクエリするための専用のコンピュートノードセットをデプロイできます。これにより、外部テーブルクエリ負荷(Hiveでの大規模分析など)と内部テーブルクエリ負荷(低レイテンシの高速データ分析など)を分離できます。

同時に、ステートレスなBEノードとして、コンピュートノードは簡単にスケールアップ・ダウンできます。例えば、k8sを使用してエラスティックコンピュートノードクラスタセットをデプロイし、ビジネスピーク時にはデータレイク分析により多くのコンピュートノードを利用し、オフピーク時には迅速にスケールダウンしてコストを削減できます。

よくある質問

  1. 混合ノードとコンピュートノードは相互に変換できますか?

コンピュートノードは混合ノードに変換できます。ただし、混合ノードはコンピュートノードに変換できません。

  1. コンピュートノードはデータストレージディレクトリを設定する必要がありますか?

はい。コンピュートノードのデータストレージディレクトリはユーザーデータを保存せず、cluster_idなどのBEノード自体の情報ファイルと、動作中のいくつかの一時ファイルのみを保存します。

コンピュートノードのストレージディレクトリは少量のディスク容量(MBレベル)のみを必要とし、ユーザーデータに影響を与えることなくノードと一緒にいつでも破棄できます。

  1. コンピュートノードと混合ノードはファイルキャッシュディレクトリを設定できますか?

ファイルキャッシュは、最近アクセスしたリモートストレージシステム(HDFSまたはオブジェクトストレージ)からのデータファイルをキャッシュすることで、同じデータの後続クエリを高速化します。

コンピュートノードと混合ノードの両方でファイルキャッシュディレクトリを設定できます。ファイルキャッシュディレクトリは事前に作成しておく必要があります。

  1. コンピュートノードはDECOMMISION操作による廃止が必要ですか?

いいえ。コンピュートノードはDROP BACKEND操作を使用して直接削除できます。