주요 컨텐츠로 이동

Apache Spark™ Structured Streaming의 실시간 모드 소개

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

Introducing Real-Time Mode in Apache Spark™ Structured Streaming

Summary

  • 밀리초 단위 스트림 처리: Spark Structured Streaming은 밀리초 단위로 데이터를 처리하는 실시간 모드를 도입하여 새로운 종류의 저지연 앱을 구현합니다.
  • 코드 재작성 불필요: 팀은 플랫폼 재구성이나 코드 전면 수정 없이 간단한 구성 변경으로 실시간 모드를 활성화할 수 있습니다.
  • 현재 공개 미리 보기 제공: 인기 있는 소스 및 싱크를 지원하는 Databricks에서 제공되며, 사기 탐지, 실시간 개인화, ML 특성 서빙에 이상적입니다.

Apache Spark™ Structured Streaming은 스트리밍 ETL부터 거의 실시간에 가까운 분석 및 머신러닝에 이르기까지, 대규모의 미션 크리티컬 파이프라인을 오랫동안 지원해 왔습니다. 이제 저희는 이벤트가 도착하는 즉시 처리하여 수십 밀리초의 지연 시간으로 이벤트를 처리하는 새로운 트리거 유형인 실시간 모드를 통해 완전히 새로운 종류의 워크로드로 해당 기능을 확장하고 있습니다.

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

이 새로운 모드는 오픈 소스 Apache Spark에 기여되고 있으며 현재 Databricks에서 공개 미리 보기로 제공됩니다.

이 게시물에서는 다음 내용을 다룹니다:

  • 실시간 모드란 무엇이며 어떻게 작동하는지
  • 이를 통해 구현할 수 있는 애플리케이션 유형
  • 오늘부터 어떻게 사용할 수 있는지

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

실시간 모드는 Spark Structured Streaming에서 지속적이고 낮은 지연 시간의 처리를 제공하며, p99 지연 시간은 한 자릿수 밀리초까지 낮습니다. 팀은 코드를 재작성하거나 플랫폼을 재구성할 필요 없이 단일 구성 변경으로 이를 활성화할 수 있으며, 현재 사용 중인 동일한 Structured Streaming API를 계속 사용할 수 있습니다.

실시간 모드 작동 방식

실시간 모드는 스테이지를 동시에 예약하는 장기 실행 스트리밍 작업을 실행합니다. 데이터는 스트리밍 셔플을 사용하여 메모리 내에서 작업 간에 전달되며, 이는 다음과 같은 이점을 제공합니다:

  • 조정 오버헤드 감소
  • 마이크로 배치 모드의 고정된 예약 지연 시간 제거
  • 일관된 서브세컨드 성능 제공

Databricks 내부 테스트에서 p99 지연 시간은 변환 복잡성에 따라 몇 밀리초에서 약 300ms까지 다양했습니다:

실시간 모드 내부 벤치마크
실시간 모드 내부 벤치마크

애플리케이션 및 사용 사례

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

Spark Structured Streaming의 실시간 모드는 초기 테스트에서 놀라운 결과를 보여주었습니다. 암호화 및 기타 변환을 수행하는 미션 크리티컬 결제 승인 파이프라인에서 P99 엔드투엔드 지연 시간을 단 15밀리초로 달성했습니다. 엄격한 SLA를 일관되게 충족하면서 데이터 흐름 전반에 걸쳐 이 낮은 지연 시간 처리를 확장할 수 있을 것으로 기대합니다. — Raja Kanchumarthi, 수석 데이터 엔지니어, Network International

Network International

위에 인용된 Network International의 결제 승인 사용 사례 외에도, 여러 초기 채택자들이 이미 이를 사용하여 다양한 워크로드를 지원하고 있습니다:

금융 서비스의 사기 탐지: 글로벌 은행은 Kafka에서 신용카드 거래를 실시간으로 처리하고 의심스러운 활동을 플래그 지정하며, 이 모든 과정을 200밀리초 이내에 완료하여 플랫폼 재구성 없이 위험과 응답 시간을 줄입니다.

소매 및 미디어의 개인화된 경험: OTT 스트리밍 제공업체는 사용자가 쇼 시청을 마친 직후 콘텐츠 추천을 업데이트합니다. 선도적인 전자상거래 플랫폼은 고객이 탐색하는 동안 제품 제안을 다시 계산하여 서브세컨드 피드백 루프로 참여도를 높게 유지합니다.

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

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

이들은 몇 가지 예시일 뿐입니다. 실시간 모드는 IoT 센서 경고 및 공급망 가시성부터 라이브 게임 텔레메트리 및 인앱 개인화에 이르기까지, 밀리초 단위로 데이터를 의사결정으로 전환하는 데 이점을 얻는 모든 워크로드를 지원할 수 있습니다.

가이드

최신 분석을 위한 컴팩트 가이드

실시간 모드 시작하기

실시간 모드는 현재 Databricks에서 공개 미리 보기로 제공됩니다. 이미 Structured Streaming을 사용하고 있다면, 코드를 재작성할 필요 없이 단일 구성 및 트리거 업데이트로 이를 활성화할 수 있습니다.

DBR 16.4 이상에서 사용해 보려면:

  1. Databricks에서 공개 미리 보기 액세스 권한이 있는 클러스터를 생성합니다(전용 모드 권장).
  2. 다음 구성을 설정하여 실시간 모드를 활성화합니다:
  • 쿼리에서 새 트리거를 사용합니다:
  • 체크포인팅

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

    요약

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

    더 자세한 내용은 전체 구현 세부 정보, 지원되는 소스 및 싱크, 예제 쿼리를 위해 실시간 모드 설명서를 참조하십시오. 새 트리거를 활성화하고 스트리밍 워크로드를 구성하는 데 필요한 모든 것을 찾을 수 있습니다.

    Apache Spark의 새로운 기능에 대한 더 넓은 관점을 얻고, 실시간 모드가 엔진의 진화에 어떻게 통합되는지 알아보려면 DAIS 2025의 Michael Armbrust의 Spark 키노트(여기)를 시청하십시오. 이 키노트는 Spark의 다음 챕터를 뒷받침하는 아키텍처 변화를 다루며, 실시간 모드는 이야기의 핵심 부분입니다.

    실시간 모드 뒤에 있는 엔지니어링에 대해 더 깊이 알아보려면, 디자인 및 구현을 단계별로 설명하는 엔지니어들의 기술 심층 분석 세션을 시청하십시오.

    그리고 Databricks의 광범위한 스트리밍 전략에 실시간 모드가 어떻게 통합되는지 알아보려면, Data Intelligence Platform의 스트리밍 종합 가이드를 확인하십시오.

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

    게시물을 놓치지 마세요

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