데이터이야기

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

실시간 오픈소스에는 어떤 것이 있는가 (2)

데이터 이야기
작성자
dataonair
작성일
2015-08-26 00:00
조회
5059


한국 스파크 사용자 모임 운영자 이상훈이 말하는 빅데이터 실시간 처리와 분석

[빅데이터 실시간 처리와 분석] 실시간 오픈소스에는 어떤 것이 있는가 (2)



지난시간에 ‘오픈소스’에 대해서 알아보았고 이제 ‘실시간’에 대해서 이야기하도록 하겠습니다. 여러 번 말씀드리지만 실무에서도 빅데이터라는 단어의 기준이 모호할 때가 있고, 여기에 실시간이라는 단어가 들어가면 더 기준이 모호해집니다. 그래서 사람마다 나누는 기준이 다르고 측정방법도 정해져 있지 않기 때문에 정확하게 나눌 수는 없지만 Strata + Hadoop world라는 컨퍼런스에서 발표했던 Srinath Perera의 기준을 ‘재해석’해서 소개하도록 하겠습니다. (그림을 이용할 뿐 내용은 상당수 다릅니다.) 이 자료는 올해 열린 가장 큰 빅데이터 컨퍼런스중에 하나이기도 하고 제가 예전에 썼던 원고와도 비슷한 점이 있어서 선정하였습니다.

dbin_425.jpg

그림. 실시간 처리/분석 분류 (출처: 2015 Strata + Hadoop world, Srinath Perera)

위 그림은 크게 MapReduce 영역과 실시간 영역으로 나뉘어 있습니다. 개인적으로 MapReduce라는 단어보다는 배치(Batch)라는 단어가 더 어울리는 것 같습니다. 초록색, 보라색 그리고 회색이 양쪽 영역 일부에 속해있는데 MapReduce 방식을 채용하지 않고 있는 기술도 있기 때문입니다.

빅데이터에서 말하는 배치영역에서 가장 일반적인 오픈소스에는 MapReduce가 있습니다. MapReduce는 이미 너무나 유명해진 단어이기 때문에 자세한 설명은 하지 않도록 하겠습니다. 배치영역은 그림과 같이 작은 데이터부터 큰 데이터까지 처리하며 소요시간은 1분 내 혹은 수 일이 소요되기도 합니다. 또한 이 영역은 배치영역이기 때문에 처리하기 위한 로그들이 정해져 있어야 하고 그렇기 때문에 지난 시간에 말씀드린대로 여러 가지 한계가 있어서 실시간 처리/분석이 필요합니다. (물론 실시간 영역에도 많은 어려움이 있습니다. 차후 연재를 통해 다루겠습니다.)

실시간 영역은 아래와 같이 나눌 수 있습니다.



1. In-Memory Processing

현업에서 초기에 빅데이터를 도입할 때 중시되었던 내용은 얼마나 많은 데이터를 수집/저장/처리/분석 할 수 있느냐 였습니다. 최근에는 대용량 수집/저장/처리/분석은 당연해지고 있고 얼마나 빠르게 할 수 있느냐가 중요해지고 있습니다. 그래서 병목지점인 하드디스크 대신 메모리를 활용하는 인메모리 프로세싱이 주목을 받고 있습니다. 사실 메모리 활용은 거의 모든 곳에서 쓰고 있기 때문에 명확히 이 오픈소스는 인 메모리 영역이라고 말하기 어려운 측면은 있습니다. 최근에 대두되고 있는 오픈소스들의 많은 수는 메모리를 최대한 활용합니다.



2. Interactive Processing

대부분 SQL와 유사한 형태 또는 스크립트 형식의 명령을 통해서 질의를 할 수 있고 배치보다 상대적으로 빠른 응답속도를 가집니다. 이것을 다르게 해석하면 컴파일, 배포 과정이 필요 없으며 즉각적인 응답을 받을 수 있다는 것으로, 중간 이하 사이즈의 데이터를 대상으로 데이터 탐색과정에 많이 활용됩니다. 또한 SQL 형식을 이용할 수 있다는 것은 기존 DW를 쉽게 전환 할 수 있고 대용량의 데이터를 빠르게 처리할 수 있다는 장점을 가질 수 있기 때문에 이것을 이용하여 빅데이터용 DW를 구축하기도 합니다.



3. Indexed Storage

일반적으로 key-value 형식으로 저장되어 조회할 수 있는 형태인데 이 부분은 그림과 다르게 설명해야 하는 부분이 많아서 이후에 설명하도록 하겠습니다.



4. Streaming Processing

대부분 실시간 처리라고 한다면 이 영역을 가르키는 경우가 많습니다. 경우에 따라서는 이 영역만 실시간 영역으로 보기도 합니다. 로그를 실시간으로 받아서 고정된 파일 형태가 아닌 스트리밍 형태로 바로 처리하는 영역입니다. 데이터를 실시간으로 받는 다는 것은 시스템은 항상 로그를 받을 준비가 되어 있어야 한다는 것이고 일반적으로 데이터가 끊임 없이 들어옵니다. 그렇기 때문에 시스템이 장애가 나면 끊임 없이 들어오는 데이터가 유실되므로 이에 대한 대책도 필요하고, 데이터가 고정되어 있지 않기 때문에 기존의 알고리즘을 바로 적용하기에 어려운 부분이 있습니다.

지금까지 오픈소스란 무엇 인지와 실시간 영역에 대한 설명을 드렸습니다. 눈치채셨을지 모르겠지만 위에서 말한 방법들은 이미 데이터가 어딘가에 저장되어 있거나 지속적으로 들어오는 것을 가정하고 있습니다. 또한 실제로 데이터를 분석하기 위해서는 데이터 수집부터 고려해야하고 최종 사용자에게 분석 결과도 전달해주어야 합니다. 그러기 위해서는 아래와 같이 여러 가지 오픈소스가 활용되어야 합니다. 위에서 언급한 실시간 영역에 대한 설명은 Real Time Processing과 Storage 일부에 해당합니다.

dbin_426.jpg

그림. 실시간 처리/분석 에코시스템 (출처: 호튼웍스 공식 홈페이지)

그러나 모든 오픈소스를 다루기에는 지면상의 한계가 있고 다음 시간부터 Real Time Processing을 위주로 자세히 설명 드리고 나머지 영역은 연동에 필요한 부분만 간단히 설명 드리도록 하겠습니다.



출처 : 한국데이터베이스진흥원

제공 : 데이터 전문가 지식포털 DBguide.net