주요 컨텐츠로 이동

Apache Spark™ 구조화된 스트리밍에서 실시간 모드 소개

Spark의 새로운 실시간 트리거를 사용하여 밀리초 단위로 이벤트 처리

Introducing Real-Time Mode in Apache Spark™ Structured Streaming

Summary

  • 밀리초 단위의 스트림 처리: Spark 구조화된 스트리밍은 밀리초 단위로 데이터를 처리하는 실시간 모드를 도입하여, 저지연 앱의 새로운 클래스를 가능하게 합니다.
  • 재작성 필요 없음: 팀은 간단한 설정 변경으로 실시간 모드를 활성화할 수 있습니다 - 플랫폼 변경이나 코드 개편이 필요 없습니다.
  • Public Preview에서 사용 가능: Databricks에서 인기 있는 소스와 싱크를 지원하며; 사기 탐지, 실시간 개인화, ML 피처 서빙에 이상적입니다.

Apache Spark™ 구조화된 스트리밍은 스트리밍 ETL부터 거의 실시간 분석 및 머신 러닝에 이르기까지 대규모의 중요한 파이프라인을 오랫동안 지원해 왔습니다. 이제, 우리는 실시간 모드, 라는 새로운 트리거 유형을 통해 이벤트를 도착하는 대로 처리하고, 수십 밀리초의 지연 시간으로 완전히 새로운 클래스의 작업 부하에 대한 기능을 확장하고 있습니다.

기존의 마이크로 배치 트리거와 달리, 고정된 일정에 따라 데이터를 처리하는 (ProcessingTime 트리거) 또는 모든 사용 가능한 데이터를 처리한 후 종료하는 (AvailableNow 트리거) 실시간 모드는 데이터를 지속적으로 처리하고 결과를 준비되는 즉시 내보냅니다. 이를 통해 기존 코드를 변경하거나 플랫폼을 변경하지 않고도 사기 탐지, 실시간 개인화, 실시간 머신러닝 피처 제공과 같은 초저지연 사용 사례를 가능하게 합니다.

이 새로운 모드는 오픈 소스 Apache Spark에 기여되며, 현재 Databricks의 Public Preview에서 사용할 수 있습니다.

이 포스트에서는 다음을 다룰 예정입니다:

  • 실시간 모드가 무엇인지 그리고 어떻게 작동하는지
  • 이것이 가능하게 하는 응용 프로그램의 유형
  • 오늘부터 사용할 수 있는 방법

실시간 모드란 무엇인가요?

실시간 모드는 Spark 구조화된 스트리밍에서 연속적이고 저지연 처리를 제공하며, p99 지연 시간은 단일 자릿수 밀리초까지 낮아집니다. 팀은 단일 구성 변경으로 이를 활성화할 수 있으며, 재작성이나 재플랫폼화 없이 오늘 사용하는 동일한 구조화된 스트리밍 API를 유지할 수 있습니다.

실시간 모드 작동 방식

실시간 모드는 동시에 단계를 스케줄링하는 장기 스트리밍 작업을 실행합니다. 데이터는 스트리밍 셔플을 사용하여 메모리 내에서 작업 간에 전달되며, 이를 통해:

  • 조정 오버헤드를 줄입니다
  • 마이크로 배치 모드의 고정 스케줄링 지연을 제거합니다
  • 일관된 1초 미만의 성능을 제공합니다

Databricks 내부 테스트에서 p99 지연 시간은 변환 복잡성에 따라 몇 밀리초에서 ~300 ms까지 범위를 보였습니다:

실시간 모드 내부 벤치마크
Real-time mode internal benchmarks

응용 프로그램 및 사용 사례

실시간 모드는 비즈니스 작업의 중요한 경로에서 종종 초저지연 처리와 빠른 응답 시간을 요구하는 스트리밍 애플리케이션을 위해 설계되었습니다.

Spark 구조화된 스트리밍의 실시간 모드는 초기 테스트에서 놀라운 결과를 보여주었습니다. 우리가 암호화 및 기타 변환을 수행하는 임무 중요한 결제 승인 파이프라인에서는 P99 종단 간 지연 시간이 단지 15 밀리초에 불과했습니다. 우리는 엄격한 SLA를 일관되게 충족하면서 데이터 흐름 전반에 걸쳐 이 저지연 처리를 확장하는 것에 대해 낙관적입니다. — Raja Kanchumarthi, Lead Data Engineer, Network International

Network International

위에서 인용한 Network International의 결제 승인 사용 사례 외에도, 몇몇 초기 채택자들이 이미 다양한 작업 부하를 처리하기 위해 이를 사용했습니다:

금융 서비스에서의 사기 탐지: 글로벌 은행은 카프카에서 신용카드 거래를 실시간으로 처리하고 의심스러운 활동을 플래그하며, 이 모든 것이 200 밀리초 이내에 이루어집니다 - 리스크와 응답 시간을 줄이면서 플랫폼을 변경할 필요가 없습니다.

소매 및 미디어에서의 개인화된 경험: OTT 스트리밍 제공자는 사용자가 쇼를 시청한 직후에 콘텐츠 추천을 즉시 업데이트합니다. 주요 전자 상거래 플랫폼은 고객이 브라우징하는 동안 제품 제안을 재계산하여 초단위 피드백 루프로 참여도를 높입니다.

실시간 세션 상태 및 검색 기록: 주요 여행 사이트는 각 사용자의 최근 검색 내역을 실시간으로 추적하고 다양한 기기에서 표시합니다. 모든 새로운 쿼리는 세션 캐시를 즉시 업데이트하여, 지연 없이 개인화된 결과와 자동 완성을 가능하게 합니다.

실시간 ML 피처 서빙: 음식 배달 앱은 드라이버 위치와 준비 시간과 같은 피처를 밀리초 단위로 업데이트합니다. 이러한 업데이트는 직접적으로 머신러닝 모델과 사용자 대면 앱에 흘러들어가, ETA 정확도와 고객 경험을 향상시킵니다.

이것들은 몇 가지 예시일 뿐입니다. 실시간 모드는 IoT 센서 알림, 공급 체인 가시성, 실시간 게임 텔레메트리, 앱 내 개인화 등 밀리초 단위로 데이터를 결정으로 전환하는 데 이점이 있는 모든 작업을 지원할 수 있습니다.

실시간 모드 시작하기

실시간 모드는 이제 Databricks의 Public Preview에서 사용할 수 있습니다. 이미 구조화된 스트리밍을 사용하고 있다면, 단일 설정과 트리거 업데이트로 활성화할 수 있습니다 - 코드를 다시 작성할 필요가 없습니다.

DBR 16.4 이상에서 시도해 보려면:

  1. 클러스터 생성 (Dedicated Mode를 추천합니다)을 Databricks에서 Public Preview 접근 권한으로 수행합니다.
  2. 다음 Spark 구성을 설정하여 실시간 모드를 활성화 하세요:

  3. 쿼리에서 새 트리거를 사용하세요:

체크포인팅

trigger(RealTimeTrigger.apply(...)) 옵션은 새로운 실시간 실행 모드를 활성화하여 1초 미만의 처리 지연 시간을 달성할 수 있게 합니다. RealTimeTrigger 는 쿼리가 체크포인트를 얼마나 자주 지정하는지를 지정하는 인수를 받아들입니다. 예를 들어, trigger(RealTimeTrigger.apply(“x minutes”)) 기본적으로, 체크포인트 간격은 5분이며, 대부분의 사용 사례에 잘 작동합니다. 이 간격을 줄이면 체크포인트 빈도가 증가하지만, 대기 시간에 영향을 줄 수 있습니다. 대부분의 스트리밍 소스와 싱크가 지원되며, Kafka, Kinesis, 그리고 외부 시스템에 쓰기 위한 forEach 를 포함합니다.

요약

실시간 모드는 가장 낮은 가능한 지연 시간을 요구하는 사용 사례에 이상적입니다. 많은 분석 작업 부하에 대해, 표준 마이크로 배치 모드는 여전히 지연 시간 요구 사항을 충족하면서 더 비용 효율적일 수 있습니다. 실시간 모드는 약간의 시스템 오버헤드를 도입하므로, 위의 예시와 같은 지연 시간이 중요한 파이프라인에 사용하는 것을 권장합니다. 추가적인 소스와 싱크에 대한 지원이 확대되고 있으며, 우리는 호환성을 넓히고 지연 시간을 더욱 줄이기 위해 적극적으로 작업하고 있습니다.

자세한 내용은, 실시간 모드 문서 를 참조하여 전체 구현 세부 사항, 지원되는 소스와 싱크, 예제 쿼리를 확인하십시오. 새로운 트리거를 활성화하고 스트리밍 작업 부하를 구성하는 데 필요한 모든 것을 찾을 수 있습니다.

Apache Spark 4.0의 새로운 기능에 대한 더 넓은 시각, 실시간 모드가 엔진의 진화에 어떻게 적합한지를 포함하여 보려면, DAIS 2025에서 Michael Armbrust의 Spark 4.0 기조연설 을 시청하세요. 이는 Spark의 다음 장을 위한 아키텍처 변화를 다루며, 실시간 모드는 이야기의 핵심 부분입니다.

실시간 모드 뒤에 있는 엔지니어링에 대해 더 깊이 이해하려면, 우리 엔지니어들의 기술적인 깊이있는 세션을 시청하세요. 이 세션에서는 디자인과 구현을 설명합니다.

그리고 실시간 모드가 Databricks에서 더 넓은 스트리밍 전략에 어떻게 적용되는지 보려면, 데이터 인텔리전스 플랫폼에서의 스트리밍에 대한 종합 가이드를 확인하세요.

 

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

게시물을 놓치지 마세요

관심 있는 카테고리를 구독하고 최신 게시물을 받은편지함으로 받아보세요