2005년 더그 커팅과 마이크 카파렐라에 의해 개발된 하둡(Hadoop, High-Availability Distributed Object-Oriented Platform)은 대량의 자료를 처리할 수 있는 클러스터 컴퓨터 환경에서 동작하는 분산 응용 프로그램을 지원하는 프레임워크입니다하둡에 대해서 간단히 말하자면방대한 양의 데이터를 분산 처리하여 빠른 시간 내 결과를 제공하는 오픈소스 기반 데이터 처리 기술입니다.

 

하둡의 탄생은 구글(Google)이 대규모 자료를 검색하고 분석하는데 사용한 구글 파일 시스템(GFS, Google File System)과 맵-리듀스(Map-Reduce)에 대한 논문을 접하고 이를 참고하여 구현하였습니다. ‘하둡’ 이란 명칭은 더그 커팅의 아들이 가지고 놀던 장난감 코끼리의 이름을 따서 지어졌다고 전해집니다.


[ 하둡의 심볼 ]



지금까지의 데이터 분석 기술은 대부분 컴퓨터 한대로 메모리파일시스템데이터베이스에 데이터를 저장하고이를 기반으로 데이터를 분석하는 구조였는데 하둡이 보급되면서 저가의 x86 컴퓨터들을 이용하여 대규모 데이터를 저장하고 분석할 수 있는 길이 열린것입니다.

 

 

하둡 에코 시스템 1.0

아래의 그림은 하둡 초기 버전인 하둡 에코 시스템 1.0에 대한 전체 구성도입니다하둡 에코 시스템 1.0에 대해서 간략하게 설명을 드리겠습니다.

 

[ 하둡 에코 시스템 1.0 ]

 

 

데이터 수집 기술

하둡에서 데이터 수집을 담당하는 기술로는 아파치의 스쿱(Apache’s Sqoop), 클라우데라의 플룸(Cloudera’s Flume), 아파치의 척와(Apache’s Chukwa)등이 있으며하둡에서 제공하는 데이터 수집 기술은 아니지만,  페이스북에서 만들어서 사용하고 있는 스크라이브(Facebook’s Scribe)등이 있습니다.

 

대용량 데이터는 정형데이터와 비정형데이터 두가지 형태로 분류할 수 있습니다정형데이터는 저장된 형태가 규칙적인 데이터를 말하며비정형 데이터는 저장된 형태가 규칙적이지 않는 데이터를 말합니다정형데이터는 기업이나 공공기관에서 관리하고 있는 관계형 데이터베이스(RDB, Relational Database)를 말하며비정형데이터는 트위터(Twitter), 페이스북(Facebook)과 같은 소셜 네트워크 서비스(SNS, Social Network Service)에서 만들어지는 데이터를 말합니다.

 

정형데이터를 수집하는 기술로는 스쿱(Sqoop)이 있으며비정형데이터를 수집하는 기술로는 클라우데라(Cloudera)의 플룸(Flume)과 아파치(Apache) 척화(Chukwa)등이 있으며페이스북에서 사용하는 스크라이브(Scribe)도 비정형데이터 수집 기술입니다.

 

 

데이터 저장 및 관리 기술

하둡에서 핵심 코어에 속하는 기술로는 데이터를 저장하는 하둡 분산 파일 시스템(HDFS, Hadoop Distributed File System)과 저장된 데이터를 관리하는 맵-리듀스(Map-Reduce)등이 있습니다하둡 분산 파일 시스템(HDFS)은 대용량 파일을 지리적으로 분산되어 있는 수많은 서버에 저장하는 솔루션이며-리듀스는 분산되어 저장된 대용량 데이터를 병렬로 처리하는 솔루션입니다.

 

초기에 설계된 하둡 에코 시스템 1.0의 경우 배치 처리(Batch processing)를 목적으로 만들어진 시스템으로 맵과 리듀스간의 셔플링(Shuffling) 작업에 많은 시간을 허비하여 실시간 분석에 적합하지 않으며기존에 사용하고 있거나 새로 만들어진 솔루션을 확장하여 적용하는데 문제점을 가지고 있었습니다.

 

이러한 하둡 에코 시스템 1.0의 문제점은 관계형 데이터베이스 분석 시스템에 익숙한 많은 분석가들과 사용자들을 하둡으로 끌어들이는데 실패하는 원인이 되었으며이러한 문제점를 해결하기 위해서 하둡 에코 시스템 2.0에서는 -리듀스(Map-Reduce)를 버리고 YARN(Yet Another Resource Negotiator)을 채택하여 확장성과 데이터 처리 속도를 개선시켰습니다.


하둡 에코 시스템 1.0 과 2.0 변경 사항 ]


분산 데이터베이스 H베이스(HBase)

하둡에서 제공하는 NoSQL(Not Only SQL) 데이터베이스입니다. H베이스는 자바 언어로 만들어졌으며, 하둡 분산 파일 시스템(HDFS)를 이용하여 분산된 컴퓨터에 데이터를 저장합니다. H베이스는 압축 기능과 자주 사용되는 데이터를 미리 메모리에 캐싱하는 인-메모리(In-Memory) 기술을 사용하여 데이터 검색 속도를 높입니다

 

하둡에서 사용하는 데이터베이스는 관계형 데이터베이스가 아닌 NoSQL(Not Only SQL) 입니다. 관계형 데이터베이스는 대용량 데이터를 처리하기 위해서 만들어진 시스템이 아니며, 국가나 회사에서 관리하는 정보 자원을 저장하고, 사용자가 손쉽게 SQL언어를 사용하여 저장된 정보를 다양한 방법으로 분석해 주는 시스템입니다. 현재도 많은 분석가들과 사용자들이 관계형 데이터베이스를 사용하고 있는데, 이러한 이유로는 관계형 데이터베이스를 통하여 정보(Information)를 다양한 도구를 사용하여 여러가지 측면에서 분석이 가능하며, 또한 결과를 실시간으로 조회할 수 있기 때문입니다.

 

NoSQL(Not Only SQL)은 대용량 데이터를 처리하기 위해서 탄생된 데이터베이스입니다. 대용량 데이터를 저장하고 처리하기 위해서는 지리적으로 분산되어 있는 노드들에 대한 안정적인 관리가 필요하며, 속도보다는 데이터를 손실하지 않고 저장하는 방법과 더 많은 데이터를 처리하기 위해서 노드들을 쉽게 확장할 수 있는 방법에 중점을 두고 설계가 되었습니다. 이로 인하여 현장에서 데이터베이스를 운영하고 관리하는 분석가들과 사용자들이 원하는 빠른 속도와 쉬운 분석 방법 제공 그리고 관계형 데이터베이스에서 사용하고 손에 익었던 도구들을 그대로 사용하고 싶은 욕구를 충족시키지 못하는 문제점을 가지고 있습니다.

 

NoSQL(Not Only SQL) 데이터베이스에는 다양한 제품들이 있으며, 이 제품들을 특성에 맞게 'Key-Value store', 'Graph Database', 'Document Store', 'Wide Column Store' 4개의 제품군으로 군집화 시킬수 있습니다. 


'Key-Value store' 제품군으로는 멤캐시드(Mem-Cached)와 레디스(Redis, Remote Dictionary Server)등이 있으며, 키-밸류 형태로 이루어진 비교적 단순한 데이터 타입을 데이터베이스에 저장합니다. 'Graph Database' 제품에는 네오포제이(Neo4j)가 있으며, 그래프 모델에서 필요한 정점(Vertex)와 간선(Edge) 그리고 속성(Property)등과 같은 정보를 데이터베이스에 저장합니다. 'Document Store' 제품군에는 카우치DB와 몽고DB가 있으며, 문서 형태의 정보를 JSON 형식으로 데이터베이스에 저장합니다. 마지막으로 'Wide Colum Store' 제품군에는 H베이스(HBase)와 카산드라(Cassandra)가 있으며, 컬럼안에 여러 정보들을 JSON 형태로 저장할 수 있습니다.

 

하둡 진영에서는 관계형 데이터베이스에 호감을 가지고 있는 분석가와 사용자들의 마음을 돌리기 위해서, 빠른 속도와 손 쉬운 사용 그리고 관계형 데이터베이스에서 사용하던 도구들을 이용할 수 있는 시스템을 만들기 위해서 노력하고 있습니다. 우리는 이러한 데이터베이스 제품들을 'NewSQL'이라고 부르고 있으며, 여기에는 그루터(Gruter)의 타조(Tajo), 구글의 드레멜(Dremel), 호튼웍스의 스팅어(Stinger), 클라우데라의 임팔라(Impala)등이 있습니다. 

 

 

하이브(Hive)

아파치의 하이브(Hive)는 ‘SQL 온 하둡(SQL On Hadoop)’ 시스템입니다. 'SQL 온 하둡'은 하둡에서 SQL 언어를 사용하여 편리하게 정보를 조회(Query)하는 방법을 제공합니다. 하둡은 하이브(Hive)가 없었던 시절에는 맵-리듀스(Map-Reduce) 언어를 사용하여 하둡 분산 파일 시스템(HDFS)에 저장된 정보들을 조회(Query) 했습니다. 프로그램을 모르는 일반 사용자들이 맵-리듀스 언어를 사용하여 조회(Query)하는 일이 어려웠습니다. 하이브는 하이브큐엘(HiveQL)이라는SQL과 거의 유사한 언어를 사용하여 일반 사용자들이 쉽게 데이터를 조회(Query)할 수 있도록 지원합니다. 

 

하지만 하이브에도 몇가지 단점이 있습니다. 하이브큐엘(HiveQL)을 통해서 조회(Query)를 실행하면 내부적으로 맵-리듀스 언어로 변환하는 작업을 거칩니다. -리듀스는 맵과 리듀스간의 셔플링 작업으로 인하여 속도가 느리다는 단점이 있습니다. 하이브큐엘(HiveQL) 일반 사용자들에게 손쉽게 조회(Query)할 수 있는 방법을 제공하고 있지만 처리 속도가 느리다는 문제점은 여전히 가지고 있습니다. 또한 하이브큐엘(HiveQL) 언어는 SQL과 비슷한 언어이지만 표준 SQL(Ansi SQL)의 규칙을 준수하지 않으며, 사용자들은 이러한 차이점을 다시 배워야하는 문제점을 가지고 있습니다.   

 

 

SQL 온 하둡(SQL On Hadoop)

하이브가 가지고 있는 문제점을 개선하기 위한 하둡 진영은 크게 두 갈래로 나뉩니다. "하이브를 완전히 대체하는 새 기술을 쓸 것인가?" 아니면 "하이브를 개선해 속도를 높일 것인가?"

 

하이브를 살려야 한다는 입장을 가장 강력하게 내세운 회사는 호튼웍스입니다호튼웍스는 하이브를 최적화하고 파일 포맷 작업을 통해 하이브 쿼리 속도를 100배 끌어올리겠다는 비젼을 내 놓았습니다이것이 바로 스팅어(Stinger)입니다.

 

하이브를 버리고 새로운 엔진을 찾아야 한다는 진영은 그루터의 타조와 클라우데라의 임팔라가 있습니다타조는 하이브를 개선하는데 한계가 명확하기 때문에 대용량 SQL 쿼리 분석에 적합하지 않다는 입장이며기획 단계부터 하이브를 대체하는 새로운 엔진을 개발하고 있습니다.

 

클라우데라의 임팔라는 좀 특이한 경우인데일정 규모 이상의 데이터는 임팔라로 분석이 불가능합니다임팔라는 메모리 기반 처리 엔진이어서일정 용량 이상에서는 디스크 환경의 하이브를 사용해야 합니다하지만 전체 틀에서는 하이브를 버리는 쪽으로 무게를 두고 있습니다.


[ 임팔라 스택 ]



대표적인 Hadoop 솔루션 업체로는 클라우데라(Cloudera)와 호튼웍스(Hotonworks)가 있습니다클라우데라는 빅데이터와 클라우드시장의 고육 및 기술지원을 제공하고 있으며호튼웍스는 하둡 코어기술과 아키텍처 개선을 담당하고 있습니다, IBM은 아파치 하둡 (Apache Hadoop)을 기반으로 자신들의 Basic, Enterprise 배포판을 가지고 있고오라클(Oracle)은 자신들의 하드웨어에 클라우데라를 결합한 하둡 어플라이언스(Hadoop Appliance)를 제공하고 있습니다.

+ Recent posts