window
width : 0
clientWidth : 0
height : 0
heightVH : 0
content
left : 0
width : 0
padding : 0
column
left : 0
width : 0
gap : 0

마이크로배치

1 Contents
최신순

BeeAI 활용 교육 영상(04) - [2단계] 스트림 데이터 처리하기(이론)

현대 데이터 처리 환경에서 실시간성은 서비스의 가치를 결정짓는 핵심 요소로 자리 잡았습니다. 아파치 스파크(Apache Spark)는 이러한 요구에 부응하기 위해 스파크 스트리밍(Spark Streaming)에 이어 구조적 스트리밍(Structured Streaming)을 선보였습니다. 기존의 방식이 데이터를 마이크로 배치(Micro-batch) 단위로 쪼개어 처리하는 데 집중했다면, 구조적 스트리밍은 센서 데이터와 같은 실시간 정보를 보다 안정적으로 다루기 위해 설계되었습니다. 이는 단순히 속도의 문제를 넘어 운영 단계에서 데이터의 신뢰성을 확보하고 복합적인 연산을 효율적으로 수행하기 위한 기술적 진보라고 할 수 있습니다. 과거의 데이터 처리 방식은 보안 장비나 센서에서 발생한 로그 데이터를 파일이나 데이터베이스에 먼저 저장한 뒤, 이를 다시 불러와 통계를 내는 과정을 거쳤습니다. 하지만 수십 기가바이트에 달하는 방대한 데이터를 데이터베이스(DB)에서 쿼리로 호출하는 방식은 물리적인 시간 소요가 커 실시간 서비스를 구현하는 데 한계가 있었습니다. 이를 극복하기 위해 등장한 스트리밍 처리는 데이터를 디스크에 쓰기 전 메모리 상에서 즉각적으로 연산하는 것을 핵심으로 합니다. 이러한 메모리 기반의 접근 방식은 정제 시간을 획기적으로 단축하여 데이터가 발생하는 즉시 가치를 창출하게 합니다. 구조적 스트리밍의 주요 특징 중 하나는 윈도우(Window)와 워터마크(Watermark)를 통한 데이터 관리입니다. 윈도우 기능은 설정된 시간 동안의 데이터를 메모리에 유지하며 통계 연산을 수행하게 해주며, 워터마크는 네트워크 지연 등으로 늦게 도착하는 센서 데이터를 일정 시간 동안 기다려 주는 역할을 합니다. 이를 통해 데이터 누락이나 순서 뒤섞임 현상을 방지하고 통계의 정확도를 높일 수 있습니다. 또한 체크포인트(Checkpoint) 기능을 활용하면 장비 장애가 발생하더라도 메타데이터를 기반으로 작업을 복구할 수 있어 빅데이터 환경에서의 안정적인 운영을 보장합니다. 구조적 스트리밍은 서비스 시작 전 데이터의 형태인 스키마(Schema)를 엄격하게 정의하는 방식을 취합니다. 스파크 스트리밍이 스키마가 없는 데이터까지 유연하게 받아들여 매번 처리를 시도하는 것과 달리, 구조적 스트리밍은 정의된 포맷에 맞는 데이터만을 선별적으로 수용합니다. 이러한 스키마 중심의 설계는 데이터가 들어올 때마다 발생하는 불필요한 스키마 체크 과정을 생략하게 하여 처리 속도를 비약적으로 향상시킵니다. 결과적으로 로그 파일의 이벤트 발생 시간과 측정값을 구조화된 데이터프레임(DataFrame) 형식으로 즉시 변환하여 후속 분석에 곧바로 활용할 수 있게 됩니다. 스트리밍 처리의 결과물은 비즈니스 목적에 따라 컴플리트(Complete), 어펜드(Append), 업데이트(Update) 세 가지 모드로 출력됩니다. 전체 통계를 매번 갱신해야 하는 작업에는 컴플리트 모드가 적합하며, 데이터 변경이 감지될 때마다 출력하는 업데이트 모드는 실시간 모니터링에 유용합니다. 반면 어펜드 모드는 데이터가 더 이상 변경되지 않는 시점까지 기다렸다가 확정된 결과만을 내보냅니다. 이때 이벤트 시간(Event Time)과 실제 처리 시간의 차이를 정확히 계산하지 않으면 출력 지연이 발생할 수 있으므로, 서비스의 특성에 맞는 적절한 출력 전략과 트리거(Trigger) 설정이 필수적으로 요구됩니다. 체크포인트는 데이터의 정확한 처리를 보장하는 강력한 도구이지만, 실제 테스트 환경에서는 세심한 주의가 필요합니다. 메타데이터가 누적된 상태에서 작업을 재시작하면 번호가 꼬여 데이터 유실이나 중복이 발생할 수 있기 때문입니다. 또한 구조적 스트리밍은 고정된 스키마를 사용하기 때문에 데이터의 행을 열로 바꾸는 피벗(Pivot) 연산이나 복합적인 정규화 과정에서 유연성이 떨어질 수 있습니다. 따라서 전체 데이터를 자유롭게 다루어야 하는 복합 연산의 경우, RDD 방식의 접근이 유리한 기존 스파크 스트리밍이나 다른 분석 도구를 전략적으로 혼합하여 사용하는 지혜가 필요합니다. 결론적으로 스파크 스트리밍과 구조적 스트리밍은 각각의 장단점이 뚜렷한 기술입니다. 구조적 스트리밍은 데이터 수집과 정제 단계에서 높은 안정성과 빠른 속도를 제공하며, 스파크 스트리밍은 로우 레벨의 세밀한 제어와 분석의 유연성을 보장합니다. 실제 에너지 예측 서비스와 같은 프로젝트에서는 앞단에서 데이터를 안정적으로 수용하기 위해 구조적 스트리밍을 사용하고, 뒷단의 정교한 분석 모델링에는 스파크의 다른 기능들을 결합하는 워크플로우를 구성합니다. 기술의 특성을 정확히 이해하고 상황에 맞는 도구를 선택할 때 비로소 진정한 실시간 빅데이터 서비스 구현이 가능해집니다.

BeeAI 활용 교육 영상(04) - [2단계] 스트림 데이터 처리하기(이론)
한국전자통신연구원
  • 공학·기술