慧/利

[Hadoop]01 hBase로 구축하는 대규모 분산 데이터 처리 시스템

I T69 U 2010. 3. 4. 18:25

Hadoop, hBase로 구축하는 대규모 분산 데이터 처리 시스템

Google(Technology)기반 소프트웨어의 Open Source Clone을 사용해 보자

 


 

Prologue

 

 본 글은, 구글이 독자개발한 대규모 분산 계산 체제 Framework "Hadoop"과, 그 기술 기반 하에서 구축되는 대규모 분산 데이타베이스 "hBase"의 구조와 간단한 샘플 어플리케이션을 소개하고자 한다.

 

 Hadoop와 hBase는, Google의 기반 소프트웨어의 Open Source Clone 이다.

 

 기능이나 컨셉에 대한 설명은 Google이 발표 공개한 학술 논문을 참조하였다.

 

 구글의 논문에 따르면, Google에서는 대규모 분산 파일 시스템인 "Google File System(이하 GFS)과, 대규모 분산 계산 체제인 "MapReduce", 대규모 분산 데이타베이스 "BigTable", 분산 Lock service "Chubby"라고 하는 4 Part의 인프라 소프트웨어가 사용된다고 한다.

 

 

Google 기반기술                                  OSS 기반기술

 

 

도표1. Google, OSS기반기술의 대응 관계도

 

 

 도표1은 Google 기반기술 간의 의존관계(dependencies), 그리고 거기에 대응하는OSS의 대응 관계를 나타냅니다. 우선은 대응하는 Google 기반기술 각각의 기능이나 특징을 개념적으로 설명하고, 데이터의 대규모 처리를 실시하는데 있어서 각 소프트웨어가 어떠한 역할을 수행하는지 설명하도록 하겠습니다. 그렇게 함으로 해서 대규모 데이터 처리 시스템의 전체상을 잡아 주고자 한다.

 

 여기서 소개하는Google의 독자 개발한 기반기술과 관련하여 Google이 발표 공개한 제 학술논문과 해설서 참조를 적극 추천한다.

 

 

 

 

 

1. Google 기반기술

 

1.1 Google File System

 GFS(Google File System)는, 대용량의 데이터를 무수한 저장모듈의 한계성으로부터 안전하게 보존하기 위한 분산 파일 시스템이다. 분산 파일 시스템이라고 하는 것은, 복수의 저장모듈 디스크를 조합해 1개의 파일 시스템으로서 보여지게 구현하는 기술이다. 단일(1개) 디스크의 용량을 초과하는 거대량의 데이터를 효율적으로 취급하고자 할 때에도 매우 유용한 기술이다.

 

 

 

 

도표2 Google File System의 개념도

 

 

 GFS의 특징으로서는 같은 파일을 다른 저장 디스크에 중복으로 저장하게 하는 것으로, 일부의 저장모듈이 장애를 일으켜도 저장된 파일의 데이터 손실에 유용하게 방비할 수 있는 점을 들 수 있다. 실제 Google에서는 몇 만대의 서버가 상시 가동되고 있며, 하루에도 많은 저장장치가 장애를 일으킨다. 그러한 환경을 극복할 수 있는 대안으로 파일 분산저장 시스템을 적용한다는 것은 어쩌면 거대량 데이터를 취급하는 데 있어서 필요불가결하지 않았을까 한다.

 

 

1.2 MapReduce

 MapReduce란 대규모 데이터를 대량의 저장디스크로 병렬 처리하기 위한 파일분산 계산 Framework이며, 웹 검색을 위한 인덱스 작성 처리나, 로그 해석, 검색성향 학습등의 처리에 이용되고 있다.

 

Map Phase                                 Reduce Phase
(정보의 분해/추출)                           (정보의 집약/계산) 

 

 

도표3. MapReduce 개념도

 

  MapReduce이란 명칭은 데이터처리를 「Map국면」과「Reduce국면」이라고 하는2단계의 국면으로 분할하여 처리한다는 의미를 내포하고 있다. Map국면에서는 대량의 정보를 분해해서 필요한 정보를 뽑아내 출력하며, 추출된 정보를 집약하여 Reduce국면에서는 다양한 분석을 위한 연산작업을 거친 결과를 출력한다. MapReduce의 입출력은 GFS에 의하여 처리된다.

 

 Map, Reduce의 각각의 국면에서는 다른 장비와 통신하는 것이 없기 때문에, 수만대의 저장모듈에 효율적으로 작업 태스크를 분배할 수가 있어 투입장비 대수 에 비례하는 능력으로 데이터를 처리할 수가 있다. 태스크를 분할 할당할 때에는, 데이터를 저장 보존하고 있는 노드 자체에서 데이터 처리를 수행함으로 해서 불필요한 파일의 전송을 막을 수 있다. 또 저장모듈에 이상으로 처리가 중단 되었을 경우도, 다른 저장모듈로 동일 태스크 처리를 자동 할당하여 재 수행하게 하는 등, 데이터 저장에 발생할 수 있는 장애에 대한 대비성이 매우 높다.

 

 

 

1.3 BigTable

 BigTable은 Google File System 기반에서 구축된 Scalable한 분산 데이타베이스이다. Google File System은 거대한 파일을 취급하는데 특화되어 있어서 작은 파일의 대용량 처리에 적합하다고 할 수 없다. 그러나 Web 페이지 등의 정보를 취급하려면, 구조화 된 작은 데이터에 대해서 데이타베이스적으로 액세스 하고 싶다고 하는 요구가 많다. BigTable는 그러한 요구를 충족시키기 위해서 개발된 만큼 분산 데이타베이스이다.

 

 BigTable에서는 대규모 데이터를 보존하기 위해서, 테이블을 복수(이중)의 행으로 구성된 타블렛이라고 하는 단위로 분할한다. 각 타블렛은 다른 서버에 분산 배치되어 데이터 사이즈 증대에 대한 대응과 load sharing이 가능하게 된다.

 

 또 데이터 압축을 이용해 디스크 스페이스를 절약하거나 메모리의 효율성을 높이며, 데이터의 참조나 삽입을 고속으로 수행할 수 있는 것도 특징이다. 데이터 모델링도 행·렬로 취급하는 기존의RDBMS와는 다르다.

 

 

 

1.4 Chubby

 그 밖에도 Google에서는Chubby라고 하는 분산 Lock service가 사용되고 있다. Chubby는 복수(2대 이상)의 장비로 협업 수행시키면서 Lock service를 제공하기 위한 소프트웨어로서 Resource의 배타(운용)제어에 이용된다. Chubby의 open source clone은 아직까지 만들어지지 않았다.

 

 

 

[Hadoop]02 hBase로 구축하는 대규모 분산 데이터 처리 시스템