Kinesis Data Firehose が S3 で非常に多くの小さなファイルを作成するのはなぜですか?

最終更新日: 2022 年 8 月 4 日

Amazon Kinesis Data Firehose から Amazon Simple Storage Service (Amazon S3) にデータをプッシュしようとしています。しかし、Kinesis Data Firehose が Amazon S3 バケットに多くの小さなファイルを作成していることに気付きました。何が起きているのでしょうか?

簡単な説明

Kinesis Data Firehose は、次の理由により、(BufferingHints API で) 指定よりも小さいレコードを配信します。

  • 圧縮が有効になっている
  • Kinesis Data Firehose 配信ストリームがスケールしている。
  • Amazon Kinesis Data Streams がデータソースとしてリストされている。

解決方法

圧縮が有効になっている

Kinesis Data Firehose 配信ストリームで圧縮が有効になっている場合、BufferingHints の両方のパラメータが圧縮の前に適用されます。SizeInMBs および IntervalInSeconds パラメータを確認します。

レコードの各バッチがバッファリングされた後、パラメータが適用されます。データレコードがバッファおよび圧縮されると、Amazon S3 に小さなファイルが作成されます。

Kinesis Data Firehose 配信ストリームが拡張されている

制限の引き上げが要求された場合、または Kinesis Data Firehose が自動的にスケールした場合、Data Firehose 配信ストリームはスケールできます。デフォルトでは、Kinesis Data Firehose は配信ストリームを一定の制限まで自動的にスケールします。Amazon Kinesis の自動スケーリング動作により、制限を引き上げることなく、スロットリングの発生可能性を低減できます。

Kinesis Data Firehose の配信ストリームがスケールすると、Data Firehose のバッファリングヒントに影響を及ぼす可能性があります。

: BufferSize は、Kinesis Data Firehose を設定するときに設定されます。

Kinesis Data Firehose 配信ストリームには比例した数の並列バッファリングがあり、これらのすべてのバッファからデータが同時に配信されます。例えば、Kinesis Data Firehose はデータをバッファし、バッファサイズ制限に基づいて 1 つのファイルを作成できます。Kinesis Data Firehose が現在のスループットの制限を 2 倍にスケールすると、2 つの別々のチャネルが同じ時間間隔でファイルを作成します。Kinesis Data Firehose が最大 4 倍にスケールアップすると、同じ時間間隔で 4 つの異なるチャネルが S3 に 4 つのファイルを作成します。

: 内部で作成されるチャネルの数は Kinesis Data Firehose によって異なります。上記の例では、4 つのチャネルが作成されました。

Kinesis Data Firehose 配信ストリームがデフォルトの制限を超えてスケールされていないことを確認します。Kinesis Data Firehose 配信ストリームの現在の制限を表示するには、次の Amazon CloudWatch メトリクスを確認してください。

  • BytesPerSecondLimit
  • RecordsPerSecondLimit
  • PutRequestsPerSecondLimit

これらのメトリクスの値がデフォルトのクォータ制限と異なる場合は、Kinesis Data Firehose の配信ストリームがスケールされたことを示します。

Kinesis Data Streams がデータソースとしてリストされている

Kinesis Data Stream が Kinesis Data Firehose のデータソースとしてリストされている場合、Kinesis Data Firehose は内部的にスケールします。デフォルトでは、Kinesis Data Firehose は Kinesis Data Stream のボリューム容量を満たそうとします。このスケーリングにより、バッファリングサイズが変更され、より小さなサイズのレコードが配信される可能性があります。

注: バッファリングヒントオプションはヒントとして扱われます。そのため、Kinesis Data Firehose は、バッファリングを最適化するために異なる値を使用する場合があります。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?