Perché Kinesis Data Firehose crea tutti questi piccoli file in S3?

3 minuti di lettura
0

Sto cercando di inviare dati da Amazon Kinesis Data Firehose ad Amazon Simple Storage Service (Amazon S3). Tuttavia, ho notato che Kinesis Data Firehose sta creando molti file piccoli nel mio bucket Amazon S3. Perché sta succedendo questo?

Breve descrizione

Kinesis Data Firehose fornisce record più piccoli di quelli specificati (nell'API BufferingHints) per i seguenti motivi:

  • È abilitata la compressione.
  • Il flusso di consegna di Kinesis Data Firehose è aumentato.
  • Il flusso di dati Amazon Kinesis è elencato come origine dati.

Soluzione

È abilitata la compressione

Se è abilitata la compressione nel flusso di consegna di Kinesis Data Firehose, entrambi i parametri BufferingHints vengono applicati prima della compressione. Controlla i parametri SizeInMBs e IntervalInSeconds per confermare.

Dopo che ogni batch di record è stato bufferizzato, vengono applicati i parametri. Una volta bufferizzati e compressi i record di dati, vengono creati file più piccoli in Amazon S3.

Il flusso di consegna di Kinesis Data Firehose è aumentato

Se è stato richiesto un aumento del limite o Kinesis Data Firehose è stato dimensionato automaticamente, il flusso di consegna di Data Firehose può aumentare. Per impostazione predefinita, Kinesis Data Firehose dimensiona automaticamente i flussi di consegna fino a un determinato limite. Il comportamento di dimensionamento automatico di Amazon Kinesis riduce la probabilità di limitazione senza dover ricorrere all'aumento del limite.

Quando il flusso di consegna di Kinesis Data Firehose aumenta, può causare un effetto sui suggerimenti di buffering di Data Firehose.

Nota: La dimensione del buffer viene impostata durante la configurazione di Kinesis Data Firehose.

Esiste anche un numero proporzionale di buffering parallelo all'interno del flusso di consegna di Kinesis Data Firehose, in cui i dati vengono forniti simultaneamente da tutti questi buffer. Ad esempio, Kinesis Data Firehose può bufferizzare i dati e creare un singolo file in base al limite di dimensione del buffer. Se Kinesis Data Firehose raddoppia il limite di velocità di trasmissione effettiva corrente, due canali separati creeranno i file nello stesso intervallo di tempo. Se Kinesis Data Firehose aumenta fino a quattro volte, ci saranno quattro canali diversi che creeranno quattro file in S3 nello stesso intervallo di tempo.

Nota: Il numero di canali creati internamente dipenderà da Kinesis Data Firehose. Nell'esempio precedente, sono stati creati quattro canali.

Verifica che il flusso di consegna di Kinesis Data Firehose non abbia superato il limite predefinito. Per visualizzare il limite attuale del flusso di consegna di Kinesis Data Firehose, controlla le seguenti metriche di Amazon CloudWatch:

  • BytesPerSecondLimit
  • RecordsPerSecondLimit
  • PutRequestsPerSecondLimit

Se i valori di queste metriche differiscono dai limiti di quota predefiniti, significa che il flusso di consegna di Kinesis Data Firehose è aumentato.

Il flusso di dati Kinesis è elencato come origine dati

Quando un flusso di dati Kinesis viene elencato come origine dati di Kinesis Data Firehose, quest'ultimo si dimensiona internamente. Per impostazione predefinita, Kinesis Data Firehose tenta di soddisfare la capacità di volume del flusso di dati Kinesis. Questo dimensionamento modifica le dimensioni del buffering e può portare alla consegna di record di dimensioni inferiori.

Nota: le opzioni di suggerimento di buffering vengono trattate come suggerimenti. Di conseguenza, Kinesis Data Firehose potrebbe scegliere di utilizzare valori diversi per ottimizzare il buffering.


AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa