내용으로 건너뛰기

Firehose가 Amazon S3에 여러 개의 작은 파일을 생성하는 이유는 무엇입니까?

2분 분량
0

Amazon Data Firehose에서 Amazon Simple Storage Service(Amazon S3)로 데이터를 푸시하면 Firehose에서 S3 버킷에 작은 파일을 생성합니다.

간략한 설명

Firehose는 다음과 같은 이유로 BufferingHints API가 지정하는 것보다 작은 레코드를 전송합니다.

  • 압축을 켰습니다.
  • Firehose 전송 스트림이 확장되었습니다.
  • Amazon Kinesis Data Streams를 데이터 소스로 등록했습니다.

해결 방법

압축을 켬

Firehose 전송 스트림에 대해 압축을 켜면 Firehose가 압축 전에 BufferingHints API의 SizeInMBsIntervalInSeconds 파라미터를 적용합니다.

각 레코드 배치가 버퍼링된 후 Firehose가 파라미터를 적용합니다. 그런 다음, Firehose는 데이터 레코드를 압축하고 Amazon S3에 작은 파일을 생성합니다.

Firehose 전송 스트림이 확장됨

할당량 증가를 요청하거나 Firehose가 자동으로 규모를 조정하면 Firehose 전송 스트림이 확장됩니다. 기본적으로 Firehose는 전송 스트림을 특정 할당량까지 자동으로 확장합니다. 이 자동 조정 동작은 할당량 증가 없이 스로틀을 줄입니다.

Firehose 전송 스트림이 확장되면 BufferingHints API가 영향을 받을 수 있습니다.

참고: Firehose를 구성할 때 버퍼 크기를 설정할 수 있습니다.

Firehose 전송 스트림 내에서 Firehose는 데이터를 병렬 채널로 버퍼링하며 데이터를 동시에 전송합니다. 예를 들어 Firehose는 데이터를 버퍼링하고 버퍼 크기 할당량을 기반으로 단일 파일을 생성합니다. Firehose가 현재 처리량 할당량의 두 배로 확장되면 두 개의 개별 채널이 동일한 시간 간격으로 파일을 생성합니다. Firehose가 최대 4배까지 확장되는 경우 동일한 시간 간격 동안 Amazon S3에 4개의 파일을 생성하는 네 개의 다른 채널이 있습니다.

전송 스트림이 확장되는 경우 스케일링 계수와 수신 트래픽 볼륨이 일치하지 않으면 Firehose가 더 작은 파일을 생성합니다. 예를 들어 Firehose가 원래 용량의 4배로 확장되고 수신 트래픽도 원래 트래픽 볼륨의 4배로 증가하는 경우 파일 크기는 일정하게 유지됩니다. 하지만 Firehose가 4배로 확장되지만 트래픽은 동일하게 유지되는 경우 Firehose는 동일한 볼륨의 데이터를 더 많은 채널에 배포합니다. 그러면 파일 크기가 작아집니다.

참고: 다중 병렬 버퍼링 채널 때문에 두 시나리오 모두에서 파일 수가 증가할 수 있습니다.

Firehose 전송 스트림이 기본 할당량을 초과하여 확장되지 않도록 하십시오. Firehose 전송 스트림의 현재 할당량을 보려면 다음 Amazon CloudWatch 지표를 확인하십시오.

  • BytesPerSecondLimit
  • RecordsPerSecondLimit
  • PutRequestsPerSecondLimit

이러한 지표의 값이 기본 할당량과 다를 경우 Firehose 전송 스트림이 확장됩니다.

Kinesis Data Streams를 데이터 소스로 등록함

데이터 스트림을 Firehose의 데이터 소스로 등록하면 Firehose가 내부적으로 확장됩니다. 기본적으로 Firehose는 데이터 스트림의 볼륨 용량에 맞게 확장됩니다. Firehose가 확장되면 버퍼 크기가 변경되어 더 작은 크기의 레코드가 전송될 수 있습니다.

참고: Firehose는 버퍼링 힌트 옵션을 힌트로 취급합니다. 따라서 Firehose가 다른 값을 사용하여 버퍼를 최적화할 수 있습니다.

AWS 공식업데이트됨 10달 전