Skip To Content

Kafka のディスク上のストレージ

ArcGIS GeoEvent Server は、Apache Kafka を利用して、入力からジオイベント サービスまで、およびジオイベント サービスから出力までの、すべてのイベントのトラフィックを管理します。 Kafka は、公開されるイベント用の Topic (メッセージ キュー) およびそれらのイベント メッセージを受信する Consumer 用のトピックのセットを提供します。 Kafka Topic キューは、永続的格納のため、およびシステム障害の発生時のメッセージ キューの回復のために、ディスク上で管理されます。

GeoEvent Server Kafka Topic の基礎

GeoEvent Server の入力および出力は、それぞれ Kafka Topic を持っています。

入力および出力は、それぞれ

Kafka Topic は、複数のパーティションに分割されます。 各パーティションは、並列処理のために、イベントを 3 つに分かれたメッセージ キューに分類します。 各 Kafka Topic は、デフォルトで 3 つの Topic のパーティションを作成するように構成されます。 Topic の Subscriber は、パフォーマンスを改善するために並列に実行される複数のイベントの Consumer を起動します。

Topic の Topic パーティション

回復性と並列処理を向上させるため、各 Kafka Topic パーティションは 2 回複製されます。 ディスク上の 3 つの異なるフォルダーにレプリカが分散されます。

Topic の Topic パーティション レプリカ

Kafka が Consumer offset Topic 用のパーティションの大きいセットを作成して管理することにも注意してください。 この多数のパーティションは、並列処理によってシステムのパフォーマンスを改善します。

一般的なディスク サイズの推奨

GeoEvent Server の新規インストールの場合、ArcGIS GeoEvent Gateway サービスは、1 GB 以上のディスク容量を必要とします。 追加する各入力および出力は、イベントを処理する前に、720 MB 以上の追加のディスク容量を必要とします。 なお、これらすべてのサイズは最小の推定値であり、GeoEvent Server でさらに多くの要素を構成するにつれて、増える可能性があります。

GeoEvent Server Kafka の設定

Kafka プロパティ ファイルを編集することによって、GeoEvent ServerKafka インスタンスの動作を変更できます。 このプロパティ ファイルを変更する主な理由は、ディスク上のファイルの場所を変更するためです。 ただし、まれに、他のプロパティの更新が必要になる場合があります。

Kafka プロパティ ファイル

GeoEvent ServerKafka 設定を含んでいるプロパティ ファイル (kafka.properties) は、使用しているオペレーティング システムに応じて、次のディレクトリのいずれかにあります。

  • Windows (デフォルト) - C:\Program Files\ArcGIS\server\geoevent\gateway\etc\kafka.properties
  • Linux (デフォルト) - /home/arcgis/server/GeoEvent/gateway/etc/kafka.properties

このファイルのデフォルト設定は、ディスク使用量の増加を代償にしてパフォーマンスを最適化するように設定されます。

トピックの格納

GeoEvent ServerKafka Topic は、使用しているオペレーティング システムに応じて、次のディレクトリのいずれかに格納されます。

  • Windows (デフォルト) - C:\ProgramData\ESRI\GeoEvent-Gateway\kafka\
  • Linux (デフォルト) - /home/arcgis/.esri/GeoEvent-Gateway/config.[machine name]/kafka/ (たとえば、/home/arcgis/.esri/GeoEvent-Gateway/config.gesdev01/kafka/)

kafka\ フォルダーに log\log1\log2\ の 3 つのログ フォルダーが作成され、パーティション レプリカが保存されます。

Kafka Topic の保存場所を変更するには、使用しているオペレーティング システムに応じて、次のプロパティを更新します。

Windows のデフォルト プロパティ:

  • gateway.data.dir=C://ProgramData//Esri//GeoEvent-Gateway//
  • log.dirs=kafka/logs,kafka/logs1,kafka/logs2

Linux のデフォルト プロパティ:

  • gateway.data.dir=/home/arcgis/.esri/GeoEvent-Gateway/config.[machine name] (たとえば、/home/arcgis/.esri/GeoEvent-Gateway/config.gesdev01)
  • log.dirs=kafka/logs,kafka/logs1,kafka/logs2

Topic パーティション

GeoEvent Server では、Topic パーティションのデフォルトの数は 3 です。 そのため、Topic が格納されているログ フォルダーを調べる場合、同じ名前の末尾にインデックス (-1、-2、および -3) の付いたフォルダーがあります。 各パーティション フォルダー内では、Kafka がその時点での Topic パーティション内のすべてのデータのログを保持します。 Topic パーティション数を変更するには、次のプロパティを変更します。

  • num.partitions=3

Topic のレプリケーション

GeoEvent Server では、Topic パーティション レプリカのデフォルトの数は 2 です。 そのため、Topic が格納されている各ログ フォルダーを調べる場合、同じ名前の末尾にインデックス (-1、-2、または -3) の付いた 2 つのフォルダーが必ずあります。 log\log1\log2\ の各フォルダーには、2 つのパーティション フォルダーの 1 つのレプリカが保存されます (各フォルダーに保存される 2 つのパーティションはランダム)。 Topic パーティション レプリカの数を変更するには、次のプロパティを変更します。

  • replication-factor=2

Topic パーティションのファイル サイズ

デフォルトでは、各 Kafka Topic パーティションのログ ファイルは、ディスク上で 20 MB の最小サイズから開始して、100 MB の最大サイズまで増加し、その後、新しいログ ファイルが作成されます。 どの時点でも、パーティション レプリカ内に複数のログ ファイルが存在することができます。 少なくとも、入力/出力あたり 720 MB [ (100 MB + 20 MB) x 3 パーティション x 2 レプリカ = 720 MB ] 以上を計画してください。 高速なイベント ストリームの極端なケースでは、各 Topic パーティション レプリカ フォルダーが、最大ログ ファイル サイズの 3 ~ 4 倍 (パーティション レプリカあたり 300 MB ~ 400 MB) に増えることがあります。 3 つのパーティションを含む単一のトピックの場合、合計ディスク容量は、ある時点で 1800 MB ~ 2400 MB に増える可能性があります。 この最大サイズに、構成した入力および出力の数を掛けた値が、GeoEvent Server で Kafka に利用可能である必要があるディスク上の推定サイズになります。 以下のプロパティは、新しいファイルに切り替わる前のログ ファイルの最大サイズ (デフォルトは 100 MB) を制御します。

  • log.segment.bytes=104857600

高速のデータが存在する場合、最終的に複数の 100 MB のログ ファイルが存在する可能性があり、そうでない場合は、1 つのログ ファイルのみが存在することがあります。 低速のイベント データの場合、このプロパティをさらに小さいサイズに設定できます。 高速のイベント データの場合、このプロパティをさらに大きいサイズに設定する必要があります。 小さすぎるサイズに設定した場合、Kafka が頻繁にファイルを切り替えます。 大きすぎるサイズに設定した場合、Kafka がログ ファイルを新しいファイルにめったに切り替えなくなり、古いイベントが不必要に長くキュー内に保持されるようになります。

Kafka Topic パーティションによって消費されるディスク容量に影響を与える別の設定は、保持バイトです。 このプロパティは、最小量のデータを常に保持するように Kafka に指示します。 デフォルトでは、このプロパティの値は 100 MB です。 そのため、Kafka が古いデータを削除することができ、削除するべきであると決定した場合でも、残るデータのサイズは 120 MB を下回りません (古いログ ファイルに 100 MB、新しいログ ファイルに 20 MB)。 上の segment bytes プロパティと同様に、低速のデータを操作する場合、このプロパティの値を小さくすることができます。 高速のデータを操作する場合は、デフォルトの 100 MB を使用する必要があります。

  • log.retention.bytes=104857600

Topic パーティションのファイル管理

Subscriber がパーティション キューからイベントを消費する際に、イベントは、すべての Subscriber によって消費されたとしてマーク付けされたときに、古くなります。 Kafka が古いメッセージを保持する時間および Kafka が古いメッセージを消去する頻度は、次のプロパティを使用して設定できます。

  • log.retention.hours=1
  • log.retention.check.interval.ms=30000

デフォルトの保持ポリシーは 1 時間です。 1 時間より古い、現在アクティブなデータを格納していないすべてのデータ ファイルは、削除されます。 ファイルが、データを格納するためにまだアクティブに使用されている場合 (少量/低速のデータの場合など)、そのファイルは削除されません。 Kafka は、デフォルトでは 30 秒おきに古いデータ ファイルをチェックして削除します。

Topic パーティションのファイル管理に関するプロパティ

以下のプロパティを Kafka プロパティ ファイルで使用して、パーティション ファイルが切り替えられる頻度を制御することもできます。 このプロパティを小さい値に設定することで、ディスク使用量を改善することができますが、小さく設定しすぎると、パフォーマンスに影響を与えることがあります。 このプロパティの値を大きくすると、ディスク使用量が増えます。

  • log.roll.ms=1800000
  • log.roll.jitter.ms=180000

1 番目のプロパティは、30 分ごとにデータ ファイルを切り替え、基本的に、新しいデータ ファイルに置き換えるように、Kafka に指示します。 Kafka は、古いデータ ファイルのサイズにかかわらず、新しいデータ ファイルを 30 分ごとに作成します。 低速のデータ ストリームでは、この設定によって、データ ファイルがめったに満杯にならない場合に、古いデータを維持する必要性をなくすことができます。 2 番目のプロパティは、データ ファイルの切り替えに関して Kafka がどの程度持続的であるかを決定します。 推奨値は 3 分です。この値は、データ ファイルを切り替える必要があるかどうかを Kafka が 3 分ごとにチェックするということを意味します。