為什麼 Kinesis Data Firehose 會在 S3 中建立這麼多小檔案?

1 分的閱讀內容
0

我正在嘗試將資料從 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 的緩衝提示產生影響。

注意事項: 設定 Kinesis Data Firehose 時會設定 BufferSize。

Kinesis Data Firehose 遞送串流中也有一定比例的平行緩衝,其中的資料會從所有這些緩衝區同時遞送。例如,Kinesis Data Firehose 可以緩衝資料,並根據緩衝大小限制建立單一檔案。如果 Kinesis Data Firehose 擴展到目前輸送量限制的兩倍,則兩個不同的通道會在相同時間間隔內建立檔案。如果 Kinesis Data Firehose 縱向擴展到四倍,則在相同時間間隔內,即會有四個不同的通道在 S3 中建立四個檔案。

注意事項: 內部建立的通道數目將取決於 Kinesis Data Firehose。在上面的範例中,建立了四個通道。

檢查並確定 Kinesis Data Firehose 遞送串流未超出預設限制進行擴展。若要檢視 Kinesis Data Firehose 遞送串流的目前限制,請檢查下列 Amazon CloudWatch 指標:

  • BytesPerSecondLimit
  • RecordsPerSecondLimit
  • PutRequestsPerSecondLimit

如果這些指標的值與預設配額限制不同,則表示已擴展 Kinesis Data Firehose 的遞送串流。

已將 Kinesis Data Streams 列為資料來源

當 Kinesis Data Streams 列為 Kinesis Data Firehose 的資料來源時,則 Kinesis Data Firehose 會在內部擴展。依預設,Kinesis Data Firehose 會嘗試符合 Kinesis Data Streams 的磁碟區容量。這種擴展會導致緩衝大小發生變更,並可能導致遞送較小的記錄。

**注意事項:**緩衝提示選項會視為提示。因此,Kinesis Data Firehose 可能會選擇使用不同的值來最佳化緩衝。


AWS 官方
AWS 官方已更新 2 年前