더북(TheBook)

6.3.1.3 유입 속도 제한

더 이상 처리 시간을 줄이거나 병렬화를 확대할 수 없음에도 여전히 스케줄링 지연 시간이 증가한다면, 마지막 처방은 데이터가 유입되는 속도를 제한하는 것이다. 스파크 스트리밍에서는 spark.streaming.receiver.maxRate 매개변수(리시버 기반 커넥터에 사용)와 spark.streaming.kafka.maxRatePerPartition 매개변수(카프카 다이렉트 커넥터에 사용)로 데이터의 유입 속도를 수동으로 제한할 수 있다. 전자는 각 리시버 기반 입력 스트림에 유입되는 레코드 개수를 제한하며, 후자는 각 카프카 파티션에서 가져올 레코드 개수를 제한한다(다이렉트 스트림은 복수의 카프카 파티션에서 데이터를 가져올 수 있다). 전자와 후자 모두 초당 레코드 개수를 값으로 설정하며, 기본 값은 무제한으로 레코드 개수를 제한하지 않는다.

spark.streaming.backpressure.enabled 인자를 true로 설정해 역압력(backpressure)기능을 활성화할 수 있다. 이 기능은 스케줄링이 지연되기 시작하면 애플리케이션이 받을 수 있는 최대 메시지 개수를 자동으로 조절한다. 하지만 사용자가 수동으로 설정한 두 maxRate 매개변수 값을 초과하지 않는다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.