Plan StarRocks cluster
このトピックでは、ノード数、CPU コア数、メモリサイズ、ストレージサイズの観点から、StarRocks クラスターの本番環境におけるリソース計画について説明します。
ノード数
StarRocks は主に 2 種類のコンポーネントで構成されています: FE ノードと BE ノード。各ノードは物理または仮想マシン上に個別にデプロイする必要があります。
FE ノード数
FE ノードは主にメタデータ管理、クライアント接続管理、クエリプランニング、およびクエリスケジューリングを担当します。
本番環境では、単一障害点 (SPOF) を防ぐために、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 クラスターに追加されると、BEs の高可用性クラスターが自動的に形成されます。1 つの BE ノードが故障しても、BE サービス全体の可用性には影響しません。
StarRocks クラスターが高い並行性のクエリを処理できるように、BE ノードの数を増やすことができます。
CN ノード数
CN ノードは StarRocks のオプションコンポーネントであり、SQL 実行のみを担当します。
StarRocks クラスター内のデータ分布を変更せずに、計算リソースを弾力的にスケールするために CN ノードの数を増やすことができます。
CPU とメモリ
通常、FE サービスは多くの CPU とメモリリソースを消費しません。各 FE ノードに 8 CPU コアと 16 GB RAM を割り当てることをお勧めします。
FE サービスとは異なり、BE サービスは、大規模なデータセットで高い並行性または複雑なクエリを処理する場合、CPU とメモリを大幅に消費する可能性があります。したがって、各 BE ノードに 16 CPU コアと 64 GB RAM を割り当てることをお勧めします。
ストレージ容量
FE ストレージ
FE ノードはストレージ内に StarRocks のメタデータのみを保持するため、ほとんどのシナリオでは各 FE ノードに 100 GB の HDD ストレージで十分です。
BE ストレージ
BE の初期ストレージスペースを見積もる
StarRocks クラスターが必要とする総ストレージスペースは、同時に生データのサイズ、データレプリカ数、および使用するデータ圧縮アルゴリズムの圧縮率によって影響を受けます。
次の式を使用して、すべての BE ノードに必要な総ストレージスペースを見積もることができます:
Total BE storage space = Raw data size * Replica count/Compression ratio
Raw data size = Sum of the space taken up by all fields in a row * Row count
StarRocks では、テーブル内のデータは最初に複数のパーティションに分割され、その後複数のタブレットに分割されます。タブレットは StarRocks におけるデータ管理の基本的な論理単位です。データの高い信頼性を確保するために、各タブレットの複数のレプリカを維持し、異なる BEs に分散して保存することができます。デフォルトでは、StarRocks は 3 つのレプリカを維持します。
現在、StarRocks は 4 つのデータ圧縮アルゴリズムをサポートしており、圧縮率が高い順に zlib、Zstandard (または zstd)、LZ4、Snappy があります。これらは 3:1 から 5:1 の圧縮率を提供できます。
総ストレージスペースを決定した後、クラスター内の BE ノード数で単純に割ることで、各 BE ノードの平均ストレージスペースを見積もることができます。
必要に応じて追加ストレージを追加する
生データの増加に伴い BE ストレージスペースが不足した場合、クラスターを垂直または水平にスケールするか、クラウドストレージを単純にスケールアップすることで補うことができます。
-
新しい BE ノードを StarRocks クラスターに追加する
新しい BE ノードを StarRocks クラスターに追加することで、データをより多くのノードに均等に再分配できます。詳細な手順については、 Scale your StarRocks cluster - Scale BE out を参照してください。
新しい BE ノードが追加されると、StarRocks はすべての BE ノード間でデータを自動的に再バランスします。この自動バランスはすべてのテーブルタイプでサポートされています。
-
既存の BE ノードに追加のストレージボリュームを追加する
既存の BE ノードに追加のストレージボリュームを追加することもできます。詳細な手順については、 Scale your StarRocks cluster - Scale BE up を参照してください。
追加のストレージボリュームが追加されると、StarRocks は主キーテーブルを除くすべてのテーブルのデータを自動的に再バランスします。この状況では、主キーテーブルからのデータの分布がノード間で不均衡になる可能性があり、その結果、これらのテーブルに対するクエリの実行が遅くなります。したがって、StarRocks クラスターに主キーテーブルが含まれている場合、BE ノードに追加のストレージボリュームを追加することは推奨されません。
-
クラウドストレージを追加する
StarRocks クラスターがクラウド上にデプロイされている場合、必要に応じてクラウドストレージをスケールアップすることができます。詳細な手順については、クラウドプロバイダーにお問い合わせください。