Hadoop

하둡이란?

딜레이라마 2017. 1. 16. 13:30
반응형

1. Hadoop 이란?

IT시스템 세계에서 ‘Hadoop(하둡, 이하 Hadoop)’이라는 소프트웨어 사용이 늘어나고 있다. 아직 Hadoop에 대해 잘 몰라도 소프트웨어 이름이라는 것 정도는 알고 있겠지만, ‘도대체 용도가 뭐야?’, ‘뭐 하는 거지?’ 하고 묻는 사람도 적지 않을 것이다. 어떤 데이터를 취급하기 위한 미들웨어라는 것은 알고 있더라도 ‘관계형 데이터베이스랑은 어떻게 달라?’, ‘파일 시스템이랑 달라?’, ‘처리를 위한 새로운 개념인가?’ 등 다양한 의문이 많을 것이다. 


1.1 Hadoop 개요

Hadoop을 한마디로 정의하자면

▒대량의 데이터를 처리하기 위한 병렬 분산 처리 소프트웨어 오늘날의 IT시스템은 예전에는 생각할 수 없었을 정도의 대규모 데이터를 다루어야 하는 현실에 직면했다. 그 양은 몇 대의 데이터베이스 서버와 데이터 웨어하우스 서버로는 처리할 수 없을 정도다. 대량의  데이터를  처리할  때는  해결해야  할  몇  가지  문제가  존재하지만,  그중에서  피하기 어려운 것은 디스크 I/O성능(throughput, 스루풋)이다. 데이터양이 적으면 메모리를 효율적으로 사용해서 해결할 수 있지만, 메모리 용량을 크게 상회하는 데이터를 다룰 때는 디스크 I/O가 직접적으로 영향을 받는다. 그러나 컴퓨터 역사를 살펴보면, CPU성능 진화나 내장 메모리의 대용량화와 비교해서 디스크 I/O의 성능은 그다지 향상되지 않은 게 현실이다. 이러한 배경을 바탕으로 사용이 늘고 있는 것이 바로 Hadoop이다.

Hadoop을 한마디로 표현하면 ‘대량의 데이터를 처리하기 위한 병렬 분산 처리 소프트웨어’라고 할 수 있다. ‘대량의 데이터’란 테라바이트(TeraByte, TB)나 페타바이트(PetaByte, PB)급의 대용량 데이터 또는 수억, 수조 건의 데이터를 의미한다. ‘병렬 분산 처리’란 단어  하나하나를  보면  어려운  느낌이  들지만,  쉽게  표현하자면  하나의  처리를  복수의  서버로 동시 처리하는 것을 말한다. Hadoop에서는 10대~1,000대의 서버로 하나의 클러스터(cluster)를 구성하여 대용량 데이터를 저장하고 처리한다.

하이퍼바이저(Hypervisor) 등의  ‘가상화  기술’은  한  대의  서버를  가상으로  복수의  서버로서 인식하게 하는 기술이지만, 반대로 Hadoop은 복수의 서버를 묶어서 하나의 가상 서버로 사용할 수 있도록 하는 것이다.


▒  분산 파일 시스템과의 강한 연계를 통해, 높은 스루풋 처리를 실현하는 분산 처리 소프트웨어상세한 내용은 뒤에서 설명하겠지만, Hadoop은 크게 두 가지 구성 요소로 이루어져 있다. 하나는 분산 파일 시스템으로, 대용량 데이터를 복수의 서버에 저장하는 구조다. 복수의 서버를 조합해서 사용자에게 하나의 큰 파일 시스템을 제공한다. 다른 하나는 병렬 분산 처리를 실현하는 프레임워크다. 이것은 하나의 큰 처리(잡, job)를 복수의 단위(태스크, task)로 분할해서 실행하는 구조다. 이 분산 파일 시스템과 병렬 분산 처리 프레임워크가 공고히 연계되며, 높은 스루풋의 데이터 처리를 실현한다.기술적인 관점에서 Hadoop을 한마디로 표현하면, ‘분산 파일 시스템과 강한 연계를 통해 높은 스루풋 데이터 처리를 실현하는 분산 처리 소프트웨어’라고 할 수 있다

▒자바(Java) 기반으로 개발되어 일반적인 서버에서 동작Hadoop은 주로 자바를 개발 언어로 개발되었다. Hadoop을 설치할 하드웨어에 특수한 서버나  장비는  필요치  않다. IA(Intel Architecture) 서버같이  일반적으로  널리  사용되고 있는 서버와 네트워크 장비로도 충분한 효과를 볼 수 있다. ‘언제나 구할 수 있는 장비로도 구축이 가능하다.’는 점이 Hadoop의 매력 중 하나다. 자바로 개발되어 있기 때문에 다양한 OS에서 동작하지만, 보통은 리눅스 상에 구현하는 것이 일반적이다.

▒서버를 추가하면 용량과 성능이 향상(스케일 아웃, Scale-out)Hadoop에서는  클러스터를  구성하는  서버  대수를  추가하면  저장  용량을  확장하거나  분산 처리 성능을 향상시킬 수 있다. 서버 자체의 성능을 올리는 스케일 업(Scale-up)방식으로는 성능을 올리는 데 한계가 있으므로, 서버 대수를 증설하는 스케일 아웃 방식이 가능하다는 것은 큰 이점이다. 실제 Hadoop의 처리 능력은 1,000대 정도로 구성할 때 제대로 된 효과를 볼 수 있다고 한다. 만약 두세 대로 구성한 클러스터라면 제대로 된 Hadoop의 매력을 느낄 수 없기 때문에 최소한 10대 정도를 이용하여 장점을 이끌어 낼 수 있도록 하는 것이 좋다.


▒관계형 데이터베이스나 검색 엔진과는 다름Hadoop은 ‘고속 데이터베이스 소프트웨어’, ‘검색 엔진을 구현하는 소프트웨어’라고 오해

를 사기도 한다. Hadoop은 관계형 데이터베이스와는 전혀 다른 방식으로 만들어진 소프트웨어다. 관계형 데이터베이스는  정규화된  작은  데이터  세트에  대해  낮은  대기  시간을  가지고(수  밀리초나 수 초)액세스하도록 만들어졌다. 하지만 Hadoop은 대량의 데이터를 대상으로 일괄 처리를 실행한다. 또한, 관계형 데이터베이스가 가지고 있는 트랜잭션(Transaction)제어 등의 기능도 없다. 데이터를 누적해서 처리한다는 면에서는 같은 용도지만, 사전에 기능이나 용도가 크게 다르다는 것을 이해해 두는 것이 중요하다. 그리고 Hadoop은 검색 엔진도 아니다. 검색 인덱스를 만들 때도 자주 사용되나, 검색 요청에 바로 응답할 수 있는 검색 엔진 소프트웨어는 아니다.


▒가장 활발한 오픈 소스 프로젝트 Hadoop은 Apache Software Foundation(아파치  소프트웨어  파운데이션)의  프로젝트로 Apache(아파치)라이선스로 공개되어 있으며(그림 1.2), 현재 가장 활발한 오픈 소스 프로젝트 중 하나라고 할 수 있다. 대규모 데이터 처리를 필요로 하는 대기업 소속 엔지니어들이 직접 개발에 참여하고 있어서 나날이 진화를 거듭하고 있다.


출처 : 빅데이터 시대의 하둡 완벽 입문

반응형