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

Plan StarRocks cluster

StarRocks クラスターの計画

このトピックでは、ノード数、CPUコア数、メモリサイズ、およびストレージサイズの観点から、StarRocksクラスターのリソースを本番環境で計画する方法について説明します。

ノード数

StarRocksは主に2つのコンポーネントで構成されています:FEノードとBEノードです。各ノードは物理マシンまたは仮想マシンに別々に展開する必要があります。

FEノードの数

FEノードは主にメタデータ管理、クライアント接続管理、クエリの計画およびスケジューリングに責任があります。

本番環境では、StarRocksクラスターに少なくとも3つのFollower FEノードを展開し、単一障害点を回避するために推奨します。

StarRocksはBDB JEプロトコルを使用してFEノード間でメタデータを管理します。 StarRocksは、すべてのFollower FEノードからLeader FEノードを選出します。 Leader FEノードのみがメタデータを書き込むことができます。他のFollower FEノードは、Leader FEノードのログに基づいてメタデータを更新します。 Leader FEノードが障害が発生するたびに、StarRocksは半数以上のFollower FEノードが生存している限り、新しいLeader FEノードを再選出します。

アプリケーションが高い並行クエリリクエストを生成する場合、Observer FEノードをクラスターに追加することができます。 Observer FEノードはクエリリクエストのみを処理し、Leader FEノードの選出には参加しません。

BEノードの数

BEノードはデータの格納とSQLの実行を担当します。

本番環境では、データの信頼性とサービスの可用性を確保するために、StarRocksクラスターに少なくとも3つのBEノードを展開することを推奨します。少なくとも3つのBEノードが展開され、StarRocksクラスターに追加されると、BEサービスの全体的な可用性には1つのBEノードの障害が影響しません。

StarRocksクラスターが高い並行クエリを処理できるようにするには、BEノードの数を増やすことができます。

CNノードの数

CNノードは、StarRocksのオプションのコンポーネントであり、SQLの実行のみを担当します。

CNノードの数を増やすことで、StarRocksクラスターのデータ分散を変更せずにコンピューティングリソースを弾力的にスケーリングすることができます。

CPUとメモリ

通常、FEサービスは多くのCPUおよびメモリリソースを消費しません。各FEノードには、8つのCPUコアと16GBのRAMを割り当てることを推奨します。

FEサービスとは異なり、BEサービスは非常にCPUおよびメモリが必要となる場合があります。特にアプリケーションが大規模なデータセットで高い並行性または複雑なクエリを処理する場合は、各BEノードに16個のCPUコアと64GBのRAMを割り当てることを推奨します。

ストレージ容量

FEのストレージ

FEノードはStarRocksのメタデータのみを自身のストレージに保持するため、ほとんどのシナリオで各FEノードには100GBのHDDストレージが十分です。

BEのストレージ

BEの初期ストレージスペースの見積もり

StarRocksクラスターが必要とする総ストレージスペースは、生データのサイズ、データのレプリカ数、および使用するデータ圧縮アルゴリズムの圧縮率の影響を受けます。

次の数式を使用すると、すべてのBEノードに必要な総ストレージスペースを見積もることができます:

総BEストレージスペース = 生データサイズ * レプリカ数/圧縮率

生データサイズ = 行内のすべてのフィールドが占有する領域の合計 * 行数

StarRocksでは、テーブルのデータはまず複数のパーティションに分割され、次に複数のタブレットに分割されます。タブレットはStarRocksのデータ管理の基本的な論理単位です。高いデータの信頼性を確保するために、各タブレットの複数のレプリカを維持し、それらを異なるBEに格納することができます。 StarRocksはデフォルトで3つのレプリカを維持します。

現在、StarRocksは4つのデータ圧縮アルゴリズム(高い圧縮率から低い圧縮率の順)をサポートしています:zlib、Zstandard(またはzstd)、LZ4、およびSnappy。これらは3:1から5:1の圧縮率を提供することができます。

総ストレージスペースが決まったら、それをクラスターのBEノード数で割るだけで、1つのBEノードあたりの平均ストレージスペースを見積もることができます。

必要に応じて追加ストレージを追加

生データが増えるにつれてBEのストレージスペースが不足した場合は、クラスターのスケーリング、クラウドストレージのスケーリング、または単にクラスターのスケーリングを通じて補充することができます。

  • StarRocksクラスターに新しいBEノードを追加する新しいBEノードをStarRocksクラスターに追加することで、データをより均等に複数のノードに再分散することができます。詳細な手順については、「StarRocksクラスターのスケーリング - BEの追加」を参照してください。新しいBEノードが追加されると、StarRocksは自動的にすべてのBEノード間でデータを再バランスします。この自動的なバランシングはすべてのテーブルタイプでサポートされています。
  • BEノードに追加のストレージボリュームを追加する既存のBEノードに追加のストレージボリュームを追加することもできます。詳細な手順については、「StarRocksクラスターのスケーリング - BEの追加」を参照してください。追加のストレージボリュームが追加されると、StarRocksはプライマリキーテーブル以外のすべてのテーブルでデータを再バランスします。この場合、プライマリキーテーブルのデータの分布はノード間で不均衡になり、結果としてこれらのテーブルへのクエリは遅くなります。そのため、プライマリキーテーブルを含むStarRocksクラスターの場合、BEノードに追加のストレージボリュームを追加することは推奨されません。
  • クラウドストレージの追加StarRocksクラスターがクラウド上に展開されている場合、クラウドストレージを需要に応じて拡張することができます。詳細な手順については、クラウドプロバイダーにお問い合わせください。