1. 분산 파일 시스템(DFS) 개요

- 분산 파일 시스템(GFS, HDFS, Lustre 등)
- 클러스터(Cluster)
- 데이터베이스(Cluster DB, MPP 등)
- NoSQL
✅ 분산 파일 시스템(Distributed File System)[📌암기]
- 대용량 파일을 여러 서버(노드)에 분산 저장하고
- 사용자는 이를 마치 하나의 파일 시스템처럼 쓰게 해주는 구조
1-2. GFS (Google File System)[📌암기]
구글이 대용량 데이터 처리를 위해 설계한 분산 파일 시스템.
✅ 핵심 전제(가정)
- 저가형 서버 사용 → 고장 빈번(노드 수 많고 파일도 큼)
- 쓰기(write)는 주로 순차적, 갱신(update)은 별로 없음
- 낮은 지연시간보다 높은 처리량(throughput) 이 중요
✅ 청크(Chunk) 구조
- 고정 크기 청크(기본 64MB) 가 저장 단위
- 파일을 여러 청크로 나눠 저장하고 각 청크는:
- 여러 개 복제본(replica) 생성
- 여러 청크 서버에 분산 저장
- 청크는 유일 식별자로 구분(마스터가 생성/삭제 관리)
✅ 구성 요소
- Client: GFS 라이브러리로 파일 접근
- Master(마스터 노드): 메타데이터 관리(데이터는 저장 X)
- Chunk Server(청크 서버): 실제 데이터 저장(복제 저장)
📌 통신 포인트
- 메타정보는 Master와 통신
- 실제 데이터는 Chunk Server와 직접 통신
1-3. HDFS (Hadoop Distributed File System)[📌암기]
HDFS는 Hadoop 생태계에서 대용량 데이터를 저장하기 위한 대표 DFS
- NameNode(네임노드): 메타데이터 관리(마스터), 시스템 상태 모니터링
- DataNode(데이터노드): 실제 데이터 저장/입출력 처리(슬레이브)
- 보통 3중 복제(replication factor=3) 로 데이터 유실 방지
- Secondary NameNode(보조 네임노드): 네임노드 상태/체크포인트 보조
✅ 특징(시험 키워드)
- 한 번 쓰이면 변경되지 않는다고 가정(Write once, read many)
- 순차적 스트리밍 방식 → 배치 작업에 적합
- 높은 처리량 중심
✅ HDFS 파일 저장(Write) 과정
- 클라이언트가 파일을 여러 블록으로 분할
- 네임노드에게 “어느 데이터노드에 저장할지” 위치를 받음
- 클라이언트 → 1번 DataNode로 전송
- 1번이 저장 후 → 2번으로 전달, 2번도 저장 후 → 3번으로 전달(복제 체인)
- 각 노드가 저장 완료 ACK를 순차적으로 클라이언트에 전달
- 모든 블록이 끝날 때까지 반복
✅ HDFS 파일 읽기(Read) 과정
- 클라이언트가 네임노드에 파일 정보 요청
- 네임노드가 블록 목록 + 블록이 있는 데이터노드 위치 반환
- 클라이언트가 해당 데이터노드로 직접 가서 읽음
1. 분산 파일 시스템(DFS) 개요_②

1-4. Lustre (러스터)
고속 네트워크 기반의 객체(Object) 기반 클러스터 파일 시스템으로 HPC(고성능 컴퓨팅) 환경에서 자주 언급됩니다.
✅ 구성 요소
- Client Node: 로컬 디스크처럼 마운트해서 사용
- Metadata Server(MDS): 파일 메타데이터(구조/위치) 관리, 데이터 저장 X
- Object Storage Server(OSS): 실제 데이터 저장
✅ 특징
- 클라이언트에서 메타데이터 변경에 대한 갱신 레코드 생성
- 메타데이터/데이터 동시성 제어를 위해 별도 잠금(lock) 사용
- 트래픽 최소화를 위해 인텐트 기반 잠금 프로토콜 사용(의도를 함께 전달)
1-5. 데이터베이스 클러스터 & 파티셔닝 효과
✅ DB 클러스터: 하나의 DB를 여러 서버에 구축해 운영하는 방식
✅ 파티셔닝/샤딩: 데이터를 여러 조각으로 분할해 노드에 분산 배치
✅ 파티셔닝 효과[📌암기]
- 고가용성: 한 노드 장애에도 다른 노드로 서비스 지속
- 병렬처리: 검색/처리 속도 향상
- 성능 향상: 노드 추가 시 선형 증가(Scale-out 기대)
1-6. 공유 디스크 vs 무공유 디스크[📌암기]
| 구분 | 공유디스크 | 무공유디스크 |
| 디스크 구조 | 여러 노드가 공통 디스크 풀 사용 | 각 노드가 자신의 디스크만 사용 |
| 데이터 위치 | 논리적으로 단일 저장소 | 노드별로 분산 저장(샤딩/파티셔닝) |
| 대표 예 | Oracle RAC 등 | MPP DB, NoSQL, Hadoop/HDFS |
| 확장 방식 | 공통 스토리지가 병목되기 쉬움 | **수평 확장(Scale-out)**에 유리 |
| 병목 | 스토리지/스토리지 네트워크 병목 | 노드 추가로 병목 완화 가능 |
| 장애 처리 | 비교적 단순(다른 노드가 같은 디스크 접근) | 복제/레플리카 설계 필요 |
| 쿼리 처리 | 동시 접근 많아 락/일관성 중요 | 병렬 처리 유리(교차 조인은 비용↑) |
✅ 공유 디스크 요약
- 각 노드는 CPU/메모리/네크워크 독립, 디스크는 공유
- SAN 같은 스토리지 네트워크 필요
- 장점: 모든 노드가 데이터 수정 가능 , 장애 처리 단순, 폴트 톨러런스 강함
- 단점: 규모 커질수록 I/O 병목, 수평 확장 한계
✅ 무공유 디스크 요약
- 각 노드가 CPU/메모리/디스크 모두 독립(자원 공유 없음)
- 장점: 확장성 최고, 병렬 처리 유리
- 단점: 데이터 분산 설계 복잡, 노드 간 조인/집계 비용↑, 장애 대비 복제 설계 필요
- (시험용 문장) Oracle RAC 제외 대부분 무공유 방식 채택
1. 분산 파일 시스템(DFS) 개요_③

1-7. 데이터베이스 클러스터 종류
1) Oracle RAC
- 공유 디스크 기반으로 데이터는 공유 스토리지에 저장됨
- 모든 노드가 모든 테이블에 동등 접근(데이터 “소유” 개념 없음)
- 장점: 가용성, 확장성(노드 다수), 확장성, 비용 절감(관점에 따라)
2) IBM DB2 ICE
- 무공유 방식 클러스터링
- 특정 노드 장애 시 페일오버 메커니즘 필요 → 실무에서는 가용성 위해 공유디스크 방식도 고려
3) Microsoft SQL Server
- 연합 DB 형태로 확장 가능
- 페일오버 제공, 보통 Active-Standby 방식 활용
4) MySQL Cluster(대표적으로 NDB)
- 비공유형(메모리 기반 중심, 최근엔 디스크도 일부)
- 구성: 관리노드 / 데이터노드 / MySQL 노드
- 복제로 가용성 확보
- (필기 키워드) 참여 노드 수 제한(255), 데이터 노드는 최대 48개, 운영 중 노드 추가/삭제 제약 등
1-8. NoSQL 정리[📌암기]
✅ NoSQL(비관계형 DB)
- 데이터 증가 + 구조 다양화로 등장
- 스키마가 유연하고(예: JSON), 수평 확장에 강함
- 모델: Key-Value / Document / Graph / Column
✅ 특징 요약
- Key-Value 형태 저장, 스키마 없이 동작 가능
- 대용량 처리 + 대규모 Scale-out 지향
✅ 대표 시스템
1) Google Bigtable (컬럼 패밀리 계열)
- 공유 디스크 방식, Row-Key 기준 사전식 정렬 저장
- 동일 Column에 대해 타임스탬프 버전 관리 가능
- Rowkey+Column-Key+Timestamp, 페일오버, Chubby : 장애발생불가
2) Amazon SimpleDB
- 구성: Domain / Item / Attribute / Value
- Domain = 테이블
- Item = 레코드
- Attribute = 컬럼(여러 값 저장 가능)
3) Apache HBase
- HDFS 기반 컬럼 지향 분산 DB
- 관계형 구조 아님, SQL 기본 미지원
- 노드 추가 시 선형 확장에 유리(큰 테이블에 적합)
4) Microsoft SSDS
- 컨테이너/엔티티 기반(필기 키워드 수준)
2. 분산 컴퓨팅 기술: MapReduce[📌암기]

✅ MapReduce란?
- 구글이 대용량 데이터를 분산 병렬 처리하기 위해 만든 프레임워크
- 핵심 아이디어: 분할정복 + 병렬처리
2-1. Hadoop MapReduce
- NameNode: HDFS 메타데이터(마스터역할)
- DataNode: HDFS 데이터 저장/입출력 수행
- JobTracker: Job 관리 마스터
- TaskTracker: 실제 작업 수행 워커(슬레이브)
- TaskTracker는 JobTracker에게 주기적으로 하트비트 전송(생존/상태 보고)
✅ 처리 흐름[📌암기]
input → split → mapping → combine → shuffling → sorting → reducing → output
- split: FileSplit 1개당 Map Task 1개 생성
- mapping: Key-Value 쌍 생성
- shuffling/sorting: 같은 Key를 모아 Reduce로 전달(그룹핑/정렬)
✅ 하둡의 성능
- Map → Reduce 넘어가는 과정에서 정렬(sort)은 내부적으로 항상 발생
- 데이터가 커질수록 sort 비용이 커져 처리 시간이 선형적으로 증가할 수 있음
2-2. Google MapReduce
- Map 단계: 입력(Key, Value) → 중간 결과 생성
- Map은 Key-Value 쌍을 입력
- 각 입력 레코드는 사용자가 정의한 Map 함수를 거치며, 하나의 (Key, Value)가 여러 개의 새로운 (Key, Value) 로 변환
- Map 결과(중간 데이터)는 로컬 파일 시스템에 임시 저장
- Shuffle/Sort: Reduce로 보내기 전에 자동 정리
- Shuffling: 같은 Key끼리 모이도록 Reduce 쪽으로 데이터를 재분배
- Sorting / Group By: Key 기준으로 정렬하고 그룹화
- (Key, Value 리스트)
예) (A, [1,1,1,1]), (B, [1,1,1])
- Reduce 단계: (Key, Value 리스트) → 최종 결과 생성
- 동일 Key에 대한 값 목록을 받아 사용자가 정의한 Reduce 함수로 집계/요약/결합 처리 후
- 최종 결과를 출력
✅ 폴트 톨러런스 : 각 프로세스가 Master에게 Task 진행 상태를 주기적으로 보고
3. 병렬 쿼리 시스템 & SQL on Hadoop[📌암기]

3-1. 병렬 쿼리 시스템
MapReduce는 강력하지만 “직접 코딩” 부담이 큼 → 이를 보완하려고 등장
- Google Sawzall: MapReduce를 추상화한 스크립트 형태 언어
- Apache Pig: 고차원 데이터 처리 언어(Pig Latin)
- Apache Hive: SQL 유사(HiveQL), MapReduce 기능 활용 가능
3-2. SQL on Hadoop
- 하둡에 저장된 대용량 데이터를 대화형 SQL 질의로 분석하려는 기술
- “실시간 처리” 관점에서 하둡의 제약을 보완하려는 시도
✅ Impala
- 비교적 초기에 고안
- 맵리듀스 사용 X, C++ 기반
- 분석 중심이지만 (필기 표현상) 트랜잭션/분석 지원 언급
- 구성 요소(키워드): 클라이언트 / 메타스토어 / 임팔라 데몬 / 스테이트 스토어 / 스토리지
✅ 마무리: 시험용 키워드 체크
- DFS: GFS(Chunk 64MB, Master/ChunkServer) / HDFS(NameNode/DataNode, 3중 복제, 스트리밍/배치)
- 클러스터: 공유디스크 vs 무공유디스크 차이(병목/확장/장애처리)
- NoSQL: 모델 4종 + Bigtable/HBase/SimpleDB
- MapReduce: split→map→shuffle/sort→reduce + (하둡 구성 요소)
- SQL on Hadoop: Impala(맵리듀스 X)
'Study Log > ADP' 카테고리의 다른 글
| [ADP 필기 요약]_3과목 데이터 분석 기획_① (0) | 2026.02.19 |
|---|---|
| [ADP 필기 요약]_2과목 데이터 처리 기술 이해_⑤ (0) | 2026.02.17 |
| [ADP 필기 요약]_2과목 데이터 처리 기술 이해_③ (1) | 2026.02.11 |
| [ADP 필기 요약]_2과목 데이터 처리 기술 이해_② (0) | 2026.02.05 |
| [ADP 필기 요약]_2과목 데이터 처리 기술 이해_① (0) | 2026.02.05 |