하둡
하둡(Hadoop)은 여러 개의 저렴한 컴퓨터를 마치 하나인 것처럼 묶어 대용량 데이터를 처리할 수 있는 자바(Java)기반의 오픈소스 소프트웨어 프레임워크이다.정식 명칭은 아파치 하둡(Apache Hadoop)이다. 하둡(Hadoop)이라는 말은 High-Availability Distributed Object-Oriented Platform의 약자라는 말도 있고, 개발자인 더그 커팅(Doug Cutting)의 아들이 가지고 놀던 코끼리 인형의 이름이라는 말도 있다.
개요
하둡은 대용량 데이터를 분산 시키는 프레임워크 를 가지고 있고 분산 저장과 병렬처리로 구성되어 있다. 하둡은 주로 빅데이터 처리에 사용되고,아파치재단에서 관리하고 있다. 분산저장은 컴퓨터 클러스터 전체에 대규모 데이터를 처리하는 프레임워크이고, 병렬처리는 저장환경에서 병렬로 데이터를 처리하는 프레임워크이고 맵리듀스라는 소프트웨어를 같이 사용하여 대규모 데이터 처리를 분산병렬 컴퓨터에서 처리한다. 하둡의 마스코트는 노란색 아기 코끼리이다. 개발자의 아들이 가지고 놀던 코끼리 인형을 보고 지었다.
역사
하둡은 오픈소스 웹 검색엔진인 아파치 너치Apache Nutch에서 개발되었고, 그것 자체는 루씬 프로젝트의 일부이다.
- 2002년 : 너치가 개발되었고, 실행 가능한 크롤러(Chrawler와 검색 엔진 시스템을 빠르게 개발
- 2004년 : 구글은 맵리듀스를 소개하는 논문을 출판했다. 2005년 초기에 너치 개발자들은 너치에 맵리듀스를 구현하였고, NDFS(Nutch Distributed FileSystem)이라는 너치 분산 파일 시스템을 오픈소스로 구현해 보기로 했다.
- 2005년 중반까지 모든 주요 너치 알고리즘들이 맵리듀스와 NDFS를 사용하기 위하여 포팅되었고,너치 내부에 NDFS와 맵리듀스 구현은 검색 분야를 뛰어넘어 응용될 수 있다.
- 2006년 2월 : NDFS와 맵리듀스는 하둡이라고 명명된 루씬의 독립 서브프로젝트를 구성하기 위하여 Nutch 밖으로 빠져나왔다. 비슷한 시기에, 더그 커팅은 Yahoo에 합류하였고, 하둡은 웹 규모의 시스템으로 전환하기 위하여 전용 팀과 리소스들을 제공하였다.
- 2008년 2월 : 하둡은 기술적인 성공과 다양함 그리고 활발한 커뮤니티를 인정받아 아파치 최고 수준의 프로젝트로 등극하였다. 이때쯤 하둡은 야후 뿐만 아니라 래스트탓에프엠 페이스북, 뉴욕타임즈와 같은 다양한 회사에서 사용하게 되었다.
- 2008년 4월 : 하둡은 테라바이트 데이터 정렬을 위한 가장 빠른 시스템으로서 세계 기록을 경신했다. 910개의 노드의 클러스터와 함께 하둡은 전년도 우승자의 297초를 제치며 1테라비이트를 209초만에 정렬했다.
- 2008년 11월 : 구글은 하둡의 맵리듀스 구현이 1테라바이트를 68초만에 정렬했다고 보고했다.
- 2009년 5월 : 야후는 하둡을 사용하여 62초만에 1테라바이트 정렬하였다고 공표하였다.[1]
버전
- 2011년 : 하둡v1
- 2012년 : 하둡v2
- 2017년 : 하둡v3
하둡v1의 특징
- 분산저장(HDFS)
- 네임노드, 데이터 노드가 처리
- 병렬처리(MapReduce)
- 잡트래커, 태스트 트래커가 처리
- 클러스터당 최대 4000개의 노드를 등록
- 작업 처리를 슬롯(slot) 단위로 처리
- 맵, 리듀스 슬롯을 구분하여 처리
하둡v2의 특징
- 클러스터 관리
- 작업 관리
- MR 외 Spark, Hive, Pig 등 다른 분산 처리 모델도 수행 가능
- 클러스터당 1만개 이상의 노드 등록 가능
- 작업 처리를 컨테이너(container) 단위로 처리
하둡v3의 특징
- 이레이져 코딩 도입
- YARN 타입라인 서비스 v2 도입
- 스크립트 재작성및 이해하기 쉬운 형태로 수정
- JAVA8 지원
- 네이티브 코드 최적화
- 고가용성을 위해 2개 이상의 네임노드 지원 [2]
특징
하둡은 빅데이터 분산시키는 프로그램이기 때문에 각각의 빅데이터 플랫폼에서 좋은 혹평을 듣고 있다. 단일서버에서 많은 머신으로 확장할 수 있게 제작되었으며 각 머신은 계산, 정리 등 할 수 있다. 하둡 자체에는 높은 가용성을 제공하기 위해 하드웨어만 쓰는게 아니라 여러 응용프로그램 계층도 사용할 수 있다.응용프로그램 계층은 오류를 감지하거나 처리를 할 수 있고, 에러가 발생한 클러스터는 해결방안을 제시한다.
선형적인 확장성 제공
- 일반적인 스토리지는 초기에 애플리케이션에서 사용할 용량을 예측하여 미리 스토리지 용량을 확보한 상태에서 시스템이 오픈되나, 하둡 파일 시스템을 이용할 경우에는 서비스 초기에 필요한 수준으로만 스토리지 용량을 확보해 시스템을 오픈한 후 스토리지 증가 추이를 보면서 용량을 추가하는 방식으로 진행 할 수 있다. (기존의 방법보다 관리가 용이함)
글로벌 네임 스페이스 제공
- 시스템 간의 파일 데이터에 대한 중복 저장 등 파일공유 등의 문제를 쉽게 해결할 수 있다.
전체처리 용량증가
- 분산된 서버의 디스크를 이용하기 때문에 네트워크, 디스크 I/O등이 각 서버로 분산된다. 따라서 동일한 용량의 스토리지 솔루션을 구축 할 경우 전체 처리 용량은 증가한다.
데이터 분석 처리에 활용
- 분석용 데이터를 하둡파일시스템에 저장하고, 맵리듀스라는 분산/병렬 처리 프레임워크를 이용해 바르게 분석하는데 사용.
응용프로그램 기반의 파일 시스템
- 일반적인 파일시스템처럼 운영체제에서 제공하는 파일처리 명령을 이용할 수 없고, 하둡 분산 파일 시스템을 이용하는 애플리케이션은 하둡에서 제공하는 명령어나 프로그램API를 이용해야 한다.
불변파일만 저장
- 파일은 한번 써지면 변경되지 않는다고 가정한다.
- 하둡분산파일 시스템은 파일을 저장하고 저장된 파일에 대해 스트리밍 방식의 읽기 요청 위주인 응용이나 배치 작업 등에 적합하다. 이런 제약 때문에 파일 처리를 주로 하는 기존 솔루션이나 시스템을 수정없이 하둡 분산 파일 시스템을 적용 할 수는 없다.
네임스페이스 관리를 네임 노드 메모리에 저장
- 파일 시스템의 네임스페이스 정보를 네임노드의 메모리상에서 관리하기 때문에 하둡에 저장할 수 있는 파일과 디렉토리의 개수는 네임노드의 메모리 크기에 제한을 받는다.
네임노드 이중화 문제
- 네임노드가 SPOF(Single Point Of Failre)다. 네임노드에 문제가 발생하면 파일시스템 전체 클러스터에 장애가 발생한다. [3]
하둡은 패키지가 있다. 패키지에는 4개의 주요 구성요소가 자리잡고 있다. Hadoop Common, Hadoop HDFS, Hadoop YARN, Hadoop Mapreduce 이렇게 4가지 구성요소가 있다. 각각의 주요 구성요소의 특징은 이렇게 나와 있다.
Hadoop Common
- 하둡의 다른 모듈을 지원하기 위한 공통 컴포넌트 모듈
Hadoop HDFS
- 분산저장을 처리하기 위한 모듈
- 여러개의 서버를 하나의 서버처럼 묶어서 데이터를 저장
- 하드웨어가 동작오류 나면 빨리 자동으로 복구
- 하나의 인스턴스에서 수천만여 파일을 지원
- 시간당 처리량 극대화
Hadoop YARN
- 병렬처리를 위한 클러스터 자원관리 및 스케줄링 담당
Hadoop Mapreduce
- 분산되어 저장된 데이터를 병렬 처리할 수 있게 해주는 분산 처리 모듈 [2]
이렇게 여러가지로 표현이 되어 있다. 하지만 여러 사용자들이나 빅데이터 플랫폼, Yahoo, Facebook 같은 경우에는 HDFS, Maperduced 두가지 구성요소를 자주 쓰고 있다.
장단점
장점
- 오픈소스로 라이선스에 대한 비용 부담이 적음
- 시스템을 중단하지 않고, 장비의 추가가 용이(Scale Out)
- 일부 장비에 장애가 발생하더라도 전체 시스템 사용성에 영향이 적음(Fault tolerance)
- 저렴한 구축 비용과 비용대비 빠른 데이터 처리
- 오프라인 배치 프로세싱에 최적화
단점
- HDFS에 저장된 데이터를 변경 불가
- 실시간 데이터 분석 같이 신속하게 처리해야 하는 작업에는 부적합
- 너무 많은 버전과 부실한 서포트
- 설정의 어려움
향후 전망
- 하둡은 이제 더 이상 하둡파일스템과 맵리듀스만을 의미하지는 않는다. 이를 기반으로 거대한 하둡 생태계가 구성됐다. 써드파티 관리 소프트웨어나 HBASE같은 운영 DB, 임팔라 타조 등의 SQL 온 하둡, 피그 테즈 하마 등의 프레임워크, 분석 애플리케이션 등이 하둡과 함께 하고 있다. 현재 25개 이상의 컴포넌트들이 하둡 생태계 안에 들어와 있다. 이생태계는 앞으로 더욱 확장될 것이다. 하둡의 지난 10년은 빅데이터 시대를 이끌었다. 앞으로 하둡은 실시간 분석 등 더 다양한 기능으로 확대될 것으로 전망된다.[4]
각주
- ↑ 비령, 〈http://blog.naver.com/PostView.nhn?blogId=hero1014&logNo=20187445062〉, 《네이버 블로그》, 2013-05-11
- ↑ 2.0 2.1 위키독스 공식 홈페이지 - https://wikidocs.net/
- ↑ 하동하동, 〈https://m.blog.naver.com/PostView.nhn?blogId=cookatrice&logNo=50107835245&proxyReferer=https%3A%2F%2Fwww.google.com%2F〉, 《네이버 블로그》, 2011-03-23
- ↑ 심재석, 〈[1]〉《Byline Network》2016-01-27
참고 자료
- 아파치 하둡 공식홈페이지 - https://hadoop.apache.org/
- PLAY wuth EXEM, 〈https://m.post.naver.com/viewer/postView.nhn?volumeNo=4122596&memberNo=30800755&navigationType=push〉, 《네이버 포스트》 2016-04-27
- 비령, 〈http://blog.naver.com/PostView.nhn?blogId=hero1014&logNo=20187445062〉, 《네이버 블로그》, 2013-05-11
- 위키독스 공식 홈페이지 - https://wikidocs.net/
- 하동하동, 〈https://m.blog.naver.com/PostView.nhn?blogId=cookatrice&logNo=50107835245&proxyReferer=https%3A%2F%2Fwww.google.com%2F〉, 《네이버 블로그》, 2011-03-23
- 심재석, 〈https://byline.network/2016/01/1-47/〉《Byline Network》2016-01-27
같이 보기