サイジング
Kafka のサイズ設定は、シンプル、詳細、リバース、パーティションの 4 つの構成モードで実行できます。
単純
シンプル モードは、Apache Kafka を初めて使用するユーザーや初期状態のユース ケースに適しています。このモードでは、スループット MBps、読み取りファンアウト、保持期間、リソース使用率 (デフォルトは 60%) などの要件を指定します。また、オンプレミス (ベアメタル、VMware、Kubernetes、OpenStack) やクラウドなどの環境も入力します。この情報に基づいて、Kafka クラスターのサイズを決定すると、ブローカー、Zookeeper、Apache Kafka Connect Workers、スキーマ レジストリ、REST プロキシ、ksqlDB、および Confluent コントロール センターに必要なサーバーの数がわかります。
階層型ストレージの場合、Kafka クラスターのサイズ設定にはきめ細かな構成モードを検討してください。粒度モードは、経験豊富な Apache Kafka ユーザーや明確に定義されたユースケースに適しています。このセクションでは、プロデューサー、ストリーム プロセッサ、およびコンシューマーのサイズ設定について説明します。
プロデューサー
Apache Kafka のプロデューサー (ネイティブ クライアント、REST プロキシ、Kafka コネクタなど) を記述するには、次の情報を提供します。
-
*名前。*スパーク。
-
*プロデューサータイプ。*アプリケーションまたはサービス、プロキシ (REST、MQTT、その他)、既存のデータベース (RDBMS、NOSQL、その他)。 「分からない」を選択することもできます。
-
平均スループット 1 秒あたりのイベント数 (たとえば 1,000,000)。
-
ピークスループット 1 秒あたりのイベント数 (たとえば 4,000,000)。
-
*平均メッセージサイズ*バイト単位、非圧縮(最大 1 MB、たとえば 1000)。
-
*メッセージ形式*オプションには、Avro、JSON、プロトコル バッファー、バイナリ、テキスト、「わかりません」などがあります。
-
*複製係数*オプションは 1、2、3 (Confluent 推奨)、4、5、または 6 です。
-
*保持時間*ある日(例えば)。 Apache Kafka にデータをどれくらいの期間保存しますか? 任意の単位で -1 を入力すると、無限の時間になります。計算機では、無限保持の場合の保持期間を 10 年と想定しています。
-
「階層化ストレージを有効にしてブローカー数を減らし、無制限のストレージを可能にしますか?」のチェックボックスを選択します。
-
階層化ストレージが有効な場合、保持フィールドはブローカーにローカルに保存されるホット データ セットを制御します。アーカイブ保持フィールドは、アーカイブ オブジェクト ストレージにデータが保存される期間を制御します。
-
アーカイブストレージの保持。 1年(例)。データをアーカイブストレージにどれくらいの期間保存しますか? 任意の単位で -1 を入力すると、継続時間は無制限になります。計算機では、無制限の保持期間として 10 年間を想定しています。
-
成長乗数 1 (例)このパラメータの値が現在のスループットに基づいている場合は、1 に設定します。追加の成長に基づいてサイズを決定するには、このパラメータを成長乗数に設定します。
-
プロデューサーインスタンスの数。 10(例)。いくつのプロデューサーインスタンスが実行されますか? この入力は、CPU 負荷をサイズ計算に組み込むために必要です。空白の値は、CPU 負荷が計算に組み込まれていないことを示します。
このサンプル入力に基づくと、サイズ設定はプロデューサーに次のような影響を及ぼします。
-
非圧縮バイトでの平均スループット: 1GBps。非圧縮バイトでのピーク スループット: 4GBps。圧縮バイトでの平均スループット: 400MBps。圧縮バイトでのピーク スループット: 1.6GBps。これはデフォルトの 60% の圧縮率に基づいています (この値は変更できます)。
-
必要なブローカー上のホットセット ストレージの合計: レプリケーション、圧縮を含む 31,104 TB。必要なブローカー外アーカイブ ストレージの合計: 378,432 TB (圧縮済み)。使用"https://fusion.netapp.com"StorageGRID のサイズ設定用。
-
ストリーム プロセッサは、Apache Kafka からデータを消費し、Apache Kafka にデータを返すアプリケーションまたはサービスを記述する必要があります。ほとんどの場合、これらは ksqlDB または Kafka Streams に組み込まれています。
-
*名前。*スパークストリーマー。
-
*処理時間*このプロセッサは 1 つのメッセージを処理するのにどのくらいの時間がかかりますか?
-
1 ミリ秒 (単純なステートレス変換) [例]、10 ミリ秒 (ステートフルなメモリ内操作)。
-
100 ミリ秒 (ステートフル ネットワークまたはディスク操作)、1000 ミリ秒 (サードパーティの REST 呼び出し)。
-
私はこのパラメータをベンチマークし、どれくらいの時間がかかるかを正確に把握しています。
-
-
出力保持 1日(例)ストリーム プロセッサは、Apache Kafka に出力を返します。この出力データを Apache Kafka にどれくらいの期間保存しますか? 任意の単位で -1 を入力すると、継続時間は無制限になります。
-
「階層化ストレージを有効にしてブローカー数を減らし、無制限のストレージを可能にしますか?」のチェックボックスを選択します。
-
アーカイブストレージの保持。 1年(例)。データをアーカイブストレージにどれくらいの期間保存しますか? 任意の単位で -1 を入力すると、継続時間は無制限になります。計算機では、無制限の保持期間として 10 年間を想定しています。
-
出力パススルー率。 100(例)。ストリーム プロセッサは、Apache Kafka に出力を返します。受信スループットの何パーセントが Apache Kafka に出力されますか? たとえば、受信スループットが 20MBps で、この値が 10 の場合、出力スループットは 2MBps になります。
-
これはどのアプリケーションから読み取るのでしょうか? プロデューサー タイプに基づくサイズ設定で使用される名前「Spark」を選択します。上記の入力に基づいて、ストリーム プロセッサ インスタンスとトピック パーティションの推定に対するサイズ設定の次のような影響が予想されます。
-
このストリーム プロセッサ アプリケーションには、次の数のインスタンスが必要です。着信トピックにも、おそらくこれだけのパーティションが必要になります。このパラメータを確認するには、Confluent にお問い合わせください。
-
成長乗数なしの平均スループットは 1,000
-
成長乗数なしのピークスループットの場合は 4,000
-
成長乗数付き平均スループットは1,000
-
成長乗数によるピークスループット4,000
-
消費者
Apache Kafka からデータを消費し、Apache Kafka にデータを返さないアプリケーションまたはサービス (ネイティブ クライアントや Kafka コネクタなど) について説明します。
-
名前。 Spark の消費者。
-
*処理時間*このコンシューマーが 1 つのメッセージを処理するのにどれくらいの時間がかかりますか?
-
1 ミリ秒 (たとえば、ログ記録のような単純でステートレスなタスク)
-
10 ミリ秒 (データストアへの高速書き込み)
-
100 ミリ秒 (データストアへの書き込みが遅い)
-
1000ミリ秒(サードパーティのREST呼び出し)
-
期間が既知のその他のベンチマーク プロセス。
-
-
*消費者タイプ。*既存のデータストア (RDBMS、NoSQL、その他) へのアプリケーション、プロキシ、またはシンク。
-
これはどのアプリケーションから読み取るのでしょうか? このパラメータを、以前に決定したプロデューサーおよびストリームのサイズに接続します。
上記の入力に基づいて、コンシューマー インスタンスのサイズとトピック パーティションの見積りを決定する必要があります。コンシューマー アプリケーションには次の数のインスタンスが必要です。
-
平均スループットは2,000、成長乗数なし
-
ピーク時のスループットは8,000、成長乗数なし
-
成長乗数を含む平均スループットは2,000
-
成長乗数を含むピークスループットは8,000
着信トピックにもこの数のパーティションが必要になる可能性があります。確認するには Confluent にお問い合わせください。
プロデューサー、ストリーム プロセッサ、コンシューマーの要件に加えて、次の追加要件も提供する必要があります。
-
*再建の時間です。*たとえば、4 時間。 Apache Kafka ブローカー ホストに障害が発生し、そのデータが失われ、障害が発生したホストの代わりに新しいホストがプロビジョニングされた場合、この新しいホストはどのくらいの速さで再構築する必要がありますか? 値が不明な場合は、このパラメータを空白のままにしておきます。
-
*リソース使用率目標(パーセント)*たとえば、60。平均スループット時にホストをどの程度利用したいですか? Confluent では、Confluent 自己バランス クラスターを使用している場合を除き、60% の使用率を推奨しています。その場合、使用率はさらに高くなります。
あなたの環境を説明してください
-
クラスターはどのような環境で実行されますか? Amazon Web Services、Microsoft Azure、Google Cloud Platform、オンプレミスのベアメタル、オンプレミスの VMware、オンプレミスの OpenStack、オンプレミスの Kubernates のどれですか?
-
*ホストの詳細*コア数: 48 (例)、ネットワーク カードの種類 (10GbE、40GbE、16GbE、1GbE、またはその他の種類)。
-
*ストレージボリューム*ホスト: 12 (例)ホストごとにいくつのハードドライブまたは SSD がサポートされますか? Confluent では、ホストごとに 12 台のハード ドライブを推奨しています。
-
ストレージ容量/ボリューム(GB単位) 1000(例)。 1 つのボリュームにはギガバイト単位でどれくらいのストレージを保存できますか? Confluent では 1 TB のディスクを推奨します。
-
*ストレージ構成*ストレージ ボリュームはどのように構成されますか? Confluent では、Confluent のすべての機能を活用するために RAID10 を推奨しています。 JBOD、SAN、RAID 1、RAID 0、RAID 5 などのタイプもサポートされています。
-
単一ボリュームのスループット (MBps)。 125(例)。単一のストレージ ボリュームは、メガバイト/秒単位でどのくらいの速度で読み取りまたは書き込みできますか? Confluent では、通常 125MBps のスループットを持つ標準ハードドライブを推奨しています。
-
メモリ容量(GB) 64(例)。
環境変数を決定したら、「クラスターのサイズを設定」を選択します。上記の例のパラメータに基づいて、Confluent Kafka のサイズを次のように決定しました。
-
*Apache Kafka。*ブローカー数: 22。クラスターはストレージに制限されています。ホスト数を減らし、無制限のストレージを可能にするために、階層化ストレージを有効にすることを検討してください。
-
*Apache ZooKeeper。*数: 5、Apache Kafka Connect Workers: 数: 2、スキーマ レジストリ: 数: 2、REST プロキシ: 数: 2、ksqlDB: 数: 2、Confluent Control Center: 数: 1。
ユースケースを考慮しないプラットフォーム チームにはリバース モードを使用します。パーティション モードを使用して、1 つのトピックに必要なパーティションの数を計算します。見る https://eventsizer.ioリバースおよびパーティション モードに基づいてサイズを決定します。