[hadoop] Hadoop 구조

Hadoop은 분산 컴퓨팅 플랫폼이다. 또한 Hadoop은 수없이 많은 싸구려 하드웨어들을 클러스터로 엮어놓은 시스템에서, 연결된 하드웨어가 몇개 뻗어도 알아서 잘 돌아가야하는(fault-tolerant) 분산파일 시스템(Distributed File System)과 분산된 데이터를 효과적으로 처리(computational)하기위한 패러다임인 구글의 MapReduce를 구현하는 자바 프레임웍이다.

이녀석은 Lucene의 아들프로젝트인 Nutch를 지원하기 위해 개발됐다. 한마디로 Lucene의 손자, Nutch의 아들 프로젝트이며, 주요 기능은 아래와 같다.

Hadoop의 주요 기능

– 분산파일시스템(Hadoop Distributed File System)

– 분산컴퓨팅(MapReduce)

Hadoop은 Google File System의 기본개념을 그대로 구현한다.

Google File System 의 특징

– 싸구려 시스템(일반 PC)들을 수백~수천대 묶어서 사용한다.

– 시스템의 추가/제거가 자유로워야 한다.

– 서비스 중 특정 노드에 장애가 발생하여도 지속적인 서비스 제공이 가능하다.

– 별도의 데이터 백업없이, 파일시스템 내에 replica(원본의 복사본)를 생성한다.

Google File System은 데몬서버인 GFS master와 GFS chunkserver, 이 데몬서버와 통신을 통하여 파일을 처리할 수 있도록 구성된 GFS client로 구성된다.

GFS master는 Hadoop의 name node에 해당하며, 파일의 이름, 크기와 같은 메타데이터를 관리한다. 수 많은 chunkserver와 client가 master에 연결될 수 있기 때문에 GFS master는 control messages만을 송수신한다.

GFS는 수백 MB~ 수 GB 에 해당하는 하나의 파일을 여러개의 파일로 조각내어 chunkserver에 저장한다. 이 파일 조각의 단위를 chunk라 불르며, 설정파일에서 조정이 가능하고 default 값은 64MB 이다. chunk size가 이렇게 큰 이유는 master의 메모리에서 분산된 파일의 inode를 관라하게 되는데, 파일의 갯수가 너무 작아지면 관리해야하는 정보의 양이 엄청나게 늘어나기 때문이다. 대략 1GB의 메모리에 천만개 정도의 파일을 관리할 수 있다고 한다.

또한 chunkserver에 저장시 설정파일에 설정된 값만큼의 복사본을 생성하여 저장한다. 이 복사본의 default 값은 3이다.

GFS client는 GFS master와 GFS chunkserver와의 통신을 통해 파일의 생성, 읽기, 쓰기 등의 작업을 수행하는 역할을 하며, master로부터 받은 control message를 통해 실제 chunkserver의 파일을 송수신 한다. 따라서 master에 부하가 집중되지 않도록 분산시킬 수 있다.

형준님께서 파일처리의 순서를 아래와 같이 정리하셨다.

1. Application은 File System에서 제공하는 API를 이용하여 GFS Client 코드를 생성하여 파일 작업을 요청한다.

2. GFS Client는 GFS master에게 해당 파일에 대한 정보를 요청한다.

3. GFS master는 자신이 관리하는 파일 메타 데이터에서 client에서 요청한 파일의 정보를 전달한다. 이때 전달되는 데이터는 파일의 크기와 같은 정보 뿐만 아니라 조각으로 나누어진 chunk의 수, chunk size, chunk가 저장 chunkserver의 주소 값등을 전달한다.

4. GFS client는 파일 내에서 자신이 처리해야 하는 위치가 저장되어 있는 chunk를 계산하여 해당 chunk가 저장되어 있는 chunkserver로 접속한 후 파일 처리를 요청한다.

5. GFS chunkserver는 실제 파일에 대한 처리를 수행한다.

소개는 아래 Reference에 적혀 있는 주소에서 더 자세한 정보를 얻을 수 있으므로, 여기서는 김형준님의 글을 요약하는 정도에서 마친다.

Reference :

http://wiki.apache.org/nutch/NutchHadoopTutorial

김형준님 블로그

서진우

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.