StarRocks クラスターの計画
このトピックでは、ノード数、CPU コア数、メモリサイズ、ストレージサイズの観点から、実運用環境での StarRocks クラスターのリソース計画について説明します。
ノード数
StarRocks は主に 2 種類のコンポーネントで構成されています: FE ノードと BE ノード。各ノードは物理または仮想マシン上に個別にデプロイする必要があります。
FE ノード数
FE ノードは主にメタデータ管理、クライアント接続管理、クエリ計画、およびクエリスケジューリングを担当します。
実運用環境では、単一障害点 (SPOF) を防ぐために、StarRocks クラスターに少なくとも 3 つ の Follower FE ノードをデプロイすることをお勧めします。Leader FE はこれらの 3 つのフォロワーから自動的に選出されます。
StarRocks は Raft プロトコルを使用して 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 では、テーブル内のデータは最初に複数のパーティションに分割され、その後複数の tablets に分割されます。Tablets は StarRocks におけるデータ管理の基本的な論理単位です。データの高い信頼性を確保するために、各 tablet の複数のレプリカを維持し、それらを異なる 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 クラスターがクラウドにデプロイされている場合、必要に応じてクラウドストレージをスケールアップできます。詳細な手順については、クラウドプロバイダーにお問い合わせください。