하둡(Hadoop)
하둡은 대용량 데이터 처리를 위한 오픈 소스 분산 처리 프레임워크입니다.
Apache 하둡 프로젝트에서 개발되었으며, 대규모 데이터를 안정적으로 처리하고 저장할 수 있는 플랫폼으로 널리 사용됩니다.
하둡의 주요 구성 요소는 다음과 같습니다
Hadoop Distributed File System (HDFS)
대용량 파일을 저장하기 위한 분산 파일 시스템으로, 여러 대의 컴퓨터에 데이터를 분산하여 저장합니다.
MapReduce
분산 데이터 처리를 위한 프로그래밍 모델로, 대규모 데이터를 여러 단계로 나누어 처리하고 결과를 병합합니다.
YARN (Yet Another Resource Negotiator)
클러스터 자원 관리 시스템으로, 하둡 클러스터의 자원을 효율적으로 관리하고 작업을 스케줄링합니다.
Hadoop Common
하둡 프로젝트의 핵심 라이브러리와 유틸리티를 제공하는 모듈입니다.
Hadoop Eco-system
Hadoop을 확장하여 다양한 기능을 제공하는 다양한 생태계 프로젝트가 있습니다. 예를 들어, Apache Hive는 데이터 웨어하우스 솔루션으로서 SQL 쿼리를 Hadoop에서 실행할 수 있게 해주고, Apache Spark는 빠른 대화형 및 일괄 처리를 위한 분산 컴퓨팅 엔진입니다.
하둡은 대용량 데이터의 저장, 처리, 분석 등 다양한 용도로 활용되며, 대규모 분산 시스템의 구축 및 관리를 단순화하는 데 큰 기여를 하고 있습니다.
NameNode
분산 파일 시스템인 Hadoop Distributed File System (HDFS)에서 중심적인 역할을 합니다.
Hadoop의 NameNode는 Hadoop Distributed File System(HDFS)의 핵심 구성 요소 중 하나입니다. HDFS는 분산 파일 시스템으로, 대규모 데이터를 저장하고 처리하는 데 사용됩니다. HDFS는 주로 두 가지 유형의 노드로 구성되며, 그 중 하나가 NameNode입니다. NameNode는 다음과 같은 중요한 역할을 합니다:
1. **메타데이터 관리**: NameNode는 HDFS의 파일 시스템 메타데이터를 관리합니다. 이는 파일 시스템 트리의 구조, 파일 및 디렉토리의 이름, 파일의 블록 위치와 같은 정보를 포함합니다.
2. **파일 시스템 트리 유지**: NameNode는 HDFS의 디렉토리 트리 구조를 유지하고 파일과 디렉토리의 생성, 삭제, 이름 변경 등의 작업을 처리합니다.
3. **데이터 노드 관리**: NameNode는 DataNode와의 상호작용을 관리합니다. DataNode는 실제 데이터를 저장하는 노드이며, NameNode는 DataNode의 상태를 모니터링하고 데이터의 복제 및 블록 할당을 관리합니다.
4. **클라이언트 요청 처리**: 클라이언트가 파일을 읽거나 쓸 때, NameNode는 파일의 블록 위치를 클라이언트에게 제공하여 데이터를 읽거나 쓸 수 있도록 합니다.
요약하자면, NameNode는 HDFS에서 파일 시스템의 네임스페이스와 메타데이터를 관리하는 중심 역할을 하며, 데이터의 저장과 접근을 효율적으로 관리하는 데 필수적인 구성 요소입니다.
JobTracker
MapReduce 프레임워크의 핵심 구성 요소로, 분산된 데이터를 처리하는 작업을 관리합니다. 하둡 1.x 버전에서 사용되며, 하둡 2.x부터는 YARN (Yet Another Resource Negotiator)으로 대체되었습니다. JobTracker의 주요 기능은 다음과 같습니다:
1. **작업 스케줄링**: JobTracker는 클라이언트로부터 제출된 MapReduce 작업을 받아서 작업을 여러 개의 태스크로 나누고, 각 태스크를 수행할 TaskTracker 노드에 할당합니다.
2. **자원 관리**: 클러스터의 전체 자원을 관리하고, 각 TaskTracker 노드의 상태를 모니터링합니다. 이를 통해 작업이 효율적으로 실행되도록 자원을 분배합니다.
3. **작업 모니터링 및 장애 복구**: JobTracker는 각 TaskTracker 노드에서 실행되는 태스크의 진행 상황을 모니터링합니다. 만약 태스크가 실패하면, JobTracker는 해당 태스크를 다른 TaskTracker 노드에서 재실행합니다.
4. **결과 수집**: 작업이 완료되면 JobTracker는 모든 태스크의 결과를 수집하고, 최종 결과를 클라이언트에 반환합니다.
### 동작 과정
1. **작업 제출**: 클라이언트가 MapReduce 작업을 JobTracker에 제출합니다.
2. **작업 분할**: JobTracker는 작업을 여러 개의 Map과 Reduce 태스크로 분할합니다.
3. **태스크 할당**: JobTracker는 각 태스크를 실행할 TaskTracker 노드에 할당합니다.
4. **모니터링**: JobTracker는 각 TaskTracker로부터 주기적으로 하트비트를 받아 태스크의 진행 상황을 모니터링합니다.
5. **장애 복구**: 태스크가 실패하면 JobTracker는 해당 태스크를 다른 TaskTracker에서 재실행합니다.
6. **작업 완료**: 모든 태스크가 완료되면 JobTracker는 최종 결과를 클라이언트에 반환합니다.
### 하둡 2.x 및 이후 버전의 변화
하둡 2.x부터는 JobTracker와 TaskTracker가 ResourceManager와 NodeManager로 대체되었습니다. ResourceManager는 클러스터 자원을 관리하고, NodeManager는 각 노드의 자원 사용을 관리합니다. 이로 인해 자원 관리와 작업 스케줄링이 더 효율적으로 이루어지게 되었습니다.
요약하면, JobTracker는 하둡 1.x에서 MapReduce 작업의 스케줄링, 자원 관리, 모니터링, 장애 복구 등을 담당하는 중앙 관리 시스템입니다. 하둡 2.x 이후부터는 YARN이 이러한 역할을 대체합니다.
JournalNode
HDFS (Hadoop Distributed File System)에서 고가용성(High Availability)을 구현하기 위해 사용되는 구성 요소입니다. 특히 NameNode의 고가용성을 보장하는데 중요한 역할을 합니다. 고가용성 설정에서 두 개의 NameNode(Active와 Standby)가 존재하고, 이들이 서로 상태를 동기화하는데 JournalNode가 핵심적인 역할을 합니다.
### 주요 기능
1. **편집 로그 저장**: Active NameNode는 파일 시스템 메타데이터 변경 사항을 JournalNode에 기록합니다. 이 변경 사항을 '편집 로그(Edit Log)'라고 합니다.
2. **동기화 보장**: Standby NameNode는 주기적으로 JournalNode에서 편집 로그를 읽어와서 자신의 상태를 Active NameNode와 동기화합니다. 이를 통해 Standby NameNode는 언제든지 Active NameNode를 대체할 준비가 되어 있습니다.
3. **데이터 일관성 유지**: 여러 JournalNode를 통해 로그를 기록하고 동기화함으로써, 시스템 장애 시에도 데이터 일관성을 유지할 수 있습니다.
ApplicationMaster
하둡(Hadoop)에서 ApplicationMaster는 YARN (Yet Another Resource Negotiator) 프레임워크의 중요한 구성 요소로, 각 애플리케이션의 실행을 관리하고 조정하는 역할을 합니다.
YARN은 하둡 2.x부터 도입된 리소스 관리 시스템으로, 하둡 에코시스템에서 다양한 애플리케이션을 효율적으로 실행할 수 있도록 지원합니다.
### 주요 역할과 기능
1. **리소스 협상**: ApplicationMaster는 ResourceManager와 협상하여 애플리케이션이 실행될 자원을 요청하고 할당받습니다. 이 자원은 CPU, 메모리 등 여러 리소스를 포함합니다.
2. **태스크 스케줄링 및 실행**: ApplicationMaster는 애플리케이션의 태스크를 스케줄링하고 실행을 관리합니다. 각 태스크는 컨테이너(Container) 내에서 실행되며, ApplicationMaster는 이러한 컨테이너의 생명 주기를 관리합니다.
3. **진행 상황 모니터링**: ApplicationMaster는 각 태스크의 상태를 모니터링하고, 진행 상황을 ResourceManager와 협력하여 보고합니다. 문제가 발생하면, ApplicationMaster는 실패한 태스크를 다시 실행하거나 다른 노드에서 재시작할 수 있습니다.
4. **장애 처리 및 복구**: 애플리케이션 실행 중 문제가 발생하면 ApplicationMaster는 이를 처리하고 필요한 경우 재실행을 통해 복구합니다. 이 과정에서 ResourceManager와 협력하여 안정적인 실행을 보장합니다.
'빅데이터' 카테고리의 다른 글
[빅데이터] HBase 설치 및 사용 방법 (0) | 2024.06.12 |
---|---|
[빅데이터] VirtualBox 서버 백업 (0) | 2024.06.11 |
[빅데이터] 카프카(kafka) 설치 및 사용 (0) | 2024.06.11 |
[빅데이터] jar 파일을 이용한 데이터 처리 및 플럼 설치 (4) | 2024.06.11 |
[빅데이터] 데이터 파일 업로드 및 시스템 검사. (0) | 2024.06.11 |