Experiences/Hadoop

1-2. 하둡은 무엇인가?

프로그래머 2012. 8. 26. 01:15

형식적으로 정의하면, 하둡은 대용량 데이터를 처리하는 분산 응용 프로그램을 작성하고 실행시키기 위한 오픈 소스 프레임워크(framework)이다.


그리고 아래와 같이 3가지 장점을 가지고 있다.


접근(Accessible) 

하둡은 윈도우 PC 같은 범용 컴퓨터들로 구성된 큰 규모의 클러스터나 아마존의 EC2와같은 클라우드 컴퓨팅 서비스에서 실행된다.


견고성(Robust) 

윈도우 PC와 같은 범용 컴퓨터에서 실행되도록 의도되었기 때문에, 하드웨어의 빈번한 고장을 가정하고 설계되었다.


확장가능성(Scalable)

대용량 데이터를 처리하는 데 있어서 클러스터에 단순히 컴퓨터(nodes)를 추가함으로써 선형적으로 확장할 수 있다.


간단성(Simple)

하둡을 사용하면 효과적인 병렬 코드를 빠르게 작성할 수 있다.



스케일(scale)의 증가가 아닌 스케일의 확장



상업용 관계형 데이터베이스를 확장하는 데는 많이 비용이 들기 때문에, 보통은 처리 용량을 증가시키는 데 관심이 있다.


하지만 그 용량을 증가 시키는 데에도 한계가 있고, 그 비용 또한 만만치 않기 때문에 매우 비효율적이다.

예를 들면, 일반 PC의 네 배 성능을 가지는 제품은 단순히 PC 네 대를 연결해 클러스터를 구성하는 것보다 훨씬 비싸다. 


하둡은 일반 범용 PC로 구성된 클러스터를 만들어 계속 확장시킬 수 있도록 디자인 되어있기 때문에, 그냥 단순히 하둡 클러스터에 범용 PC를 추가하면 된다.



관계형 테이블이 아닌



관계형 데이터베이스는 스키마(Schema)에 의해 정의된 테이블 안에 데이터를 저장한다.

하지만 현재 많은 응용 프로그램은 잘 정의되어 있는 것보다 그렇지 않은 다른 여러 데이터 타입을 다룬다.

텍스트, 이미지, xml 파일은 이런 데이터 타입의 좋은 예이다.


이러한 상황에서 하둡은 구조화되어 있지 않은 데이터를 처리하기 위해 으로 이루어진 쌍을 데이터 기본 구조로 사용한다.



선언적 언어(SQL)가 아닌 기능적 프로그래밍(MapReduce)



SQL은 순차적인 명령을 실행하는 프로그래밍 언어와 다르게 원하는 결과를 질의하면 추출하고 판단한다.

SQL이 쿼리문을 사용하는 반면 MapReduce는 스크립트코드를 사용한다. 


MapReduce는 SQL 쿼리보다 좀 더 일반 적인 데이터 처리를 수행할 수 있게 해주고, 복잡한 통계 모델이나 이미지 데이터를 새롭게 구성하는 것이 가능하다.



온라인 처리가 아닌 오프라인 배치 처리



하둡은 대용량 데이터 처리와 분석을 오프라인에서 수행하도록 디자인되었다.

하둡에서 데이터를 읽고 쓰는 작업은 온라인 처리 작업처럼 무작위로 할 수 없다.

데이터를 한 번 기록한 뒤 수정 없이 반복적으로 데이터를 읽는 유형의 작업이라면 하둡이 가장 적합하다.


지금까지 하둡이 무엇인지에 대해서 알아보았다.

이제는 하둡 프로그램에 앞서서 MapReduce를 살펴보도록 하자.






'Experiences > Hadoop' 카테고리의 다른 글

1-5. Hadoop 첫 프로그램 실습(WordCount)  (2) 2012.08.28
1-4. 하둡을 위한 개발환경 설정하기  (2) 2012.08.28
1-3. MapReduce의 이해  (0) 2012.08.27
[!] WordCount 에러  (0) 2012.08.26
1-1. 하둡의 소개  (0) 2012.08.26