데이터이야기

DB 노하우, 데이터직무, 다양한 인터뷰를 만나보세요.

실시간 빅데이터 처리 기술(1)

데이터 이야기
작성자
dataonair
작성일
2012-04-18 00:00
조회
11437


이번 시간에는 빅데이터 플랫폼 기술 중에서 실시간 빅데이터 처리 기술에 대해서 살펴보려고 합니다.

이전에 설명 드렸던 것처럼 빅데이터하면 빠지지 않고 언급되는 기술인 하둡은 분산 병렬 처리의 Defacto Standard가 되었습니다. 빅데이터의 특징인 3V Velocity(속도) 측면에서 생각해 볼 때 하둡은 엄청난 대규모 데이터를 빠르고 쉽게, 그리고 fault-tolerance 한 방식으로 처리를 할 수 있도록 해줍니다. 하지만 실시간이나 준 실시간 보다는 주로 배치 처리에 활용 되는 기술이라고 할 수 있습니다. 물론 배치 처리라고 하더라도 과거와 비교하면, 엄청나게 시간을 단축 시키거나 시도조차 할 수 없는 불 가능한 작업들을 가능하게 해 주었습니다. 그렇다면 빅데이터를 실시간이나 준 실시간으로 처리해야 하는 경우에는 어떻게 할까요 어떤 기술과 방법론을 쓸 수 있을까요 물론 관련하여 다양한 기술과 방법론이 있지만 최근에 많은 관심을 받고 있는 기술인 스트림 컴퓨팅 기술에 대해서 잠깐 살펴 보도록 하겠습니다.

스트림 컴퓨팅은 끊임 없이 발생하는 대규모 이벤트성 데이터를 실시간으로 처리하고 분석하는 기술이며, 데이터의 특성에 따라 정형데이터와 비정형 데이터 스트림 처리 기술로 나누어 볼 수 있습니다.

먼저 정형 데이터 스트림 처리 기술, 이 중에서도 CEP(Complex Event Processing)라고 하는 기술에 대해서 잠시 알아 보겠습니다.

CEP는 실시간 이벤트 분석 기술 중의 하나이며, 주로 정형 데이터(비정형 데이터도 처리 할 수는 있음)를 실시간으로 처리하는 데 사용됩니다. 데이터를 저장한 다음에 질의문을 실행해서 결과를 얻어오는 기존의 DBMS 기술 대비 차별화되어 발전한 기술이라고 할 수 있습니다.

CEP에서는 SQL과 유사한 EQL(Event Query Language)이라는 언어를 이용해서 질의문

또는 조건문을 만들어서 CEP (Rule)엔진에 등록합니다. 그런 다음 예를 들어 조건문에해당하는 스트림 데이터가 지나갈 경우(패턴 매치 등) 미리 설정한 액션이 수행됩니다. 개발자나 운영자 입장에서는 기존 RDBMS에서 SQL로 데이터를 관리했을 때와 환경이 유사하기 때문에, 비교적 적은 학습 비용으로 CEP를 사용할 수 있습니다.

CEP RDBMS와의 차이점을 간단하게 요약하면 아래와 같습니다.

DBMS

CEP

처리/분석 대상

- 저장된 DB 데이터

- 실시간 발생하는 스트림 데이터

데이터 저장/접근 방식

- 주로 하드 디스크

- 랜덤 접근

- 메모리 기반

- 시간 순으로 순차적 접근

질의 형태

- 단발성 질의

- 한번에 처리

- 정확한 처리 결과 요구

- 연속적인 질의

- 윈도 기반 점진적 처리

- 근사치 처리 결과도 허용

<출처: Sharma Chakravarthy 저서, 2009>

요약표의 내용처럼 CEP 시스템은 스트림 데이터를 메모리로 일정 기간(Time window) 보관해서 처리하는 방식이기 때문에 범용 서버가 아닌 고 사양 서버(Scale up 방식)를 보통 이용하게 됩니다. 이러한 CEP는 다음과 같은 용도로 사용 될 수 있습니다.

대표적인 CEP 오픈소스로 ESPER가 있습니다. ESPER에 대한 좀 더 자세한 설명이 필요하신 분은 아래 링크를 참조하시기 바랍니다.

http://www.slideshare.net/aparnachaudhary/esper-cep-engine

이번에는 비정형 데이터 스트림 처리 기술을 살펴 보겠습니다.

아시다시피() 빅데이터에서 대부분을 차지하는 데이터는 정형이 아닌 비정형입니다. 그렇기 때문에 빅데이터 시대에서 어쩌면 더 필요로 하는 기술이 이러한 비정형 데이터 스트림을 처리하는 기술이 아닐까 생각합니다. 대규모 비 정형 데이터 처리를 위해 분산 병렬 처리 기능과 확장성은 기본적으로 가지고 있기 때문에 분산 스트림 컴퓨팅이라는 표현을 쓰기도 합니다.

그렇다면 분산 스트림 컴퓨팅은 어떤 식으로 비정형 데이터를 처리를 할까요 앞서서 CEP RDBMS와 비교해서 설명했었는데, 분산 스트림 컴퓨팅은 하둡이랑 비교해 볼 수 있습>하둡은 데이터 분석을 위해서 HDFS라고 하는 하둡 분산파일시스템에 입력 데이터를 먼저 업로드(upload)합니다. 그런 다음 MapReduce를 이용해서 저장된 데이터(주로 비 정형)를 분석/처리 합니다. 그 결과는 HDFS 또는 다양한 저장소에 저장할 수 있습니다.

분산 스트림 컴퓨팅은 분석/처리하기 위해 입력 데이터를 업로드 하는 과정이 필요 없습니다. 상황에 따라서 HDFS 같은 저장소 자체가 필요 없을 수도 있습니다.

스트림 데이터는 키의 해시 값(스트림을 분산 시키는 방식 중의 하나)을 기준으로 클러스터 내 노드들에게 전달 됩니다. 스트림 데이터가 전달 된 클러스터 내 각 개별노드는 자신에게 할당된 데이터를 연속적으로 처리합니다. 처리 된 중간 결과 값에 대해 해시 값을 재 계산하여 다른 노드에 이벤트로 전달하는 과정을 통해서 최종 값을 도출해 냅니다. 사용자는 API와 도구를 통해 스트림 데이터를 어떻게 읽을 지, 데이터를 어떤 원칙으로 몇 대의 노드에 분산 시켜서 병렬로 처리할 지, 어떻게 결과 값을 관리할지를 자유롭게 제어할 수 있습니다.

현재 많이 회자되고 있는 주요 오픈소스 분산 스트림 컴퓨팅 프로젝트들은 아래와 같고요. 저의 경우는 이 들 중에서 S4 Strom에 대해 나름 관심을 가지고 다양한 실험을 하고 있습니다.

- 아파치 S4: 야후의 분산 스트림 컴퓨팅 플랫폼, Actor 모델에 기반한 처리 방식

- Akka: S4와 같은 Actor 모델 기반의 Concurrent 컴퓨팅 플랫폼

- Storm: 트위터(Backtype이라는 회사 인수)에서 개발한 분산 실시간 컴퓨팅 플랫폼

- HStreaming: 실시간 처리를 할 수 있도록 아파치 Pig를 확장함

이러한 스트리밍 컴퓨팅 기술과 하둡 맵리듀스 기술을 적절하게 잘 조합해서 사용하면 대규모 비 정형 데이터에 대한 실시간과 배치처리 능력을 모두 갖출 수 있게 되기 때문에 다양한 비즈니.

다음에는 언급한 오픈소스 프로젝트 중에서 Storm에 대해서 좀 더 세부적으로 살펴보고, 예제를 통해Storm의 데이터 처리 방식이 하둡 맵리듀스와 어떻게 다른지 예제를 통해 구체적으로 살펴 보는 시간을 갖도록 하겠습니다.