1. 시작

NoSQL에 대해서는 딱히 아는 바도 없고 관심도 없지만 그래도 한 번 이야기를 시작해 보려 한다.


2.  Hadoop

내가 주제로 잡은 것은 Hadoop이다. 이제까지 Hadoop 이란 단어를 들어본 적은 있지만 사실 전혀 아는 바가 없고, 그 실체를 이제야 벗겨보려 한다.

먼저 Hadoop의 의미.

Hadoop의 창시자인 더그 커팅의 아들이 노란 코끼리 봉제 인형에 붙여준 이름이 바로 Hadoop이다.

따라서 특별히 큰 의미는 없다고 한다.

현재 코끼리는 빅 데이터의 상징이 되고 있다.

Hadoop - High Availability Distributed Object Oriented Platform 이라는 멋진 뜻이 있는데 물론 훗날 의미를 맞춘 것이라고 한다.

위에서 더그 커팅이라는 창시자를 언급하였는데, 정확히는 더그 커팅과 마이크 캐퍼펠라가 2005년 개발한 것이다.

당시 더그 커팅은 야후에서 근무하고 있었고 아파치 루씬을 만들기도 한 사람이다.

언제인가 구글의 분산 파일 시스템 (GFS) 논문이 공개되었는데, 그에 대응하기 위하여 Hadoop이 개발되었다.

그리고 현재는 아파치 재단에서 오픈 소프트웨어로 개발되고 있다. 한마디로 말하면 GFS에 대응하는 오픈 소스 자바 소프트웨어 프레임워크이다.

대용량의 데이터를 맵-리듀스라는 병렬처리 프레임워크를 이용하여 처리함으로써 빅데이터 분석이 가능하게 하는 오픈 소스 플랫폼이다.


3. 활용

구글, 야후, 페북, 이베이 등 우리가 잘 아는 회사들이 많이 사용을 하고 있으며, IBM, MS, Oracle 등의 유명 IT 기업이 여러 제품에 Hadoop을 포함시키고 있다.

페북 같은 경우는 약 30pb 정도를 Hadoop 에 저장하고 있는데 미국 국회도서관에 저장되어 있는 데이터의 3배에 이르는 크기이다. 참고로 1PB (Peta Byte)는 1024TB (Tera Byte)이다. 엄청난 양이다.

한국에서는 SK에서 Hadoop을 도입했다고 알려져 있다.


4. 정의

Hadoop의 공식적인 정의는 "대량의 자료를 처리할 수 있는 큰 컴퓨터 클러스터에서 동작하는 분산 응용 프로그램을 지원하는 프리웨어 자바 소프트웨어 프레임워크이다" 라고 위키백과 한글판에 나와 있다.

즉 대량 데이터를 손쉽고 빠르게 분석하게 해준다.

과거에 수퍼컴퓨터로 며칠간 돌려야 했던 작업도 이제는 Hadoop + x86 으로 실시간 분석이 가능해졌다고 한다. 물론 x86 장비 한 대는 아닐 것이다. 수천 대를 묶기도 한다니까..


5. 비교

기존 RDB (Oracle 등) 와 비교를 해본다면,

  • RDB : 정형화되어 있는 데이터
  • Hadoop : 비정형화, 즉 구조화 되어 있지 않은 Text, Image, File 등

분명히 Hadoop의 단점도 있다.

맵-리듀스 방식이기 때문에 중간 데이터 전송 단계에서 많은 I/O와 트래픽을 유발할 가능성이 있다.

또 데이터 프로세싱 반복작업이 많은 반복 연산 처리에 비효율적이다.


6. Map Reduce

6-1. 1.0

  • 빅데이터 일괄 처리 지원 프로그래밍 모델 및 분산 병령 데이터 처리 방법
  • Key, value 형태로 데이터 표현, 2단계 프로세싱 구조

6-2. 2.0

  • 맵 리듀스 프레임워크 분리와 자원관리 담당 (작업일정관리, 모니터링, 자원관리)

7. HDFS 

추가적으로 HDFS(Hadoop Distributed File System)이 있는데, 이는 Hadoop을 위해 자바로 개발된 분산 파일 시스템이다.

데이터를 알아서 복수의 서버에 중복 저장을 하기 때문에 (=데이터 분산 저장 지원) 별도의 레이드 구성은 필요치 않다.

구조적으로는 마스터-슬레이브 구조를 가진다.

하나의 클러스터는 1개의 네임 노드, 그리고 파일 시스템을 관리하고 클라이언트의 접근을 통제하는 마스터 서버로 구성된다.

또 데이터 저장소와 계산 로직이 분리되어 있어 일괄처리에 최적화되어 있다.


8. 마치며

정말 Hadoop이 무엇인가의 기초 정도를 언급했다.

기회가 닿으면 좀 더 깊이 있게 확인해 보겠다.