유기농은 너무 비싸서 그런데 농약 친 건 어딨나요?

유기농은 너무 비싸서 그런데 농약 친 건 어딨나요?

08 Sep 2021

스파크를 활용한 실시간 처리 : ch2. 스트림 처리 모델

책 스파크를 활용한 실시간 처리 2단원 정리입니다.

스트림 처리에서의 소스와 싱크

스파크의 스트리밍 프레임워크에서는 데이터 소스 개념을 사용해서 데이터 스트림에 접근할 수 있다. 스트림으로 부터의 데이터 접근을 스트림 소비(consuming the stream)라고 한다. 스파크 컨트롤 외부에 데이터 스트림을 쓰는데 사용하는 추상화를 스트리밍 싱크라고 한다.

Source&Sync

프로세싱 컴포넌트에 의해 소스로 부터 데이터가 소비되고 최종 결과는 싱크로 생성된다.

소스와 싱크의 개념은 시스템 경계를 나타내며, 하나의 프레임워크의 싱크는 다운스트림 프레임워크의 소스가 된다. 이러한 연결을 파이프라인이라고 한다.

서로 정의된 불변의 스트림

스파크 클러스터의 특정 프로세스는 프로그램과 입력 데이터만 사용하여 데이터 스트림 내용을 재구성할 수 있다. 주어진 스트림에 대해 변형하는 것은 불가능하지만, Transformation을 사용해서 파생된 데이터 스트림을 얻고 프로그램에서 명시적으로 선언한 Transformation과 조작으로 모든 시점의 데이터 스트림을 추적할 수 있게 한다.

변환과 집계

스파크는 Transformation과 Aggregation을 광범위 하게 사용하는데, 변환은 Narrow Dependency를 가지고 집계는 Wide Dependency를 가진다.

Dependency

  • 변환 - 예) 입력 스트림의 모든 요소를 두배로 만들어주는 파생 스트림을 생성
  • 집계 - 예) 매 10분 마다의 값 평균을 계산

윈도우 집계

스트림 처리의 아이디어는 ‘지속적으로 실행되는 데이터 스트림을 처리하면서 오래 실행’ 이다. 규칙적이고 반복적인 시간 기반 집계를 윈도우(window)라고 한다.

윈도우 집계의 예로는 ‘시간당 최대 값’ 또는 ‘15분당 총 전기 사용량’ 등이 있다.

텀블링 윈도우와 슬라이딩 윈도우

텀블링 윈도우(tumbling)는 각 그룹이 이전 그룹을 따르고 겹치지 않는 고정된 기간의 그룹을 말한다.

슬라이딩 윈도우(sliding)는 집계 기간 자체보다 더 높은 빈도로 보고되는 일정 기간 동안의 집계를 말한다.

보고 빈도가 윈도우 크기와 동일한 슬라이딩 윈도우의 특별한 경우가 텀블링 윈도우이다.

Window

비상태 및 상태 기반 처리

stateful stream processing

상태 기반 스트림

살펴본 데이터의 맥락에서 동시에 새로운 데이터를 이해하려는 접근은 종종 상태 기반 스트림 처리(stateful stream processing)으로 이어진다.

상태 기반 스트림 처리는 결과를 얻기 위해 과거 정보를 찾는 모든 스트림 처리를 말하며, 스트림의 다음 요소를 계산하는 과정에서 일부 상태 정보를 유지해야 한다. 입력 데이터 스트림에서 관찰된 새로운 데이터 요소에서 무언가를 연산하고 가지고 있던 내부 데이터를 새로 고친다.

상태 기반 처리는 결과 생성을 위해 스트림을 통과하고 각 단계에서 중간 값을 유지해야해서 비상태에 비해 많은 컴퓨팅 리소스가 필요하다. 하지만 일반적인 문제를 해결하는데 도움이 된다.

비상태 기반 스트림

이전 요소를 요구하지 않고 원하는 요소를 직접 계산해서 스트림의 상태를 알고 있을 필요가 없다.

시간의 영향

데이터 스트림에는 처리 시간(processing time)과 이벤트 시간(event time) 개념이 있다.

event time

  • 처리 시간 - 데이터 소스에서 새로운 이벤트를 관찰하는 시간 ( 스트림의 내용과는 독립적인 시간 )
  • 이벤트 시간 - 실제로 이벤트가 발생한 시간 ( 일반적으로 스트림 메시지 페이로드에 추가된 시간 )

타임스탬핑(timestamping)

시간 개념의 제공자로서이 있다. 메시지 생성 시 시간 레지스터를 추가하는 작업으로 구성되며, 데이터 스트림의 일부가 된다. 사용자가 데이터가 생성된 순간을 고려하여 데이터를 추론할 수 있게 한다.

전달 지연 (delivery delay)

delivery delay

이벤트의 생산과 최종 소비 사이에 경과된 시간이 다를 수가 있는데 전달 지연(delivery delay)가 발생했다고 한다. 이벤트 생성 시간(event time)을 기준으로 윈도우 집계를 할 때, 네트워크에 의해 이벤트가 삭제하거나 도착하지 않을 때 등등 전달 지연으로 발생으로 인한 지연, 배열 중복 제거와 문제를 해결하는 워터마크를 사용한다.

워터마크(water mark)를 사용한 컴퓨팅

워터마크는 어떤 순간에도 데이터 스트림에서 우리가 받아들일 수 있는 가장 오래된 타임스탬프다. 이벤트 시간 기준의 윈도우 집계 시, 대기의 경계를 워터마크를 기준으로 정해줄 수 있다. 어떤 이벤트가 윈도우에 속하는지, 어떤 이벤트가 너무 늦었는지 판단의 기준을 제공할 수 있다.

watermark

스트림에 대해 워터마크 개념을 정의되면 동작 모드를 두가지 중 하나로 선택할 수 있다.

  • 결과를 워터마크 기준 오래된 이벤트와 비교하여 생산하고 있는 경우, 워터마크 보다 더 오래된 이벤트는 고려하지 않은 최종 결과로 생성
  • 워터마크에 비해 오래된 이벤트를 고려해서 출력을 참정적인 결과로 생성 ( 추가로 중간값 저장과 지연된 이벤트 도착에 따라 계산에 그것들을 포함하는 메모리 공간이 필요 )

Categories

Tags