컴퓨터 지식/데이터베이스
[DB] Hadoop 과 Spark 요약정리 / 1️⃣ - 하둡(Hadoop), MapReduce
서상혁
2021. 3. 7. 15:22
목차
하둡(Hadoop)
하둡이란?
- 데이터 병렬분산처리를 위한 오픈소스 프레임워크
- 장점
- 오픈소스로 라이선스에 대한 비용 부담이 적음
- 시스템을 중단하지 않고, 장비의 추가가 용이(Scale Out)
- 일부 장비에 장애가 발생하더라도 전체 시스템 사용성에 영향이 적음(Fault tolerance)
- 저렴한 구축 비용과 비용대비 빠른 데이터 처리
- 오프라인 배치 프로세싱에 최적화
- 단점
- HDFS에 저장된 데이터를 변경 불가
- 실시간 데이터 분석 같이 신속하게 처리해야 하는 작업에는 부적합
- 너무 많은 버전과 부실한 서포트
- 설정의 어려움
MapReduce
- 하둡 에코시스템을 위한 프로그래밍 패러다임
- 대용량 데이터와 관련된 코드를 병렬적으로 돌리기 쉽게끔 제공되는 프로그래밍 모델
- 데이터를 분산(Map) 후 이를 다시 처리하는(Reduce) 과정을 수행한다.
왜 Map-Reduce인가??
- 병렬 프로그래밍에서의 오류는 시스템에 꽤나 치명적인 영향을 줄 수가 있다.
- 사용자는 윗단은 생각하지 않고 쉽게 사용하게끔.
- Map 과 Reduce 위주
MapReduce 의 용어 정리
- Job : 클라이언트가 수행하는 일련의 과정, 즉 전체 프로그램을 의미한다.
- Map : 데이터를 분산하는 과정
- Reduce : 분산화, Suffle, Sort 를 거친 데이터가 합쳐지는 과정
- Node : 하둡 체제에서의 하나의 클러스터를 구성하는
MapReduce 진행과정
- HDFS 데이터가 Input 으로 들어온다.
- Split 된 데이터가 map 을 통해 key, value 의 형태로 분할된다. <Map phase>
- Suffling 과정, 혹은 Sort 과정을 거친다. <Intermediate phase>
- Reducing 과정을 거쳐 key 별로 합쳐진다.
- Reducing 과정을 마친 결과는 일반적으로 HDFS 에 파일이 저장된다.
MapReduce Architecture
- JobTracker
- MapReduce Job 들을 컨트롤하는 일종의 데몬
- NameNode 에 위치 (NameNode 에 관련된 정보는 뒷 게시글에..)
- Job들을 스케쥴링, 모니터링
- 클러스터의 노드들에게 Map과 Reduce Task 를 할당한다.
- TaskTracker
- DataNode 에서 실행되는 데몬
- JobTracker 로 부터 작업을 요청받는다.
- Map, Reduce Task 를 인스턴스화하고, 작업을 수행한다.
- 진행상황은 JobTracker에게 전송된다.
------------------------------------------------
HDFS
- Hadoop Distributed File System
- 실시간 처리보다는 배치처리를 위해 설계됨
주요 특징들
- 블록 단위로 저장
- 데이터를 블록 단위로 나누어 저장하기 때문에 디스크나 파일 크기와 관계없이 저장이 가능하다.
- 블록을 여러개 (주로 3개)로 복제해서 저장
- 블록을 이용한 Fault tolerance
- 블록에 문제가 생기면 다른 블록을 이용해서 데이터를 복구
- 읽기 중심
- 데이터를 여러 번 읽는 것이 목적이고, 파일의 수정을 지원하지는 않는다.
아키텍쳐
- 기본적으로 Master-slave 디자인으로 구성되어있다.
- Master Node
- Single NameNode
- 메타데이터를 관리한다.
- Slave Node
- Multiple DataNode
- 데이터를 저장하는 용도
- NameNode
- 메타데이터, 이름, 디렉터리 등을 관리
- DataNode
- 데이터 블록들을 제공.
참고
728x90
Uploaded by Notion2Tistory v1.1.0