Por que o Kinesis Data Firehose está criando tantos arquivos pequenos no S3?

3 minuto de leitura
0

Estou tentando enviar dados do Amazon Kinesis Data Firehose para o Amazon Simple Storage Service (Amazon S3). No entanto, notei que o Kinesis Data Firehose está criando muitos arquivos pequenos no meu bucket do Amazon S3. Por que isso está acontecendo?

Breve descrição

O Kinesis Data Firehose fornece registros menores que o especificado (na API BufferingHints) pelos seguintes motivos:

  • A compactação está ativada.
  • O fluxo de entrega do Kinesis Data Firehose foi escalado.
  • O Amazon Kinesis Data Streams está listado como fonte de dados.

Resolução

A compactação está ativada

Se a compactação estiver ativada em seu fluxo de entrega do Kinesis Data Firehose, ambos os parâmetrosBufferingHints serão aplicados antes da compactação. Verifique os parâmetros SizeInMBs e IntervalInSeconds para confirmar.

Depois que cada lote de registros é armazenado em buffer, os parâmetros são aplicados. Quando os registros de dados são armazenados em buffer e compactados, arquivos menores são criados no Amazon S3.

O fluxo de entrega do Kinesis Data Firehose foi escalado

Se um aumento de limite foi solicitado ou o Kinesis Data Firehose foi escalado automaticamente, o fluxo de entrega do Data Firehose pode ser escalado. Por padrão, o Kinesis Data Firehose escala automaticamente os fluxos de entrega até um determinado limite. O comportamento de escalabilidade automática do Amazon Kinesis reduz a probabilidade de controle de utilização sem exigir um aumento de limite.

Quando o fluxo de entrega do Kinesis Data Firehose é escalado, isso pode causar um efeito nas dicas de buffer do Data Firehose.

Observação: BufferSize é definido quando você configura o Kinesis Data Firehose.

Também há um número proporcional de buffering paralelo no fluxo de entrega do Kinesis Data Firehose, em que os dados são entregues simultaneamente de todos esses buffers. Por exemplo, o Kinesis Data Firehose pode armazenar os dados em buffer e criar um único arquivo com base no limite de tamanho do buffer. Se o Kinesis Data Firehose for escalado para dobrar o limite de taxa de transferência atual, dois canais separados criarão os arquivos no mesmo intervalo de tempo. Se o Kinesis Data Firehose for escalado em até quatro vezes, haverá quatro canais diferentes criando quatro arquivos no S3 durante o mesmo intervalo de tempo.

Observação: o número de canais criados internamente dependerá do Kinesis Data Firehose. No exemplo acima, quatro canais foram criados.

Verifique se o fluxo de entrega do Kinesis Data Firehose não foi escalado além do limite padrão. Para ver o limite atual do seu fluxo de entrega do Kinesis Data Firehose, verifique as seguintes métricas do Amazon CloudWatch:

  • BytesPerSecondLimit
  • RecordsPerSecondLimit
  • PutRequestsPerSecondLimit

Se os valores dessas métricas diferirem dos limites da cota padrão, isso indica que o fluxo de entrega do Kinesis Data Firehose foi escalado.

O Kinesis Data Stream está listado como fonte de dados

Quando um Kinesis Data Stream é listado como fonte de dados do Kinesis Data Firehose, o Kinesis Data Firehose é escalado internamente. Por padrão, o Kinesis Data Firehose tenta atender à capacidade de volume do Kinesis Data Stream. Essa escala causa uma alteração no tamanho do buffer e pode levar à entrega de registros menores.

Observação: as opções de dica de buffer são tratadas como dicas. Como resultado, o Kinesis Data Firehose pode optar por usar valores diferentes para otimizar o armazenamento em buffer.


AWS OFICIAL
AWS OFICIALAtualizada há 2 anos