¿Por qué Kinesis Data Firehose crea tantos archivos pequeños en S3?

3 minutos de lectura
0

Estoy intentando enviar datos de Amazon Kinesis Data Firehose a Amazon Simple Storage Service (Amazon S3). Sin embargo, me he dado cuenta de que Kinesis Data Firehose crea muchos archivos pequeños en mi bucket de Amazon S3. ¿Por qué ocurre esto?

Breve descripción

Kinesis Data Firehose proporciona registros más pequeños que los especificados (en la API BufferingHints) por los siguientes motivos:

  • La compresión está habilitada.
  • La secuencia de entrega de Kinesis Data Firehose ha escalado.
  • Amazon Kinesis Data Streams aparece como origen de datos.

Resolución

La compresión está habilitada

Si la compresión está habilitada en su secuencia de entrega de Kinesis Data Firehose, los dos parámetros de BufferingHints se aplican antes de la compresión. Compruebe los parámetros SizeInMBs e IntervalInSeconds para confirmarlo.

Después de almacenar en búfer cada lote de registros, se aplican los parámetros. Cuando los registros de datos se almacenan en búfer y se comprimen, se crean archivos más pequeños en Amazon S3.

La secuencia de entrega de Kinesis Data Firehose ha escalado

Si se solicitó un aumento del límite o Kinesis Data Firehose escaló automáticamente, la secuencia de entrega de Data Firehose puede escalar. De forma predeterminada, Kinesis Data Firehose escala automáticamente las secuencias de entrega hasta un límite determinado. El comportamiento de escalamiento automático de Amazon Kinesis reduce la probabilidad de limitación sin necesidad de aumentar el límite.

Cuando la secuencia de entrega de Kinesis Data Firehose escala, esto puede afectar a las sugerencias de almacenamiento en búfer de Data Firehose.

Nota: El tamaño del búfer se establece al configurar su Kinesis Data Firehose.

También hay un número proporcional de búferes paralelos dentro de la secuencia de entrega de Kinesis Data Firehose, donde los datos se entregan simultáneamente desde todos estos búferes. Por ejemplo, Kinesis Data Firehose puede almacenar en búfer los datos y crear un único archivo según el límite de tamaño del búfer. Si Kinesis Data Firehose escala para duplicar el límite de rendimiento actual, dos canales distintos crearán los archivos dentro del mismo intervalo de tiempo. Si Kinesis Data Firehose escala verticalmente hasta cuatro veces, habrá cuatro canales diferentes que crearán cuatro archivos en S3 durante el mismo intervalo de tiempo.

Nota: La cantidad de canales creados internamente dependerá de Kinesis Data Firehose. En el ejemplo anterior, se crearon cuatro canales.

Asegúrese de que la secuencia de entrega de Kinesis Data Firehose no haya escalado el límite predeterminado. Para ver el límite actual de su secuencia de entrega de Kinesis Data Firehose, compruebe las siguientes métricas de Amazon CloudWatch:

  • BytesPerSecondLimit
  • RecordsPerSecondLimit
  • PutRequestsPerSecondLimit

Si los valores de estas métricas difieren de los límites de cuota predeterminados, esto indica que la secuencia de entrega de Kinesis Data Firehose ha escalado.

Kinesis Data Stream aparece como origen de datos

Cuando Kinesis Data Stream aparece como origen de datos de Kinesis Data Firehose, Kinesis Data Firehose escala internamente. De forma predeterminada, Kinesis Data Firehose intenta alcanzar la capacidad de volumen de Kinesis Data Stream. Este escalado causa un cambio en el tamaño del búfer y puede llevar a la entrega de registros de menor tamaño.

Nota: Las opciones de sugerencias de almacenamiento en búfer se tratan como sugerencias. Como resultado, Kinesis Data Firehose podría optar por utilizar valores diferentes para optimizar el almacenamiento en búfer.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años