정보공간_1

[2기 강북 이도광] Hadoop Introduction & Architecture 본문

IT 놀이터/Elite Member Tech & Talk

[2기 강북 이도광] Hadoop Introduction & Architecture

알 수 없는 사용자 2012. 10. 25. 13:53


  • Hadoop?

Hadoop은 텍스트 검색 라이브러리로 폭넓게 사용되고 있는 Apache Luecene의 창시자인 더그 커팅에 의해 시작되었다. Hadoop은 오픈소스 웹 검색엔진인 Apache Nutch에서 탄생하였고, Luecene 프로젝트의 일부였다.

이후 2003년에 구글 제품에 활용중이던 GFS(Google File System)라는 구글 분산 파일 시스템의 아키텍처가 기술되어 논문으로 출판되었고

http://www.cs.brown.edu/courses/cs295-11/2006/gfs.pdf ) // Google File System 논문

이후 GFS가 높은 명성은 얻고있던 중 GFS를 모티브로, 더그 커팅이 주축이 되어 Apache 진영의 hadoop이 메인 프로젝트로 승격되면서 Hadoop이 각광받게 되었다.

http://hadoop.apache.org/ ) // hadoop.org 공식 사이트

Cloud computing이라는 거대한 인프라속에서 발생되거나 처리해야 하는 데이터의 양은 기하급수적으로 올라가게 된다. 결국, 빅 데이터를 병렬-분산으로 처리해야 할 필요성이 대두 되었고 Hadoop이 이에 적절한 위치에서 조명받게 된다.

현재 Yahoo, NHN, Facebook 등 많은 기업에서 하둡을 사용중인것으로 알려져 있으며 상당수 데이터 분석 기업들이 하둡을 기반으로 플랫폼을 구축하고 있다.

결국, Hadoop은 대용량 데이터 분산 처리를 지원하는 FrameWork이다.

 

  • Hadoop의 주요 구성 요소

 

Hadoop은 분산 파일 시스템인 HDFS(Hadoop Distributed File System)와 분산 처리 시스템인 MapReduce로 구성되어 있다. HDFS와 MapReduce는 Master/Slave 구조이며 HDFS에서 Master는 Namenode, Slave는 Data node라고 부르며 MapReduce에서는 각각 JobTracker, TaskTracker라고 부른다.

HDFS에서는 Master인 Name node가 파일의 메타 정보를 관리하고 실제 데이터는 여러 대의 Data node에 분산해서 저장한다. 이때, 데이터는 일정 크기(default 64MB)의 블록단위로 나뉘어 관리되며 이 블록들을 여러 대의 Data node에 분산 및 복제해서 저장한다.

이렇게 하는 이유는 일부 Data node에 장애가 발생하더라도 전체 시스템에서 데이터를 읽고 쓰는데 문제가 없도록 하기 위함이다.
MapReduce는 이렇게 HDFS에 분산 저장된 데이터를 여러 대의 TaskTracker에서 병렬로 처리함으로써 대용량의 데이터를 빠르게 처리하고자 만들어진 시스템이다. 특히 MapReduce는 JobTracker에서 TaskTracker의 상태 및 전체 작업의 진행 상황 등을 지속적으로 감시하며 임시적인 장애에 대해서 자동으로 복구하는 기능을 제공하기 때문에 일부 TaskTracker 장비에 문제가 발생하더라도 전체 작업이 짂행되는데 문제가 없도록 설계되어 있다. 또한 JobTracker가 여러 대의 TaskTracker에게 자동으로 작업을 할당하고 결과를 통합해 주기 때문에 사용자는 전체 작업 흐름 및 세부 사항에 크게 싞경쓰지 않고 데이터 처리 로직에만 집중할수 있다.

  • 결 론

Hadoop에 대한 전반적인 메카니즘이나 세세한 아키텍처를 설명하기에는 상당한 시간이 걸리기 때문에 이번 챕터에서는 Hadoop에 대한 대략적인 설명과 Hadoop의 용도, Overall Architecture 등만을 설명하면서 마무리 하도록 한다.

만약, 더욱 자세한 설명을 원한다면 아래 자료를 참고하여 주길 바란다.

Hadoop guide



다음으로, Hadoop Framework에 대한 간단한 구조에 대해 설명하고자 한다.

지난번(Chapter 1) 글에서 설명하였듯이, Hadoop은 대용량 데이터 처리를 위한 분산 처리 프레임 워크 이라고 생각하면 되겠다.

하지만 이번 시간에 웹 검색을 통해 얼마든지 찾을 수 있는 Hadoop에 구조에 언급하는 이유는, 흔히 대용량 데이터 처리를 위한 Map-Reduce와 Hadoop 이라는 키워드를 많이 혼용하기 때문이다.

 

Hadoop은 Hadoop Framework이라는 아파치 메인 프로젝트로 존재하고 있으며 그 예하로 여러가지 Sub-Project가 존재한다.

 

위 그림과 같이 Hadoop Framework은 구성되어 있으며, 대용량 데이터 처리를 위해 다수의 Sub-Project가 존재한다.

Zookeeper : 다수의 컴퓨터로 분산 처리되는 고가용성 조정 서비스, 분산 응용 프로그램들을 구축하기 위하여 사용될 수 있는 분산 락 같은 프리미티브를 제공.

쉽게 말해, 여러대로 구성된 Server Farm이 존재 했을 시 Server간 급작스럽게 네트워크 연결이 해제 되었을 때의 처리, 다수의 클라이언트가 특정 서버에 몰렸을 때 이를 분산 시킬 LoadBalancing 등을 처리.

- PIG : 대규모 데이터셋 탐색용 데이터 흐름 언어와 실행환경을 제공하며 HDFS와 MapRduce 클러스터에서 실행.

- HIVE : 분산 데이터 웨어하우스로써, HDFS에 저장된 데이터를 관리하고 데이터 쿼리를 위하여 SQL 기반 쿼리 언어를 제공.

- CHUKWA : 분산 데이터 수집 및 분석 시스템으로써, HDFS에 데이터를 저장하는 Collector를 수행하며 Reporting 하기 위해 Map-Reduce를 사용.

- HDFS : 범용 컴퓨터들로 된 커다란 클러스터에서 수행되는 분산 파일 시스템.

- AVRO : 교차언어 RPC와 지속적인 데이터 스토리지를 위한 데이터 직렬화 시스템.

 

이렇게 많은 서브 프로젝트가 Hadoop Framework 이라는 하나의 집합을 구성한다.

이 중 앞으로 Hadoop의 상당수는 HDFS, Map-Reduce에 초점이 맞추어 질 것이다. Map-Reduce는  대용량 데이터를 처리하기 위해 가장 핵심적인 역할을 하기 때문이다.

 

다음 Chapter에서는 실제 Hadoop Test-Bed 구축 및 활용에 대해 여러 Chapter에 걸쳐 기술하고자 한다.