Data Engineering
하둡 Intro
print("스테코더")
2023. 6. 3. 19:36
하둡이란?
→ 대용량의 데이터를 분산처리해줄 수 있도록 해주는 아파치 톱 레벨 오픈소스 프로젝트
분산파일시스템(HDFS)와 분산처리시스템(MapReduce)로 구성
→ 이 둘은 한 물리적인 클러스터에 공존
(Name Node/JobTracker 같이, Data Node/Task Tracker 같이)
분산파일시스템(HDFS)
: 데이터를 저장, 관리분산처리시스템(MapReduce)
: 저장된 데이터를 기반으로 데이터 처리
하둡의 특징
데이터가 있는 곳으로 코드를 이용 (기타 다른 계산 framework에도 적용)
→ 대부분의 경우 데이터이 크기가 더 큼 (code < data, code→data로 보내는 게 핵심)
스케일 업에 해당
- 스케일 아웃 : 서버를 계속 늘리는 것 (복잡도 급격히 업)
- 스케일 업 : 다수의 저렴한 서버를 사용하는 것
단순한 데이터 모델
- 반복적인 Key / Value Pair의 트렌스포메이션
- 데이터의 locality를 최대한 이용한 프로그래밍 모델
오프라인 배치 프로세싱에 최적화
HDFS
→ 웹하드 느낌
- 하나의 Name Node(마스터)와 하나 이상의 Data Nodes(슬레이브)
- Name Node : file 구조들을 관리하는 서버 (metadata 관리)
- Data Node : file의 내용들을 관리 (실제 data 관리)
- Secondary NameNode가 존재하여 주기적으로 Name Node의 내용을 백업 (snapshot)
MapReduce
→ 계산을 위한 framework
- 하나의 Job Tracker(마스터)와 여러개 Task Trackers(슬레이브)
- Job Tracker : 자원 관리, job 상태 관리
- Task Tracker : MapReduce의 실행/종료
하둡의 문제점
너무나도 많은 버전과 부실한 서포트
셋업과 사용이 어려움
하둡에 맞지 않은 작업도 존재
→ 소규모이거나 대용량의 데이터처리가 필요하지 않으면 하둡을 이용할 이유가 X