-
하둡 hdfs 정리카테고리 없음 2025. 2. 15. 16:39
하둡의 내부 설계까지는 아니더라도 사용자 입장에서 인지해야 할 핵심 개념에 대해 정리하고,
실제로 어떤 효용을 주는지까지 정리해본다.
1. HDFS
Hadoop Distributed File System (분산 파일 시스템)
전통적인 파일 시스템과 유사한 계층을 가지지만, 실제 데이터가 저장되는 물리 머신(노드)은 여러 대로 분산되어 있음.
여러 대로 분산하여 구성할 수 있기 때문에 대량의 데이터를 저장할 수 있음. 동적으로 새로운 노드를 추가할 수도 있음.
(단일 서버 스토리지에는 한계가 있는데 빅데이터를 어떻게 저장하지? -> 분산 저장하자)
주요 컴포넌트는 네임노드, 데이터노드가 있음.
네임노드는 메타데이터를 관리하는 중앙서버 역할
데이터노드는 실제 데이터를 저장하는 노드. 파일을 일정 크기(기본 128MB)의 블록 단위로 쪼개서 여러 데이터 노드에 저장함.
기본적으로 각 블록을 3개(기본값)로 복제하여 저장하여 내결함성을 보장함. 복제는 여러 노드에 분산하여 이루어짐.
2. 맵리듀스(MapReduce)
맵리듀스는 대량의 데이터를 분산 병렬 처리하기 위한 프레임워크
(분산된 대량의 데이터를 어떻게 빠르게 처리하지? -> 분산 처리하자)
(1) Map
데이터를 (key, value) 쌍으로 변환하여 병럴 처리 하는 단계.
(2) Shuffle & Sort (하둡에서 자동으로 수행)
Map 단계가 여러 곳에서 수행되기 때문에 같은 키, 값이 여러 개 있을 수 있기 때문에같은 키를 가진 값들을 한 곳으로 모으는 과정을 수행함.
셔플은 리듀서로 보내는 네트워크 과정에서 섞인다는 의미에서 붙은 개념 .
정렬은 중간 결과를 효율적으로 병합하기 위해 필요. (내부적으로 이분탐색 같은 처리가 이뤄지는 걸로 추측)
(3) Reduce
한 곳으로 모여 그룹화가 된 데이터를 사용해서 최종 결과를 생성하는 단계.
여러 개의 값을 하나로 줄인다.
예시 - 단어 빈도 계산
1. (Key, Value) 쌍 생성
입력 데이터: "Hello Hadoop" "Hello MapReduce" Map 단계에서 생성된 결과: ("Hello", 1) ("Hadoop", 1) ("Hello", 1) ("MapReduce", 1)2. 같은 키의 값을 한 곳으로 모음
Shuffle 결과: ("Hello", [1, 1]) ("Hadoop", [1]) ("MapReduce", [1])3. 같은 키의 값을 하나로 합침
Reduce 결과: ("Hello", 2) ("Hadoop", 1) ("MapReduce", 1)+
실제로 어떻게 사용될까?
예를 들어 모든 페이지별로 접속한 개별 로그 데이터를 hdfs에 날짜별로 쌓고, 그 개별 데이터를 사용해서 특정 페이지의 날짜별 접속 통계 데이터를 내고 싶다고 해보자.hdfs에 저장된 데이터
2025-03-01 /home user1 2025-03-01 /about user2 2025-03-01 /home user3 2025-03-02 /home user4 2025-03-02 /about user5목표 출력
2025-03-01 2 2025-03-02 1--
1. Map 단계
("2025-03-01", "/home") → 1 ("2025-03-01", "/about") → 1 ("2025-03-01", "/home") → 1 ("2025-03-02", "/home") → 1 ("2025-03-02", "/about") → 12. Shuffle & Sort 단계
("2025-03-01", "/home") → [1, 1] ("2025-03-01", "/about") → [1] ("2025-03-02", "/home") → [1] ("2025-03-02", "/about") → [1]3. Reduce 단계
같은 Key를 가진 데이터를 모아서 접속 횟수를 집계.
("2025-03-01", "/home") → 2 ("2025-03-01", "/about") → 1 ("2025-03-02", "/home") → 1 ("2025-03-02", "/about") → 1만약 특정 페이지만 원한다면 /home로 필터링 가능.
2025-03-01 2 2025-03-02 1정리)
1. hdfs는 분산 파일 시스템. 대규모 데이터를 편리하고 안전하게 저장하고 관리하기 위한
2. 맵리듀스는 분산 데이터 처리 모델. 분산 저장된 데이터를 빠르게 처리하기 위한