Hadoop이란?
Apache Hadoop은 여러 컴퓨터 클러스터에서 대용량 데이터 세트를 분산 처리할 수 있는 프레임워크입니다. 단일 서버에서 수천 대의 머신까지 확장 가능하도록 설계되었으며, 각 머신은 로컬 연산 및 스토리지를 제공합니다. 고가용성을 제공하기 위해 하드웨어에 의존하는 대신, 라이브러리 자체가 애플리케이션 계층에서 장애를 감지하고 처리하도록 설계되어 장애 발생 가능성이 높은 여러 컴퓨터 클러스터를 기반으로 고가용성 서비스를 제공합니다.
Hadoop 사용 이유
Hadoop을 사용하는 이유는 크게 3가지 장점 때문입니다.
1. 확장성 - 기존 시스템은 데이터 스토리지를 제한하지만, 하둡은 분산형 환경에서 작동하기 때문에 확장할 수 있습니다. 이 때문에 데이터 설계자가 하둡에서 일찍부터 데이터 레이크를 구축할 수 있습니다.
2. 복원력 - HDFS(Hadoop Distributed File System)는 근본적으로 복원력이 있습니다. 하둡 클러스터 내 노드에 저장된 데이터는 클러스터의 다른 노드에도 복제되어 하드웨어나 소프트웨어 오류 가능성에 대비합니다. 이러한 의도적인 중복 설계 덕분에 내결함성이 보장됩니다. 노드 한 개가 다운되더라도 클러스터 내에 항상 그 데이터의 백업본이 준비됩니다.
3. 유연성 - 기존 관계형 데이터베이스 관리 시스템과는 달리, 하둡을 다룰 때는 형식에 구애받지 않고 데이터를 저장할 수 있습니다. 반구조적, 비구조적 형식도 마찬가지입니다. 하둡을 이용하면 기업에서 새로운 데이터 소스에 손쉽게 엑세스하여 여러 가지 유형을 활용할 수 있습니다.
HDFS
HDFS(Hadoop Distributed File System)는 Hadoop 애플리케이션에서 사용하는 기본 스토리지 시스템입니다. 이 오픈 소스 프레임워크는 노드 사이에 데이터를 고속으로 전송하며 주로 빅데이터를 처리하고 저장해야 하는 기업이 사용하는 경우가 많습니다. HDFS는 빅데이터를 관리하고 빅데이터 분석을 지원하는 수단을 제공하기 때문에 많은 하둡 시스템의 핵심 구성 요소입니다.
HDFS의 목적
HDFS의 목적은 다음을 달성하는 것입니다.
1. 대규모 데이터세트 관리 - 데이터세트의 구성과 저장은 처리하기 어려울 수 있습니다. HDFS는 대규모 데이터세트를 처리해야 하는 애플리케이션을 관리하는 데 사용되는데 그러려면 HDFS는 클러스터당 수백 개의 노드를 보유해야 합니다.
2. 결함 감지 - HDFS에는 많은 상용 하드웨어가 있으므로 결함을 빠르고 효과적으로 스캔하고 감지할 수 있는 기술이 있어야 합니다. 구성 요소의 장애는 일반적인 문제입니다.
3. 하드웨어 효율성 - 대규모 데이터세트가 관련된 경우 네트워크 트래픽을 줄이고 처리 속도를 높일 수 있습니다.
MapReduce
MapReduce는 여러 노드에 태스크를 분배하는 방법으로 각 노드 프로세스 데이터는 가능한 경우, 해당 노드에 저장됩니다. MapReduce는 Hadoop 클러스터의 데이터를 처리하기 위한 시스템으로 총 2개(Map, Reduce)의 phase로 구성됩니다. Map과 Reduce 사이에는 shuffle과 sort라는 스테이지가 존재합니다. 각 Map task는 전체 데이터 셋에 대해서 별개의 부분에 대한 작업을 수행하게 되는데, 기본적으로 하나의 HDFS block을 대상으로 수행하게 됩니다. 모든 Map 태스크가 종료되면, MapReduce 시스템은 intermediate 데이터를 Reduce phase를 수행할 노드로 분산하여 전송합니다.
MapReduce의 장점
1. 탄력적인 유연성 - MapReduce는 다른 모델보다 훨씬 느리지만, 유연성이 뛰어나 빠르게 확장하거나 더 많은 컴퓨터 노드를 할당하여 컴퓨팅 시간을 단축할 수 있다는 것이 주요 장점입니다. MapReduce는 데이터 자체를 이동하는 대신 데이터 근처에서 프로세스를 실행할 수 있는 기능과 분산 파일 시스템 덕분에 수천 개의 노드에 걸쳐 확장할 수 있습니다. 확장성은 증가하는 데이터 볼륨을 저장하고 처리하는 비용을 줄여줍니다.
2. 병렬 처리 - MapReduce 사용 시 병렬화, 데이터 배포 또는 기타 복잡한 코딩 작업을 위한 코드가 이미 모델에 내장되어 있어 개발자가 이를 새로 작성할 필요가 없습니다. 이것만으로도 분석을 위한 프로그래밍 시간이 단축됩니다.
3. 구조화되지 않은 데이터 지원 - 생성된 데이터의 대부분이 구조화되지 않은 데이터이기 때문에 MapReduce가 모든 유형의 데이터 구조를 지원할 수 있다는 점은 엔터프라이즈가 데이터를 훨씬 더 효과적으로 분석하는 데 도움이 됩니다.
4. 내결함성 - MapReduce는 여러 컴퓨터와 서버에 데이터를 분산시켜서 운영하기 때문에 시스템 중단을 유발하는 하드웨어 장애에 덜 취약합니다. MapReduce는 전체 데이터 세트를 네트워크의 각 노드로 전송하며, 한 노드나 하드웨어 일부에 장애가 발생할 경우 모든 데이터가 자동으로 저장되고 복구됩니다.
YARN
YARN은 Yet Another Resource Negotiator의 줄임말로 번역하면 "(또 다른) 리소스 협상가"라는 뜻입니다. 즉, CPU memory와 같은 하둡 클러스터 리소스를 관리하고 스케쥴링하는 hadoop의 컴포넌트이다.
YARN의 장점
자원 관리와 작업 스케줄링을 분리하여, 더 유연하고 확장성 있는 아키텍처를 제공합니다. 리소스 매니저는 클러스터 전체의 자원을 효율적으로 관리하고, 애플리케이션 마스터는 애플리케이션 별로 자신의 로직을 수행할 수 있습니다.
맵리듀스 외에도 다양한 종류의 분산 애플리케이션을 지원합니다. 예를 들어, 스파크(Spark), 플링크(Flink), 스톰(Storm), 테즈(Tez) 등의 프레임워크를 Yarn 위에서 실행할 수 있습니다.
컨테이너라는 추상화 단위를 통해, 다양한 자원 요소(CPU, 메모리, 디스크, 네트워크 등)를 고려하여 자원을 할당할 수 있습니다. 또한, 노드 레이블(Node Label)이나 노드 속성(Node Attribute) 등의 기능을 통해, 특정 조건에 맞는 노드에만 자원을 할당할 수 있습니다.
리소스 예약 시스템(Reservation System)이라는 컴포넌트를 통해, 중요한 작업에 대해 자원을 미리 예약하고 보장받을 수 있습니다. 예약 시스템은 작업의 자원 프로파일과 시간 제약 조건을 고려하여 자원을 예약하고, 스케줄러에게 동적으로 지시하여 예약된 자원을 할당합니다.
'공부 > 데이터 엔지니어' 카테고리의 다른 글
Apache Airflow (0) | 2025.06.10 |
---|---|
Apache Kafka (1) | 2025.06.10 |