티스토리 뷰


Cloudera Impala 소개

Cloudera Impala는 SQL 형태로 Hadoop의 데이터를 이용해 실시간으로 분석할 수 있는 시스템이다. 



이것은 MapReduce 프레임워크를 사용할 때, 배치 처리로 인한 지연이 발생하는 것을 최적화 한 것이다. 

구글에서도 2006년부터 기존의 GFS와 MapReduce에 실시간 처리가 가능한 Dremel을 본격적으로 활용하고 있다. 


Apache Hadoop의 HDFS와 MapReduce가 구글의 GFS, MapReduce 논문을 기반으로 만들어진 것처럼, 

Cloudera Impala도 2010년 발표된 구글의 Dremel 논문을 기반으로 하고 있다. 

다만, SQL과 유사한 형태를 하둡에서 활용하기 위해 Hive의 쿼리 방식의 인터페이스를 가져왔다. 


하둡을 Cloudera의 CDH 배포판을 사용할 경우, 쉽게 impala를 설치해서 테스트해 볼 수 있다는 장점도 있다. 

물론 직접 impala를 개별적으로 설치할 수도 있다. 단, Hive QL을 기반으로 하기 때문에 Hive를 먼저 설치한 후, Impala를 세팅해야 한다. 


실시간 분석이 가능한 Impala

그렇다면 Hive도 있는데 왜 Impala를 주목해야 할까?

Hive는 내부적으로 MapReduce로 변환해서 분석을 수행하고 결과를 가져오게 되어있지만,  

Cloudera Impala는 Dremel을 참조하여 구성된 고유의 분산 쿼리 엔진을 사용한다. 


그로 인해 Cloudera Impala는 Hive와 비교하여 동일 데이터에 대한 응답 시간에 큰 차이가 있다. 


일반적으로 Cloudera Impala를 실시간 기술(Real-Time in Data Analytics)이라고 한다. 

과연 어떤 경우를 실시간이라고 할까? 

최근 거의 실시간에 가깝다고 하는 Near Real Time도 Real-Time 기술로 이야기 하기도 한다. 


하둡을 만든 유명한 더그 커팅(Doug Cutting)은 다음과 같이 이야기 했다. 


It's when you sit and wait for it to finish, as opposed to going for a cup of coffee or even letting it run overnight. That's real time. 

Real-time in data analytics is better framed as waiting less. 


즉, 기다리지 않고 결과를 앉아서 얻을 수 있다면 실시간이라 할 수 있다는 것이다. 


Impala 아키텍처

Cloudera Impala 아키텍처는 다음과 같이 Impala Daemon, Statestore, 실행 모델(execution model)을 포함하고 있다. 



다른 분산 시스템들은 데이터를 처리하기 전에 네트워크 상에서 데이터를 이동시키지만, 

Cloudera Impala는 데이터가 저장된 위치에서 프로세스를 처리하기 때문에 다른 시스템보다 빠르게 수행된다. 


Cloudera Impala는 익숙한 SQL 형식으로 아주 빠른 데이터 처리를 원하는 사람들을 위해 설계된 것이다. 

또한 하둡 기반으로 동작할 수 있도록 별도의 MPP(Massive Parallel Processing) 쿼리 엔진을 제공한다. 

이 쿼리 엔진을 통해 하둡에 저장된 다양한 포맷의 데이터를 분석하여 원하는 결과를 실시간으로 가져올 수 있다. 

하둡 기반으로 동작하므로 Hadoop Core Component, HDFS, Hive, 그리고 HBase까지 모두 지원한다. 


마치면서

최근 필자도 Cloudera의 CDH를 활용하여 HBase, Hadoop으로 프로젝트를 진행했다. 

기존 MapReduce를 활용하여 주요 기능을 처리하고 있었는데, 

다양한 기능 제공을 위해 Cloudera Impala와 같은 실시간 기술의 도입을 검토해 보고 있다. 


Real-Time이 강조되면서 구글 Dremel 논문을 기반으로 한 Cloudera Impala와 Apache Tez, Facebook의 Presto와 같은 기술과 

스트리밍 처리를 기반으로 한 Twitter의 Storm, Apache Spark가 각광받는 것 같다. 

Hadoop Eco System의 기계학습 도구로 유명한 Mahout도 기존 MapReduce 기반에서 Spark 기반의 실시간 처리로 업데이트 중이라고 한다. 


무조건 실시간 분석이 좋은 것은 아니다. 경우에 따라 배치 처리가 더 나을 수도 있다. 

즉, 분석의 필요성과 목적에 따라 실시간 또는 배치 처리를 해야 한다. 


어쨌든 실시간 분석을 할 수 있는 기술들 중 살아남은 것은 향후 배치 처리의 표준이 된 Hadoop과 함께 성장해 나갈 것이다. 


댓글
댓글쓰기 폼