Quando eu envio dados do Amazon Data Firehose para o Amazon Simple Storage Service (Amazon S3), o Firehose cria pequenos arquivos no meu bucket do S3.
Breve descrição
O Firehose fornece registros menores do que a API BufferingHints especifica pelos seguintes motivos:
- Você ativou a compressão.
- A escala do fluxo de entrega do Firehose foi ajustada.
- O Amazon Kinesis Data Streams está listado como fonte de dados.
Resolução
Você ativou a compressão
Se você ativar a compactação para seu stream de entrega do Firehose, o Firehose aplicará os parâmetros SizeInMBs e IntervalInSeconds da API BufferingHints antes da compactação.
Depois de cada lote de buffers de registros, o Firehose aplica os parâmetros. Em seguida, o Firehose compacta os registros de dados e cria pequenos arquivos no Amazon S3.
A escala do fluxo de entrega do Firehose foi ajustada.
Se você solicitar um aumento de cota ou se o Firehose for escalado automaticamente, o stream de entrega do Firehose será escalado. Por padrão, o Firehose escala automaticamente os fluxos de entrega até uma determinada cota. Esse ajuste de escala automático reduz o controle de utilização sem aumentar a cota.
Quando a escala dos fluxos de entrega do Firehose é ajustada, a API BufferingHints pode ser afetada.
Observação: ao configurar o Firehose, é possível definir o tamanho do buffer.
No fluxo de entrega do Firehose, o Firehose armazena os dados em canais paralelos e os entrega simultaneamente. Por exemplo, o Firehose armazena dados em buffer e cria um único arquivo com base na cota de tamanho do buffer. Se o Firehose for escalado para dobrar a cota de throughput atual, dois canais separados criarão arquivos no mesmo intervalo de tempo. Se o Firehose for escalado até quatro vezes, haverá quatro canais diferentes que criam quatro arquivos no Amazon S3 durante o mesmo intervalo de tempo.
Quando a escala dos fluxos de entrega é ajustada, o Firehose cria arquivos menores se o fator de escalabilidade e o volume de tráfego de entrada não corresponderem. Por exemplo, se o Firehose for escalado para quatro vezes a capacidade original e o tráfego de entrada também aumentar quatro vezes o volume de tráfego original, os tamanhos dos arquivos permanecerão consistentes. No entanto, quando o Firehose escala quatro vezes, mas o tráfego permanece o mesmo, o Firehose distribui o mesmo volume de dados em mais canais. Em seguida, os arquivos resultam em tamanhos menores.
Observação: o número de arquivos pode aumentar em ambos os cenários devido aos vários canais de buffer paralelos.
Certifique-se de que o stream de entrega do Firehose não ultrapasse a cota padrão. Para visualizar a cota atual do seu stream de entrega do Firehose, verifique as seguintes métricas do Amazon CloudWatch:
- BytesPerSecondLimit
- RecordsPerSecondLimit
- PutRequestsPerSecondLimit
Se os valores dessas métricas diferirem das cotas padrão, o fluxo de entrega do Firehose será escalado.
Você listou o Kinesis Data Streams como fonte de dados
Quando você lista um fluxo de dados como fonte de dados do Firehose, o Firehose é escalado internamente. Por padrão, o Firehose é escalado para atender à capacidade de volume do fluxo de dados. Quando o Firehose é dimensionado, o tamanho do buffer muda e pode levar à entrega de registros menores.
Observação: o Firehose trata as opções de dicas de buffer como dicas. Como resultado, o Firehose pode optar por usar valores diferentes para otimizar o buffer.