데이터이야기

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

빅데이터 플랫폼 아키텍처의 두 가지

데이터 이야기
작성자
dataonair
작성일
2014-09-30 00:00
조회
10492


이전 글에 "빅데이터 분석의 또 다른 패러다임 - 실시간(Real-time)"에서 비교했던,
두 가지, Hadoop 기반의 배치(Batch)처리와 CEP 아키텍처 기반의 실시간(Real-time)처리에 대해 전반적인 Eco-System을
설명하고자 한다.

Hadoop Eco-system 기반의 Batch(배치)처리 아키텍처 일반


빅데이터 처리 플랫폼의 대명사는 Hadoop Eco-System이다. Hadoop Eco-System의 구성요소는 아주 다양하지만, 각 Layer별 대표적인 것만 나열하면 아래와 같다.
Log Collector : 로그 이벤트 수집기 Layer로 가장 많이 사용되는 것은 Apache Flume 이다.
DB Collector : DB에 저장된 데이터를 간편하기 수집하기 위한 Apache Sqoop (Sql-to-Hadoop)이다.
Message Queue : 로그,이벤트 내용을 Data Store에 넣기 전에 임시로 저장할 경우 사용하며,
파일기반 분산 메시징 큐 Apache Kafka가 대표적이다.

Data Store : 분산 파일 시스템인 Apache Hadoop - HDFS
Data Analysis : 데이터 분석을 위한 Apache Pig, Hive, Map/Reduce. 이 세가지는 M/R기반이라 속도가 느리다.
따라서, 좀 더 빠른 분석을 원한다면 Facebook Presto, Apache Spark 그리고, 국산 그루터 Tajo 등이 있다.
Hive와 Preso 간략 비교하자면, 간단한 count의 경우 20배이상, 복잡 query의 경우도 5-10배 정도로 Presto가 빠르다.

Workflow : Job 제어를 위한 Workflow는 Apache Oozie, LinkedIn의 Azkaban 등이 있다.

배치 처리,분석을 위한 Hadoop Eco-System의 여러 요소의 조합으로 가능하다. 그 중 많이 활용하는 조합, 사례는 아래와 같다.
dbin_322.jpg


- 로그 수집을 위한 Flume, RDB상의 Meta 데이터 또는 로그 DB 수집을 위한 Sqoop
- 로그,이벤트를 임시 저장하기 위한 메시징 큐로써 Kafka
- 데이터 저장소로써 HDFS
- 데이터 분석을 위한 Hive, R, Mahout
- 이렇게 저장,분석된 결과는 다시 RDBMS나 API 형태로 서비스


CEP 아키텍처 기반의 Real-time(실시간)처리 아키텍처 일반


위와 같은 배치처리가 아니 수초 미만 또는 1초 미만의 실시간 처리가 필요할 경우에 대표적인 아키텍처가 CEP(Complex Event Processing)이다.
즉, 데이터가 수집되는 즉시, 실시간 전처리, 실시간 계산, 실시간 패턴분석을 처리를 해야한다.
각 Layer별로 대표적인 것만 나열하면 아래와 같다.
Log Collector : 이벤트를 실시간으로 수집하기 위해 Thrift 등 TCP기반으로 수집하기 위해 Apache Flume이 적당하다.
Message Queue : 이벤트를 임시로 저장하기 위해 Apache Kafka를 사용한다.
Real-time Pre-Processing : 실시간으로 전처리가 필요할 경우, Real-time Hadoop이라 불리는
Twitter에서 만든 Apache Storm이 매우 효과적이다.

Real-time Computing : 실시간 계산 및 실시간 패턴 분석을 위해 대표적인 CEP 엔진인 Esper가 많이 사용된다.
상용의 솔루션도 사용하고 있는 제품이다.

*) Batch에서 사용하던 일부 수집, 메시징 큐의 경우 실시간에도 적당한 아키텍처를 가지고 있다

실시간 처리,분석을 위한 Flow를 정리하면 아래와 같다.
dbin_323.jpg
- 이벤트 수집을 위한 Flume, 앞서 Flume을 소개하는 글에서와 같이 Thrift 등 방식을 통해 실시간 수집이 가능하다.
- 수집된 이벤트에서 Sorting, Cleansing 등 실시간 전처리가 필요한 경우를 위해 Storm을 통해 처리한다.
- 잘 정리된 대용량 이벤트에서 실시간 통계, 계산, 패턴 매칭 등의 처리를 위해 CEP 대표 엔진인 Esper가 아주 우수하다.
Esper의 경우 1/1000초 미만의 Computing 속도와 SQLike 한 문장(EPL)을 통해 쉽게 진입할 수 있으며,
결과는 다양한 형태로 제공이 가능하다.
대용량의 이벤트를 실시간으로 처리하기 위해 Storm, Esper의 조합이 아주 유용하다.


Reference


Flume : a distributed, reliable, and available service for efficiently collecting, aggregating,
and moving large amounts of log data. http://flume.apache.org/

Sqoop : a tool designed for efficiently transferring bulk data between Apache Hadoop and
structured datastores such as relational databases. http://sqoop.apache.org/

Kafka : A high-throughput distributed messaging system. http://kafka.apache.org/
Hive : data warehouse software facilitates querying and managing large datasets residing
in distributed storage. http://hive.apache.org/

Mahout : Scalable machine learning and data mining. http://mahout.apache.org/
R : a free software environment for statistical computing and graphics. http://www.r-project.org/
Hadoop : a framework that allows for the distributed processing of large data sets
across clusters of computers using simple programming models. http://hadoop.apache.org/

Storm : a distributed and fault-tolerant realtime computation system. http://storm.apache.org/
Esper : Event Series Intelligence. http://www.espertech.com/
Presto : Distributed SQL Query Engine for Big Data http://prestodb.io/
Spark : Lightning-Fast Cluster Computing. http://spark.apache.org/