[하둡의 이해]
1. 하둡의 발전과정
하둡이 어떻게 개발되고 발전해왔는지에 대해서 알아보겠습니다. 하둡은 더그 커팅이란 개발자가 처음 개발했습니다. 더그 커팅은 2002년에 웹 검색엔진인 너치를 개발한 뒤 전 세계에 오픈소스로 공개할 검색엔진을 개발하기 시작하였고, 지금의 하둡을 탄생시킬 수 있었습니다. 즉, 하둡은 너치 프로젝트로부터 시작된 것입니다. 너치를 개발할 당시에는 웹이 규모가 폭발적으로 늘어나고 있었기 때문에 늘어나는 웹 페이지를 쉽게 색인 할 수 있는 기술이 필요했습니다. 더그 커팅은 여기에 착안하여 크롤링과 빨리 찾아줄 수 있는 기술을 개발하여 너치 프로젝트를 만들고 오픈소스화 하였습니다. 웹 페이지를 쉽게 색인 할 수 있는 너치가 오픈소스화 되었지만 한계가 있었습니다. 너치는 10억 페이지 규모의 색인을 유지할 수 있었지만, 그 이상의 확장을 관리하기에는 구조적인 한계를 가지고 있었기 때문인데요. 이 당시 전체 웹 페이지 규모를 보면 10억 페이지를 관리할 수 있는 너치만으로는 인터넷 상에 존재하는 모든 페이지를 가져와서 저장할 수 없었고, 여기서 텍스트 기반의 탐색을 한다는 것은 기술적으로 불가능하였습니다.
이런 한계가 있는 상황에서 구글이 2003년에 구글 파일 시스템이라는 논문을 발표하였는데요. 구글 파일 시스템이란 급속히 늘어나는 구글의 데이터 처리를 위하여 설계된 대용량 분산 파일 시스템입니다. 더그 커팅은 이 논문으로부터 대부분의 아이디어를 가져와 너치를 위한 분산파일시스템인 너치 분산파일시스템을 개발했습니다. 구글 파일 시스템과 같은 구조를 가지고 있는 이 파일 시스템은 웹 크롤링과 색인 과정에서 생성되는 굉장히 큰 파일들을 처리하기에 알맞은 구조를 가지고 있는 파일 시스템이었습니다.
그리고 구글은 2004년에 맵 리듀스를 발표했는데요. 이는 구글 분산파일시스템 위에서 동작시켜 대용량 데이터를 간단하게 처리할 수 있는 소프트웨어입니다. 너치 프로젝트는 맵 리듀스까지 프로젝트에 포함시켰습니다. 이로써 너치 프로젝트 안에 너치 분산파일시스템과 맵 리듀스가 포함되었고 이를 이용하여 굉장히 많은 데이터를 저장할 수 있었습니다. 그리고 많은 데이터를 분산 처리 환경에서 크롤링하여 가져오고, 처리할 수 있는 기반을 구축할 수 있었습니다.
더그 커팅은 이 너치 분산파일시스템과 맵 리듀스가 단순히 크롤링과 인덱스 생성을 위한 구조뿐만 아니라 다양한 용도로 사용될 수 있음을 알아챘습니다. 그래서 2006년 2월 너치 프로젝트로부터 너치 분산파일시스템과 맵 리듀스를 독립시켜 대용량의 데이터를 처리할 수 있는 프로젝트를 새롭게 생성하였습니다. 이 프로젝트가 바로 하둡 프로젝트의 시작이었습니다.
하둡 프로젝트가 생겨날 시기와 비슷한 무렵인 2006년도에 더그 커팅은 야후에 본격적으로 합류했고, 이후 하둡은 야후 안에서 엄청난 속도로 발전하고 성장하기 시작했습니다. 2008년 2월에 야후에서는 만 개의 하둡 코어를 이용하여 야후 서비스의 색인 제품들이 생성되고 있다고 발표하였습니다. 동일한 시기인 2008년 2월에 하둡은 오픈소스의 절대강자인 아파치 소프트웨어 재단에서 최고의 프로젝트에 등극하여 확실히 이름을 알리기 시작했습니다.
2. 하둡의 구성요소
(1) 분산파일 시스템(HDFS)
분산파일시스템인 HDFS, 맵리듀스, 하둡 에코시스템에 대하여 알아보겠습니다. 하둡은 빅데이터를 저장하는 분산파일시스템인 HDFS과 분산병렬을 처리하는 맵리듀스(MapReduce)로 구성된다고 말씀드렸는데요. 각각에 대하여 자세히 알아보도록 하겠습니다.
하둡 분산파일시스템이란 하둡이 사용하는 분산 저장소라고 생각하시면 됩니다. 분산된 환경에서 다양한 형태, 초대용량의 데이터를 안전하게 저장할 수 있을 뿐만 아니라 저장되어 있는 데이터를 빠르게 처리할 수 있도록 설계되었습니다. 즉, 분산된 환경에서 우수한 저장력과 데이터 처리 능력을 보여줍니다.
이런 하둡 분산파일시스템은 전체 성능이나 용량을 늘리기 위해 많은 서버를 이용하여 구축한다는 특징이 있는데요. 수를 늘리기 위해 값싼 서버들을 이용해 구축하고, 서버의 수가 많기 때문에 높은 수준의 고장방지기능을 이용합니다.
특징
분산파일시스템은 마스터 노드가 동작하는 서버와 슬레이브 노드가 동작하는 서버로 구성되어 있다고 하였습니다. 노드는 네트워크에서 사용되는 용어로, 일반적으로 네트워크에 연결되어 있고 전송 채널을 통해 자료를 주고 받을 수 있는 장비를 의미합니다. 하둡에서는 모든 서버들이 네트워크에 의해 연결되어 있고 통신 가능하도록 구성되는데 이때 노드는 각 구성요소들이 동작하는 서버라고 이해하면 쉽습니다.
하둡 분산파일시스템은 다수 컴퓨터들의 그룹으로서, 마스터 노드와 슬레이브 노드를 가집니다. 마스터 노드는 하둡 분산 파일 시스템에서 크게 두가지 역할을 담당하는데요 첫 번째 역할은 현재 분산 파일 시스템에서 사용하고 있는 모든 슬레이브 노드들을 관리하는 것입니다.
마스터노드 역할과 슬레이브노드 역할
(2) 맵리듀스
맵 리듀스는 저렴한 머신들을 이용하여 빅 데이터를 병렬로 분산 처리하기 위한 프로그래밍 모델로 맵 리듀스 기법을 제공합니다. 맵 리듀스 기법이란 시스템의 분산 구조를 감추면서 범용 프로그래밍 언어를 이용해 병렬처리 프로그래밍이 가능한 기법으로 맵 함수와 리듀스 함수를 기반으로 합니다. 맵 리듀스는 실행할 때 처리 성능에 영향을 주는 몇 가지 사항들을 고려해야 하는데요. 맵 리듀스는 병렬 및 분산 처리되기 때문에 여러 서버 중에서 하나의 서버가 제대로 동작하지 않거나 멈추는 문제나 동시 처리를 위해 각 프로세스 간의 스케줄링을 고려해야 합니다. 또한 장치 간의 네트워크 구성도 고려해야 합니다.
'빅데이터분석개론' 카테고리의 다른 글
비즈니스 인텔리전스 (Business Intelligence) (0) | 2015.12.13 |
---|---|
빅데이터 분석 방법론 (0) | 2015.12.13 |
HDFS와 MapReduce (0) | 2015.12.13 |
Hadoop 설치 (0) | 2015.12.09 |
[강의] 빅데이터분석개론 (0) | 2015.11.24 |