[하둡의 이해]


1. 하둡의 발전과정


하둡이 어떻게 개발되고 발전해왔는지에 대해서 알아보겠습니다. 하둡은 더그 커팅이란 개발자가 처음  개발했습니다. 더그 커팅은 2002년에 웹 검색엔진인 너치를 개발한 뒤 전 세계에 오픈소스로 공개할 검색엔진을  개발하기 시작하였고, 지금의 하둡을 탄생시킬 수 있었습니다. 즉, 하둡은 너치 프로젝트로부터 시작된 것입니다.  너치를 개발할 당시에는 웹이 규모가 폭발적으로 늘어나고 있었기 때문에 늘어나는 웹 페이지를 쉽게 색인 할 수  있는 기술이 필요했습니다. 더그 커팅은 여기에 착안하여 크롤링과 빨리 찾아줄 수 있는 기술을 개발하여  너치 프로젝트를 만들고 오픈소스화 하였습니다.  웹 페이지를 쉽게 색인 할 수 있는 너치가 오픈소스화 되었지만 한계가 있었습니다. 너치는 10억 페이지 규모의  색인을 유지할 수 있었지만, 그 이상의 확장을 관리하기에는 구조적인 한계를 가지고 있었기 때문인데요.  이 당시 전체 웹 페이지 규모를 보면 10억 페이지를 관리할 수 있는 너치만으로는 인터넷 상에 존재하는 모든  페이지를 가져와서 저장할 수 없었고, 여기서 텍스트 기반의 탐색을 한다는 것은 기술적으로 불가능하였습니다.


이런 한계가 있는 상황에서 구글이 2003년에 구글 파일 시스템이라는 논문을 발표하였는데요. 구글 파일  시스템이란 급속히 늘어나는 구글의 데이터 처리를 위하여 설계된 대용량 분산 파일 시스템입니다. 더그 커팅은  이 논문으로부터 대부분의 아이디어를 가져와 너치를 위한 분산파일시스템인 너치 분산파일시스템을  개발했습니다. 구글 파일 시스템과 같은 구조를 가지고 있는 이 파일 시스템은 웹 크롤링과 색인 과정에서  생성되는 굉장히 큰 파일들을 처리하기에 알맞은 구조를 가지고 있는 파일 시스템이었습니다. 


그리고 구글은 2004년에 맵 리듀스를 발표했는데요. 이는 구글 분산파일시스템 위에서 동작시켜 대용량 데이터를  간단하게 처리할 수 있는 소프트웨어입니다. 너치 프로젝트는 맵 리듀스까지 프로젝트에 포함시켰습니다.   이로써 너치 프로젝트 안에 너치 분산파일시스템과 맵 리듀스가 포함되었고 이를 이용하여 굉장히 많은 데이터를  저장할 수 있었습니다. 그리고 많은 데이터를 분산 처리 환경에서 크롤링하여 가져오고, 처리할 수 있는 기반을  구축할 수 있었습니다.


더그 커팅은 이 너치 분산파일시스템과 맵 리듀스가 단순히 크롤링과 인덱스 생성을 위한 구조뿐만 아니라  다양한 용도로 사용될 수 있음을 알아챘습니다. 그래서 2006년 2월 너치 프로젝트로부터 너치 분산파일시스템과  맵 리듀스를 독립시켜 대용량의 데이터를 처리할 수 있는 프로젝트를 새롭게 생성하였습니다. 이 프로젝트가   바로 하둡 프로젝트의 시작이었습니다.


하둡 프로젝트가 생겨날 시기와 비슷한 무렵인 2006년도에 더그 커팅은 야후에 본격적으로 합류했고, 이후  하둡은 야후 안에서 엄청난 속도로 발전하고 성장하기 시작했습니다. 2008년 2월에 야후에서는 만 개의  하둡 코어를 이용하여 야후 서비스의 색인 제품들이 생성되고 있다고 발표하였습니다. 동일한 시기인 2008년   2월에 하둡은 오픈소스의 절대강자인 아파치 소프트웨어 재단에서 최고의 프로젝트에 등극하여 확실히 이름을   알리기 시작했습니다.



2. 하둡의 구성요소


(1) 분산파일 시스템(HDFS)

분산파일시스템인 HDFS, 맵리듀스, 하둡 에코시스템에 대하여  알아보겠습니다.  하둡은 빅데이터를 저장하는 분산파일시스템인 HDFS과 분산병렬을 처리하는 맵리듀스(MapReduce)로 구성된다고  말씀드렸는데요. 각각에 대하여 자세히 알아보도록 하겠습니다.  


하둡 분산파일시스템이란 하둡이 사용하는 분산 저장소라고 생각하시면 됩니다. 분산된 환경에서 다양한 형태,   초대용량의 데이터를 안전하게 저장할 수 있을 뿐만 아니라 저장되어 있는 데이터를 빠르게 처리할 수 있도록 설계되었습니다. 즉, 분산된 환경에서 우수한 저장력과 데이터 처리 능력을 보여줍니다. 

이런 하둡 분산파일시스템은 전체 성능이나 용량을 늘리기 위해 많은 서버를 이용하여 구축한다는 특징이  있는데요. 수를 늘리기 위해 값싼 서버들을 이용해 구축하고, 서버의 수가 많기 때문에 높은 수준의  고장방지기능을 이용합니다.


특징

분산파일시스템은 마스터 노드가 동작하는 서버와 슬레이브 노드가 동작하는 서버로 구성되어 있다고 하였습니다.  노드는 네트워크에서 사용되는 용어로, 일반적으로 네트워크에 연결되어 있고 전송 채널을 통해 자료를  주고 받을 수 있는 장비를 의미합니다. 하둡에서는 모든 서버들이 네트워크에 의해 연결되어 있고 통신  가능하도록 구성되는데 이때 노드는 각 구성요소들이 동작하는 서버라고 이해하면 쉽습니다.

하둡 분산파일시스템은 다수 컴퓨터들의 그룹으로서, 마스터 노드와 슬레이브 노드를 가집니다. 마스터 노드는  하둡 분산 파일 시스템에서 크게 두가지 역할을 담당하는데요 첫 번째 역할은 현재 분산 파일 시스템에서   사용하고 있는 모든 슬레이브 노드들을 관리하는 것입니다.


마스터노드 역할과 슬레이브노드 역할





(2) 맵리듀스

맵 리듀스는 저렴한 머신들을 이용하여 빅 데이터를 병렬로 분산 처리하기 위한 프로그래밍 모델로 맵  리듀스 기법을 제공합니다. 맵 리듀스 기법이란 시스템의 분산 구조를 감추면서 범용 프로그래밍 언어를 이용해  병렬처리 프로그래밍이 가능한 기법으로 맵 함수와 리듀스 함수를 기반으로 합니다.  맵 리듀스는 실행할 때 처리 성능에 영향을 주는 몇 가지 사항들을 고려해야 하는데요.  맵 리듀스는 병렬 및 분산 처리되기 때문에 여러 서버 중에서 하나의 서버가 제대로 동작하지 않거나 멈추는  문제나 동시 처리를 위해 각 프로세스 간의 스케줄링을 고려해야 합니다. 또한 장치 간의 네트워크 구성도  고려해야 합니다.





(3) 하둡 에코시스템
하둡은 빅데이터 저장과 처리의 기본적인 기능만 제공하기 때문에, 이의 부족함을 보완하는 다양한 오픈소스  소프트웨어들이 필요합니다. 이를 하둡 에코시스템이라고 하는데요. 즉, 하둡 에코시스템이란 하둡의 기능을  보완하는 서브 오픈소스 소프트웨어들입니다. 이를 통해 빅데이터를 보다 원활하고 효율적으로 분석할 수  있습니다. 표를 자세히 살펴볼까요? 빅데이터 활용 단계별로 기술을 구분해 놓았는데요. 빅데이터 수집에는  플럼과 스쿱 기술을 사용하여 비정형 데이터를 수집하고 관계형 데이터베이스로부터 데이터를 가져옵니다.  그리고 빅데이터 저장, 활용에서는 Hbase 기술을 통해 분산되어 있는 전체 데이터 컬럼 단위의 NoSQL  데이터베이스를 처리합니다. 빅데이터 처리에는 하이브, 피그, 마후트 기술이 있는데요. 이를 통해  유사 SQL  기반 빅데이터, 스크리브 언어 기반 빅데이터, 기계학습 알고리즘 기반 빅데이터들을 처리합니다. 그리고  마지막으로 빅데이터 관리에서는 우지, H카탈로그, 주키퍼 기술을 통해 빅데이터 처리 과정, 빅데이터 메타  정보, 빅데이터 서버 시스템을 관리합니다. 

눈치 채셨는지 모르겠지만 특히 하둡 에코시스템의 주요 기술은 대부분은 동물 이름과 관련 있습니다.
Hadoop은 창시자 더그 컷팅의 아들이 노란 코끼리 장난감을 ‘하둡’이라 부르는 것을 보고 이름을 지었고  Hive는 벌떼, Pig는 돼지 그리고 이들을 관리하는 주키퍼는 동물 사육사라는 뜻이지요. 이 외에도 하둡 생태계를  구성하고 있는 주요 솔루션은 플럼, 스쿱, HBase, 마후트 등이 있습니다. 하둡 관련 오픈소스 프로젝트는  해마다 이어지고 있는데 이들 솔루션은 대부분 오픈소스화 되어 있습니다.






에코시스템지도




구성
다음은 하둡 에코시스템 구성에 대한 이미지입니다. 하둡 에코시스템에는 기본 요소인 하둡 분산파일시스템과  맵 리듀스, 분산 데이터베이스인 H베이스, 관계형 대수 쿼리 언어 인터페이스인 피그(Pig), 데이터웨어하우징  솔루션인 하이브, 테이블 및 스토리지 관리 서비스인 H카탈로그, 그리고 매니지먼트인 암바리와  코디네이션인 주키퍼 등이 포함됩니다. 

하둡 에코시스템에 대해 더그 커팅은 “하둡을 중심으로 성장한 프로젝트들의 전체 생태계가 있으며,  이는 계속해서 성장하고 있습니다. 하둡은 분산된 운영체제의 커널이며, 커널 주변의 다른 모든 구성요소들은  현재 개발 중에 있는데 피그와 하이브는 그런 것들의 좋은 예라 할 수 있습니다. 단순히 하둡만을 사용하는  사람은 없습니다. 따라서 그들은 “여러 개의 다른 툴들도 사용하고 있습니다.” 라고 설명했습니다.





피그와 하이브
그럼 이제 하둡 에코시스템의 기술 중 피그와 하이브에 대해서 알아보고자 합니다. 먼저 피그는 고급수준의  데이터 처리 언어로, 하둡 프로그래밍을 간단하게 해주고 하둡의 확장성과 안정성을 유지시켜줍니다.  그리고 고급 수준의 언어들에서 클래스 연산들로 여겨져야 하는 어떤 기능들은 맵 리듀스 기능을 수행하기가  어려운데 이것은 이러한 점을 개선해 줍니다. 피그는 대용량 데이터 집합을 좀 더 고차원적으로 처리할 수  있도록 해주며 다중 값과 중첩된 형태를 보이는 좀 더 다양한 데이터 구조를 지원하고 데이터에 적용할 수 있는  변환 종류도 훨씬 더 강력합니다.

하이브는 하둡의 최상위층에 있는 데이터 웨어하우징 패키지로 다수의 사용자 및 대용량 로그 데이터 처리를  위해 페이스북에서 개발한 정보 플랫폼 중 가장 중요한 구성 요소입니다. 페이스북의 급증하는 소셜네트워킹에서  매일같이 생산되는 대량의 데이터를 관리하고 학습하기 위해 개발되었는데요. 페이스북은 하둡 분산파일시스템에  대량의 데이터를 저장해 두고 하이브가 제공하는 믿을만한 SQL 기법을 이용하여 데이터를 분석합니다.  이제 하이브는 많은 조직들이 일반적인 목적의 확장 가능한 데이터 처리 플랫폼으로 채택하는 성공적인 아파치  프로젝트로 성장했습니다.






'빅데이터분석개론' 카테고리의 다른 글

비즈니스 인텔리전스 (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