본문 바로가기
프로그래밍/hadoop

하둡(hadoop) 이란? (첫 번째)

by 메이슨김 2016. 10. 13.
데이터를 취급하기 위한 미들웨어

대량의 데이터(테라바이트, 페타바이트급)를 처리하기 위한 병렬(하나의 처리를 복수의 서버로 동시 처리) 분산 처리 소프트웨어

데이터가 적을시에는 메모리 처리도 상관은 없지만 메모리 용량을 크게 상회하는 데이터를 다룰 때는 디스크 I/O의 직접적인 영향을 피할 수 없다.

복수의 서버를 묶어서 하나의 가상 서버로 사용 <-> 하이퍼바이저(Hypervisor) 와는 반대의 기술

분산 파일 시스템과의 강한 연계를 통해, 높은 스루풋 처리를 실현하는 분산 처리 소프트웨어

복수의 서버를 묶어서 하나의 큰 파일 시스템을 제공 + 하나의 큰 잡을 복수의 단위로 분할해서 실행하는 구조 = 높은 throughput

자바 기반으로 개발되어 일반적인 서버에서 동작

하둡을 설치하기 위해 특수한 서버나 장비가 필요치 않다

서버를 추가하면 용량과 성능이 향상(스케일 아웃)

스케일 업의 한계를 넘을 수 있다

관계형 데이터베이스나 검색 엔진과는 다름

가장 활발한 오픈 소스 프로젝트

대량의 데이터를 고속으로 처리할 수 있다는 말이 기존 일괄 처리를 모두 바꿀 수 있다는 말은 아니다 

현실적으로 실현 불가능했던 처리가 가능해지거나 높은 비용으로 인해 포기했던 처리를 현실적인 비용으로 구현 가능하다


2003년 <The Google File System> - HDFS

2004년 <MapReduce: Simplified Data Processing on Large Clusters> - MapReduce

두 편의 논문을 google에서 발표


대용량 데이터를 처리하기 위해서는 네트워크 전송하지 않고 처리하는 것이 관건 -> 기존의 처리 방식이라면 네트워크 회선 이상의 대역폭은 기대할 수 없다.

물론 처리한 결과를 하나로 합칠 필요가 있다. 



Map -> Shuffle -> Reduce

Map -> 

Suffle : 네트워크를 통한 데이터 전송이 발생 -> Map 처리 결과의 데이터 양도 고려

Reduce


Map 처리 대상 데이터 전체를 하나씩, 하나씩 처리

Shuffle 키를 선택

복잡한 처리를 여러 개의 단순 map reduce로 구현

map 함수만으로 처리 가능한지를 검토



반응형

'프로그래밍 > hadoop' 카테고리의 다른 글

하둡(hadoop) journalnode  (0) 2016.10.13
hadoop s3 연결  (0) 2015.11.27