본문 바로가기

개발이야기

Udacity 데이터 스트리밍 강의정리 - 데이터 스트리밍 기초

데이터 스트리밍 이론 목차

- Strategies for Application Design
- Combining Streams
- Filtering Streams
- Remapping Streams
- Aggregating Streams
- Handling Time and Windowing
- Streams vs Tables

 

들어가기 전에

-Join (Streams) 
1개 이상의 output stream의 조합. 보통 연관된 key로 조합하는 것

-Filtering (Streams) 
데이터 스트림에서 일정 조건에 따라 데이터를 제거하는것

-Aggregating (Streams) 
데이터 스트림에서 더하거나 빼거나 key를 기반으로 group을 만드는 것

-Remapping (Streams) 
데이터 스트림에서 데이터를 수정하여 또다른 데이터 스트림을 만들어 내느것. 일부 필드가 빠지거나 추가될 수 있다.

-Windowing (Streams) 
일정 시간동안의 data 분석. 만약 데이터가 실시간으로 더이상 들어오지 않느다면 스트림 분석은 더이상 유효하지 않다.

-Tumbling Window (Streams) 
중첩되지 않은 일정 시간동안의 data 분석. 60분동안의 data분석이 이루어지면 그다음 60분은 이전시간에 분석했던 데이터는 다루지 않는다.

-Hopping Window (Streams) 
매 x분마다 일정시간동안의 data 분석. 일부 데이터는 겹칠 수 있다.

-Sliding Window (Streams) 
hopping window와 비슷하지만 매우 짧은 간격을 가지고 데이터를 분석.

-Stream 
topic의 모든 데이터, 변하지않는(immutable) 특성을 가진다. 새로운 데이터가 들어오면 stream의 끝에 추가된다.

-Table 
스트림 프로세싱 결과 데이터의 모음. 

스트림 프로세싱 기초

아파치 카프카는 scalable, Fault tolerance하기 때문에실시간 분석을 하기 적합합니다. 

데이터가 카프카에 들어가게 되면 topic에 들어간 데이터를 스트림프로세서가 분석을 진행하게 됩니다.

 

스트림 프로세싱 전략

1) Combining Streams

user정보와 결제 정보를 조합하기 위해서는 join이 필요하다. 이렇게 combining, joining하는 것을 Combining stream이라고 부른다. 이 때 user_id와 같은 조합할 어떤 key를 가지고 있는 경우 사용 가능하다. Combining은 windowing과 함께 사용하기도 한다.

 

2) Filtering Streams

데이터 중 어떤 조건에 해당하는 데이터만 원할때 사용된다. 혹은 많은 데이터 스트림을 모두 분석하려면 너무나 많은 자원이 사용되기 떄문에 분석에 필요한 데이터만 따로 빼내기 위해 사용되기도 한다. filtering은 joining이나 combining을 하기 전에 전처리로 수행되기도 한다. 

 

3) Remapping Streams

보안이슈나 혹은 데이터 처리를 위해 전처리로 사용된다.(특정 field의 value를 마스킹 처리 등)

 

4) Aggregation Streams

2개 혹은 여러개의 데이터를 새로운 형태의 데이터로 만들어 내는것. Aggregate function으로는 Max, Min, Sum, TopN, Histograms, Sets, List 등이 있다.

위 그림처럼 Table에 이미 저장된 데이터에 append 혹은 modify하기도한다.

 

5) Tumbling Window

겹치지 않는 일정 기간동안의 데이터 모음. 각 window기간과 기간사이에 공간(gap)은 없다.

 

6) Hopping Window

일부 데이터가 겹치면서 일정 기간동안의 데이터 모음. (ex) 5분마다 45분 동안의 기간에 대한 데이터 모음.) 반드시 window기간보다 반복(period)기간이 적어야한다.

 

7) Sliding Window

Hopping window와 비슷한데, 반복시간(period)가 극한으로 짧다. 대부분의 데이터가 또 다른 window기간 동안 중복처리 된다.

8) Streams

topic내부의 데이터. 변하지 않는(immutable) 특징을 가지고 있다. 제한되어 있지 않고 지속적이다.(unbounded)

 

8) Tables

변할 수 있는 데이터. 상기 그림의 우측 Table에서 처럼 새로운 신규 데이터가 들어오면 value가 변하게 된다. 지속적으로 데이터가 변함. 특정 시간의 데이터

 

10) Streams vs Tables

스트림과 테이블은 반대개념이 아니다. 스트림과 테이블 둘다 프로세싱 결과에 따른 output의 단위이다. 다만 stream은 지속되는 데이터의 모음이고 table은 특정 시간의 데이터를 뜻한다.