[Spark] Hadoop 발전 과정

하둡 1.0

HDFS 위에 MapReduce라는 분산컴퓨팅 시스템이 도는 구조

 

피그스 판다스 데이터 프레임과 비슷, 더이상 사용하지 않음 --- 프레임워크

HIVE, presto SQL 언어 

--- 

MapReduce Map/ Reduce라는 두개의 operatrion만 사용 가능 데이터 처리 ---분산 처리 시스템

---

HDFS 데이터 저장---분산 파일 시스템

 

 

하둡 2.0

MapReduce/ Spark/ Tez ... ---데이터 처리,  Application Layer, 맵리듀스가 애플리케이션 형태로 올라감

---

YARN(하둡 2.0/3.0에서의 분산 컴퓨팅 시스템 이름)  조금 더 general한 컴퓨터 프레임워크  --- Resource Management Layer 

---

HDFS2 ---Storage Layer 

 

HDFS 분산파일시스템

하나의 큰 데이터를 블록 단위로 나눠서 저장

블록의 크기 디폴트 값 128MB

다수의 서버에 나눠서 저장

어떤 서버가 고장난다면 그 서버에 저장된 데이터는 유실? --- Replication Factor

한 데이터 블럭을 적어도 3개의 서버에 중복해서 저장

3개의 서버의 동시에 고장이 나지 않는 한, 복구 가능 --- 데이터 유실 최소화(Fault tolerance 보장)

데이터 노드 = slave 는 다수의 서버로 구성, 데이터 블록 저장

네임 노드= master 디렉토리라고 보면 됨 어느 데이터가 어떤 노드에 저장되어있는지 등 알고 있음

네임 노드가 가지고 있는 정보가 중요하기 때문에 데이터 노드가 다 살아있어도 네임노드가 죽으면 소용없음 --- 네임노드 이중화 필요(High Avaliability 구성)

- Secondary 네임노드 존재(자동으로 업데이트 x)

- 주기적으로 복제, 하둡 2.0부터 Active & Standby 네임노드 방식으로 운영하는 이중화 구성

 

MapReduce 분산 컴퓨팅 시스템

하둡 1.0에서 하나의 잡 트래커(master)와 다수의 태스크 트래커(slave)로 구성,

MapReduce만 지원한다는 단점 (비효율성) 그래서 피그, Hive, Presto등을 올려서 사용

데이터파일시스템, 데이터처리시스템 동시에 역할?

 

하둡2.0(YARN 1.0)

MapReduce라는 고정된 형태의 분산컴퓨팅 시스템 대신에 범용적인 분산 컴퓨팅 시스템(YARN, 범용컴퓨팅프레임워크)이 있고 그 위에 개발자들이 원한다면

새로운 형태의 분산 처리 시스템을 만들 어서 사용할 수 있음

맵리듀스 말고 범용적 지원

하나의 리소스매니저(master)와 다수의 노드매니저(slave)

리소스 매니저는 Job Scheduler, Application Manager라는 두가지 데몬이 존재

slave마다 노드매니저 설치.

리소스 매니저에 요구에 따라 자원을 넘겨줌

노드매니저가 가지고 있는 자원? 컨테이너(자바의 경우 JVM으로 이해)

컨테이너는 두종류의 프로세스 지원( 앱마스터(특별한 형태의 컨테이너), 테스크)

Spark, MapReduce가 이 위에서 구현됨