Apach Hadoop
- Reliable Scalable하게 분산처리를 하기 위한 오픈소스 소프트웨어이다.
- Map-Reduce라는 데이터 처리 모델을 사용함으로써 여러 대의 컴퓨터를 통해 손쉽게 대규모 데이터를 처리한다.
- 분산 파일 시스템인 HDFS에 데이터를 저장하여 처리한다. (이런 방식은 Disk I/O에 의해 성능 저하를 유발하며, 추후에 In-memory 기반의 spark가 등장)
Hadoop에서 수행하는 역할은 크게 HDFS에 파일을 저장하는 역할과 데이터를 처리하는 역할로 나누어진다.
MapReduce : MapReduce를 수행하기 위한 Layer
- Job Tracker : 사용자로부터 Job을 요청받고 Task Tracker에 작업 할당
- Task Tracker : Job Tracker로부터 할당 받은 작업을 Map-Reduce하여 결과 반환.
HDFS : 파일을 저장하기 위한 Layer
- Namenode : 작업을 해야하는 파일을 block으로 나누어 datanode에 전달
- datanode : 전달받은 파일의 읽기/쓰기 등을 실제로 수행
Hadoop은 기본적으로 Master-Slave 구조를 지니며, Master 노드는 1대의 노드로 구성된다.
- Master Node : 분산 파일 시스템에 대한 정보들을 지니고 있으며, 자원 할당을 조절한다. Master Node는 2가지 Daemon을 통해 이를 처리한다.
- Namenode : 분산 파일 시스템을 관리하고, 어떤 Data block이 클러스터에 저장되어 있는지 알려준다.
- Resource manager : 스케줄링 및 slave node의 처리를 실행한다.
- Slave node : 실제 데이터를 가지고 있으며, job을 수행하는데 datanode와 node manager를 통해 이를 처리한다.
- Datanode : Namenode에 물리적으로 저장된 실제 데이터를 관리한다.
- Node manager : 노드의 task를 실행한다.