Apache에서 오픈소스로 제공하는 분산처리 프레임워크
즉, 대용량 데이터를 여러 서버를 클러스터링 하여 분산처리 하는 것이 목적인 프레임워크
현재 hadoop1.x, hadoop2.x, hadoop3.x 로 발전해왔다
Hadoop-Echosystem으로 여러 Framework와 조합하여 사용한다

- 위 사진에 있다고 필수적으로 모두 사용하는 것은 아니다.
- 사진 출처
HDFS
Hadoop FileSystem의 약자로 Hadoop의 분산 파일 시스템.
- Block단위로 파일을 적재한다
- 블록의 수가 너무 많아지면 좋지 않다
- Block에 관한 Meta정보를 Namenode에서 관리하여 리소스 낭비가 발생할 수 있다.
- 안정성, 다중 처리를 위해 replication을 생성하여 사용한다.
- Scale-Out이 용이하다
Mapreduce

- Map과 Reduce 2개의 메소드로 구성된
대용량 데이터 처리 분산 프로그래밍 모델
- 정형 / 비정형 데이터를 동일한 크기로 나두고, 처리 완료 한 데이터를 병합해주는 역할
Hadoop1.x

Hadoop 1.x 버전의 구성은 위와 같다.
Client
NameNode를 통해 정보를 받고, DataNode와 직접 통신
NameNode
Datanode 관리, Resource 관리 등을 하는 Node
- MasterNode
- SlaveNode의 정보를 저장
- HDFS의 Meta data 보관
- Client가 데이터 요청 시 위치 정보 전달
- 안전성을 위해 Editlog 생성
- Editlog : 변경 로그
- secondary node
- MasterNode가 장애 발생시 대체
- MasterNode의 Editslog등을 Pull하여
BackUp/Merge를 수행
하여 fsimage 생성
- fsimage : File System Image
- Editlog의 크기와 fsimage의 생성 시간은 반비례 한다.
- fsimage를 MasterNode에 전달하여 동기화
- JobTracker
- 실행할 task를 관리한다
- Job이 끝날 때까지
스케줄링/모니터링
을 담당
- 클러스터 자원 관리
SlaveNode
데이터가 적재되어있고, 연산 작업을 수행하는 Node
- TaskTracker
- Task를 수행한다
- Map/Reduce Task로 나누어짐
- 병렬 처리 작업 단위 : Slot
- Map/Reduce slot은 개수가 정해져 있다.
- Map/Reduce은 역할이 정해지면 용도 변경이 불가
- 작업을 하지 않으면 대기 상태
- 클러스터가 100% 활용되지 않을 경우가 존재
- DataNode
- 데이터를 분산하여 가지고 있따.
- 데이터는 Block단위로 적재된다
- Fault Recovery를 위해 Duplication을 유지한다
- Default : 3
- NameNode에게 HeartBeat를 통해 파일위치 및 장애여부 전송
실행 순서 (MapReduce)
- client node : M/R 를 수행하기 위해 Job Client를 실행시킴
- Job Client : Job을 할당 및 수행하기 위해 JobTracker에게 새로운 Job ID를 수령
- Job Client :
Jar
,Config
,Input Split Data
을 HDFS에 Job ID디렉토리로 복사
- Job Client : JobTracker에게 시작 준비 완료 알림
- JobTracker : 실행할 Job 객체 생성
- JobTracker : 수행할 Task List 생성을 위해 Job Client가 계산한 Input Split Data를 기반으로 Task 생성
- Job,Task Tracker : 상호 Heartbeat 교환
- task tracker : task 수행 가능여부
- job tacker : task 가 존재하면 task 반환 후 task tracker가 task를 수행하게 만듦
- task tracker : Input Split (Job JAR File)를 HDFS에 복사 후 task runner instance를 생성 후 task수행
- task tracker : 각 task를 수행하면서 n초마다 수행 감시
MapReduce의 단일 고장점
- JobTracker는 모든 MapReduce의 요청을 받는다
- JobTracker에 문제 발생시 MapReduce는 수행할 수 없다 ( Fail Point )
- JobTracker가 독점적으로 작업 수령 및 리소스 관리하여 SPOF 위험이 있다.
- SPOF (Single Point Of Failure) :
1곳에서 장애 발생
시 전 시스템이 중단
됨
클러스터 확장성
종류 |
최대치 |
단일 클러스터 |
4,000 |
동시 실행 테스크 |
40,000 |
리소스 관리
Slot으로 자원 관리하여 Mapper / Reducer의 자원을 효율적으로 사용하지 못 한다P
MapReduce가 아닌 다른 서비스로 인한 자원 영향 파악 불가
HADOOP2.x
Hadoop1 과 차이점
- JobTracker, TasksTracker의 역할을 Yarn으로 대체됨
- 완벽하게 동일한 기능은 아니지만 대다수 대체됨
- 등록가능 Node수 4000 -> 클러스터 당 10,000개 이상
- JobTracker -> ResourceManager
- TasksTracker -> Node Manager, Container(Slot대체?)
- Spark, Hive 등
M/R 이외의 분산 처리 모델 지원
Hadoop HA
대표적인 방법으로 2가지가 존재한다
- QJM
- Journal node를 이용한 HA구성
- NFS
- Nas를 이용하여 HA를 구성

NFS
Network File System
- 위 그림은 QJM구성인데, JN부분에 SS로 구성된다면 NFS라고 볼 수 있다.
- SS ( Shared Storage)
- NAS ( Network Attached Storeage) 의 묶음
- Namenode의 Journaling 정보를 Nas에 저장 후 동기화 시킴
- Network, Cpu 등의 문제로 Split Brain이 발생할 수 있다.
- Split Brain : Context Switch 시 동시에 접근하여 정보 불일치가 발생한는것
- 이곳에서는 Active Node의 정보가 충돌하여 Node의 정보 불일치
QJM
Quorum Journal Manager
상단의 그림이 QJM이다
- JN ( Jounal Node)
- Active NN 과 Standby NN간 동기화를 유지하기 위해 사용되는 Daemon 그룹
- Active NN 의 Journaling 정보를 지속적으로 기록한다
- journaling 정보 : 시스템 변경사항 (e.g Edit log)
- Failover시 Standby NN가 jounaling 정보를 읽었는지 확인 후 Active NN로 성격
- Quorum을 위해 홀수를 권장
- 서버 다운을 대비해 JN은 서로 다른 서버에 구성
공통
개인적으로 공부한 내용 포스팅 중
잘못된 정보는 지적해주시면 좋겠습니다!