책&스터디

[하둡 완벽 가이드] - PART01 1장 정리

jyu_seo_ 2026. 2. 10. 23:29

 

하둡완벽가이드 part1,2를 중점으로 좀더 깊이있게 공부하고 정리하는 개념으로 내가 모르던 언어 단어 그리고 해석을 통해서 공부하고 얻는것들 그리고 꼬리질문을 통해서 좀더 깊이있는 공부를 하고싶어서 정리본을 요약하려 한다.

Part1 -  1장 정리

1.디스크에서 데이터를 읽는 시간을 줄이는 가장 확실한 방법은 무엇인가?

A: 바로 여러개의 디스크에서 동시에 데이터를 읽는것이다.

2.여러 개의 디스크에서 동시에 읽는 방식이 왜 빠른가?

A: 여러개의 디스크에서 데이터를 병렬로 동시에 읽을 수 있기 때문이다.

하나의 디스크만 사용할 경우 : 디스크 1개 → 순차적으로 읽기 → 속도제한

여러개의 디스크만 사용할 경우: 디스크 10개 → 동시에 읽기 → 전체 처리량 증가

즉, 디스크 수만큼 읽기 작업이 나눠져서 수행되기 때문에 전체 데이터 처리 속도가 빨라진다.

병렬 I/O(Parallel I/O)라고 한다.

3.현재는 디스크를 나눠 사용하는것이 왜 의미가 있을까?

현대에는 데이터의 크기가 너무 커졌기 때문에 하나의 디스크에 저장하는 것이 불가능하거나 비효율적이기 때문이다.

현재는 데이터의 크기가 TB~PB 수준으로 하나의 디스크로 감당 불가능하다 여러 디스크에 나눠 저장해야 한다. 즉, 디스크를 나눠 사용하는 것은 낭비가 아니라 대용량 데이터를 저장하고 빠르게 처리하기 위한 필수 구조가 되었다. 또한 나눠 저장하면 1) 저장공간 증가 2) 읽기 속도 향상 (병렬처리)3) 장애 대응 가능(복제 저장)

4.여러 디스크를 사용할 때 하드웨어 장애 확률이 증가하는 이유는?

디스크 수가 많아질수록 고장날 수 있는 장비의 개수도 같이 늘어나기 때문이다.

디스크 1개 → 고장날 확률 1번

디스크 100개 → 고장난 확률 100번

즉, 시스템 전체 기준으로 보면” 어딘가 하나는 고장날 가능성”이 크게 증가한다.

분산시스템에서는 이게 매우 중요하다. 수십,수백,수천개 디스크 사용

하둡은 디스크 고장 = 정상 상황 데이터를 여러 노드에 복제, 고장 나도 서비스 유지

하도록 설계됨.

5.RAID 방식은 데이터를 어떻게 보호하는가?

RAID는 Redundant Array of Independent Disk 혹은 Redundant Array of Inexpensive Disk의 약자로 말 그대로 RAID는 여러개의 디스크를 묶어 하나의 디스크처럼 사용하는 기술이다

RAID를 사용할 때 기대효과는

  • 대용량의 단일 볼륨을 사용하는 효과
  • 디스크 I/O 병렬화로 인한 성능 향상
  • 데이터 복제로 인한 안정성 향상

등이 있다.

6.HDFS는 RAID와 어떤 다른 방식으로 데이터 손실 문제를 해결하는가?

RAID는 한 서버 내부의 여러 디스크에 데이터를 복제해서 보호하고, HDFS는 여러 서버에 데이터를 복제해서 보호한다.

RAID는 하나의 서버 안에서 디스크 장애를 대비하기 위해 데이터를 복제하는 방식이고, HDFS는 데이터를 여러 서버에 블록 단위로 복제하여 서버 자체가 고장 나더라도 데이터를 유지할 수 있도록 설계된 분산 파일 시스템입니다. 따라서 HDFS는 RAID보다 더 큰 규모의 장애에 대응할 수 있습니다.

7.데이터를 여러개로 나눠 저장하면 분석 시 어떤 문제가 생길까?

데이터가 여러 곳에 분산되어 있기 때문에 분석할때 다시 모으거나 병합해야 하는 문제가 생긴다.

즉, 저장할때 → 나눠짐, 분석할때 → 다시 합쳐야 함

이과정이 어렵고 시간이 많이 듭니다

  • 로그 데이터를 100개 서버에 나눠 저장
  • 전체 통계 분석하려면?
100곳에서 데이터 가져오기
→ 하나로 합치기
→ 계산 수행

  1. 네트워크 사용량 증가
  2. 병합 과정 복잡
  3. 처리 속도 느려짐

그래서 나온 개념 MapReduce 데이터가 있는 곳에서 계산 ⭕

데이터를 여러 서버에 나눠 저장하면 전체 데이터를 분석할 때 다시 모아야 하는 문제가 발생합니다. 이 과정은 네트워크 비용과 시간이 많이 들기 때문에 비효율적입니다. 그래서 MapReduce는 데이터를 중앙으로 모으지 않고, 데이터가 저장된 위치에서 먼저 계산을 수행한 뒤 결과만 모으는 방식으로 이 문제를 해결합니다.

8.MapReduce는 어떤 문제를 해결하기 위해 등장했는가?

대규모 데이터를 여러 서버에 나눠 저장했을 때 그 데이터를 효율적으로 분석하기 어려운 문제를 해결하기 위해 등장했다.

맵리듀스가 해결한 방식

데이터를 이동시키지말고, 계산을 이동시켜라

각 서버에서 데이터 처리(Map) 결과만 모아서 합친다.(Reduce)

정리하자면 : MapReduce는 대규모 데이터가 여러 서버에 분산되어 저장된 환경에서, 데이터를 중앙으로 모아 처리할 때 발생하는 네트워크 병목과 처리 속도 문제를 해결하기 위해 등장했습니다. 데이터를 이동시키는 대신 데이터가 있는 위치에서 계산을 수행하고 결과만 모으는 방식으로 분산 분석을 가능하게 만든 모델입니다.

9.MapReduce가 key-value 기반 계산 모델을 사용하는 이유는 무엇인가?

데이터를 일관된 형태로 표현하고, 그 데이터를 병렬로 쉽게 나눠 처리하고 다시 합치기 때문이다.

즉, 다양한 데이터를 단순한 구조(key-value)로 변환하면 분산 처리와 집계가 쉬워진다.

왜 key-value인가?

대규모 데이터는 형태가 제각각이다.

  • 로그
  • 텍스트
  • 이미지 메타데이터
  • JSON

이걸 그대로 계산하려 하면 처리방식이 다 다르고 병렬화가 어렵기 때문이다. 그래서 MapReduce는 모든 데이터를 (key, value) 형태로 통일한다.

  1. 병렬처리 쉬움

key 기준으로 데이터 나눔 가능

("user1", 클릭로그) ("user2", 클릭로그) ("user3", 클릭로그) → 서버 여러 대에서 동시에 처리

  1. 그룹화 쉬움

같은 key끼리 자동으로 모임(shuffle 단계)

("user1", 로그1) ("user1", 로그2) ("user1", 로그3)

Reduce에서 합계 계산 가능

  1. 다양한 데이터 처리 가능

모든 데이터를 동일 구조로 변환

텍스트 → 단어, 1 로그 → 사용자ID, 행동 매출 → 상품ID, 금액

→ 어떤 데이터든 처리 가능

MapReduce는 이렇게 생각함

모든 분석은 결국 "그룹화 후 계산"이다.

그룹화 기준 = key

계산 대상 = value

예시 (가장 유명한 Word Count)

문장

I love Hadoop
I love Bigdata

Map 단계

(I,1)
(love,1)
(Hadoop,1)
(I,1)
(love,1)
(Bigdata,1)

Shuffle

(I,[1,1])
(love,[1,1])
(Hadoop,[1])
(Bigdata,[1])

Reduce

(I,2)
(love,2)
(Hadoop,1)
(Bigdata,1)

정리 : MapReduce는 다양한 형태의 데이터를 병렬로 처리하기 위해 데이터를 key-value 구조로 단순화합니다. key를 기준으로 데이터를 나누고 그룹화한 뒤 value를 계산하는 방식은 분산 환경에서 병렬 처리와 집계를 매우 효율적으로 수행할 수 있게 해주기 때문입니다.

10.데이터 I/O를 계산 모델로 추상화한다는 말은 무엇을 의미하는가?

하둡/MapReduce에서 가장 어려운 표현 중 하나라서 쉽게 풀어 말하면 이렇게 된다.

원래 문제들은

-데이터 읽기 -데이터 이동 -데이터 병합 -데이터 처리

이걸 개발자가 직접 다 구현해야 했다. 하지만 Mapreduce는 이걸 계산문제 형태로 바꿔버렸다.

즉, 데이터를 어떻게 읽고 옮기고 합칠지 고민하는게 아니라 어떤 계산을 할지만 정의하는 방법

이게 추상화의 개념이다.

데이터 처리 과정을 이렇게 단순화한 것:

입력 데이터
↓
Map (변환)
↓
Reduce (집계)
↓
결과

개발자는

  • 데이터 위치
  • 네트워크 이동
  • 병렬 처리
  • 장애 처리

신경 안 써도 된다. 프레임워크가 대신 처리.

MapReduce 방식

Map: (로그) → (userID, 1) Reduce: userID별 합계 계산 끝.

데이터 읽기/이동/병합은 시스템이 자동 처리.

정리:데이터 I/O를 계산 모델로 추상화한다는 것은, 데이터를 어떻게 읽고 이동시키고 병합할지를 개발자가 직접 처리하는 대신, 입력 데이터를 Map과 Reduce라는 계산 과정으로 표현하면 시스템이 나머지 I/O와 분산 처리를 자동으로 수행하도록 만든다는 의미입니다. 즉, 데이터 처리 문제를 단순한 계산 문제로 바꾼 개념입니다.

11.하둡은 어떤 플랫폼인가?

하둡은 대규모 데이터를 안정적으로 저장하고 분산 환경에서 분석할수 있도록 해주는 확장 가능한 분산 저장 처리 플랫폼이다.

저장 + 처리 + 자원관리를 모두 포함한 데이터 처리 기반 시스템이다.

역할 기준으로 보면

  1. 저장
    1. HDFS
    2. 데이터를 여러 서버에 분산 저장
  2. 처리
    1. MapReduce
    2. 분산 연산 수행
  3. 자원관리
    1. YARN
    2. 클러스터 자원 배분

즉,데이터를 저장하고, 계산하고, 자원을 관리하는 전체 인프라 플랫폼

하둡은 단순한 프로그램이 아니라 대규모 데이터를 분산 저장하고 분석하기 위한 플랫폼입니다. HDFS로 데이터를 저장하고, MapReduce로 처리하며, YARN으로 자원을 관리하는 구조로 이루어져 있습니다. 대용량 데이터를 안정적으로 처리할 수 있도록 설계된 분산 시스템 기반 플랫폼입니다.

12.하둡 에코시스템이란 무엇인가?

하둡 에코시스템은 HDFS, YARN, MapReduce를 중심으로 대규모 데이터 저장 처리 분석을 위해 함께 동작하는 여러 기술과 도구들의 전체 집합을 의미한다.

하둡 = 여러 기술이 모인 생태계 ⭕ 왜 에코시스템이라고 부르는가?

하둡만으로는 모든 데이터 처리를 할 수 없다.

  • 저장
  • 처리
  • SQL
  • 머신러닝
  • 스트리밍
  • 검색

각 역할을 담당하는 다양한 기술들이 함께 동작한다.

이 전체 묶음을

Hadoop Ecosystem

확장 기술들

데이터 저장

  • HBase

SQL 처리

  • Hive
  • Impala
  • Tez

메모리 처리

  • Spark

스트리밍

  • Storm
  • Spark Streaming
  • Samza

검색

  • Solr
분석/ML/SQL/Streaming
↑
Spark Hive Impala Storm
↑
MapReduce
↑
YARN
↑
HDFS

 

하둡 에코시스템은 HDFS, YARN, MapReduce를 중심으로 Hive, Spark, HBase 등 다양한 데이터 처리 도구들이 함께 동작하는 환경을 의미합니다. 하둡은 하나의 시스템이 아니라 대규모 데이터 분석을 위한 여러 기술이 결합된 플랫폼 생태계라고 볼 수 있습니다.

13.HBase는 어떤 데이터 저장소인가?

HBase는 HDFS 위에서 동작하는 분산 키-값 기반 NoSQL 데이터베이스로, 대용량 데이터를 실시간으로 읽고 쓸 수 있는 저장소이다.

HBase는 : 일반 DB처럼 데이터를 저장하지만, 하둡 위에서 동작하고, 매우 큰 데이터를 처리할수 있으며, 빠른 조회/저장이 가능하다.

 

구조적으로 보면

HDFS → 실제 데이터 저장
HBase → 그 위에서 데이터 관리/조회

즉, HDFS는 파일저장소, HBase는 그 위에 올라간 데이터베이스

키-값 기반 데이터구조:

RowKey → 데이터

ex:)
user123 → 클릭로그
user456 → 구매정보

실시간 읽기/쓰기 가능

MapReduce는 일괄처리(batch) , HBase는 실시간처리(online) 가능

대규모 데이터 처리

  • 수십억 건 데이터
  • 수천 대 서버에서도 동작.

컬럼 기반 저장

RDBMS: 행 중심 HBase: 컬럼 중심 필요한 컬럼만 빠르게 읽기 가능.

언제쓰나

  • 로그 저장
  • 사용자 행동 데이터
  • 실시간 추천 시스템
  • IoT 데이터

RDBMS HBase

구조 관계형 NoSQL
스키마 고정 유연
처리 트랜잭션 대용량
읽기 JOIN 강함 Key 조회 강함

 

정리 : HBase는 HDFS를 기반으로 동작하는 분산 NoSQL 데이터베이스로, 대규모 데이터를 키-값 형태로 저장하고 실시간으로 읽고 쓸 수 있도록 설계된 저장소이다. MapReduce가 일괄 처리 중심이라면 HBase는 온라인 접근이 필요한 데이터 처리에 적합합니다.

14.HBase는 HDFS와 어떤 관계인가?

HBase는 HDFS 위에서 동작하는 데이터베이스이며, 실제 데이터 저장은 HDFS가 담당하고 HBase는 데이터를 관리하고 조회하는 역할을 한다.

HDFS

  • 파일 저장소
  • 대용량 데이터 분산 저장
  • 디스크 역할

HBase

  • 데이터베이스
  • 데이터 구조 관리
  • 빠른 조회/쓰기 제공

구조

사용자 요청
   ↓
 HBase
   ↓
 HDFS
   ↓
 디스크

즉, HDFS는 저장을 담당하고 HBase는 데이터를 어떻게 저장하고 조회할지 관리한다.

예시

사용자 행동 로그 저장한다고 가정

HDFS만 사용

  • 파일 형태로 저장
  • 조회 느림
  • 특정 데이터 찾기 어려움

HBase 사용

  • 키 기반 저장
  • 특정 사용자 데이터 즉시 조회

HDFS = 저장 엔진

HBase = 그 위에 올라간 NoSQL 데이터베이스

HDFS 장점

안정적,확장가능,장애대응

HBase는 이걸 그대로 활용하면서

빠른 조회 기능 추가, 실시간 쓰기 기능 추가

정리 : HBase는 HDFS 위에서 동작하는 분산 NoSQL 데이터 베이스입니다. HDFS가 실제 데이터를 분산 저장하는 역할을 하고, HBase는 그 위에서 데이터를 키-값 형태로 관리하고 빠르게 조회할 수 있도록 하는 계층입니다. 즉, HDFS는 저장소이고 HBase는 그 저장소를 사용하는 데이터베이스라고 이해하면 됩니다.

15.YARN의 역할

YARN은 하둡 클러스터의 자원(CPU, 메모리)을 관리하고, 분산 작업이 어느 서버에서 실행될지 배분하는 자원 관리 시스템이다.

쉽게 말하면 하둡에는 서버가 여러 대 있다. 각서버에는 CPU,메모리,디스크 같은 자원이 있다.

여기서 문제: 어떤 작업을 어느 서버에서 실행할지 누가 정하는가? 이걸 정하는게 YARN이다.

YARN의 역할은 클러스터 전체의 CPU,메모리 사용량 관리

작업이 들어오면: 어느 서버에서 실행할지 결정한다.

분산 프로그램 실행 지원 MapReduce뿐 아니라, Spark,Tez,기타 분산 프로그램도 실행 가능하다.

구조를 보면

사용자 작업 요청
      ↓
    YARN
      ↓
적절한 서버에 작업 배치
      ↓
실행

왜 필요했나

초기하둡: MapReduce가 자원 관리까지 담당

문제:

MapReduce만 실행 가능
확장성 부족

그래서 등장한게 YARN이다.

결과:

  • MapReduce
  • Spark
  • 기타 엔진

모두 실행 가능.

정리 : YARN은 하둡 클러스터의 CPU와 메모리 같은 자원을 관리하고, 분산 작업이 어떤 노드에서 실행될지 스케줄링하는 역할을 합니다. 초기 하둡에서는 MapReduce가 자원관리까지 담당했지만, YARN이 등장하면서 다양한 분산 처리 엔진이 하둡 위에서 실행될수 있게 되었습니다.

16.대화형 SQL 처리는 무엇이며 왜 등장했는가?

대화형 SQL 처리는 하둡에 저장된 데이터를 SQL로 즉시 조회하고 분석할 수 있는 방식이며, MapReduce의 느린 일괄 처리 한계를 해결하기 위해 등장했다.

대화형 SQL 처리란?

사용자가 SQL을 입력하면 즉시 결과가 나오는 분석 방식

ex:) Select count(*) From logs → 몇초내 결과확인

핵심 차이

MapReduce 대화형 SQL

처리 일괄 즉시
속도 느림 빠름
용도 대규모 분석 탐색/조회

정리 : 대화형 SQL처리는 하둡에 저장된 데이터를 SQL로 즉시 조회하고 분석할 수 있는 방식입니다. 기존 MapReduce는 일괄 처리 중심이라 실행 시간이 길었기 때문에, 빠른 데이터 탐색과 분석을 위해 lmpala, Tez 같은 분산 쿼리 엔진이 등장하면서 대화형 SQL 처리가 가능해졌습니다.

17.반복처리는 어떤 환경에서 필요한가?

반복 처리는 동일한 데이터를 여러 번 계산해야 하는 환경에서 필요합니다. 특히 머신러닝이나 그래프 분석처럼 알고리즘이 여러 번 반복 실행되는 경우 MapReduce 방식은 매번 디스크를 읽어야 해서 비효율적이기 때문에, 데이터를 메모리에 유지하면서 반복 계산이 가능한 Spark 같은 기술이 등장하게 되었습니다.

18.스트림 처리는 무엇이며 어떤상황에서 사용하는가?

스트림 처리는 계속 생성되는 데이터를 실시간으로 처리하는 방식이며, 즉시 분석이나 반응이 필요한 상황에서 사용된다.

스트림 처리:

데이터 생성되는 순간 → 바로 처리

 

“실시간 데이터 처리 방식”

로그 분석

배치 방식:

하루치 로그 모음 → 밤에 분석

스트림 방식:

로그 발생 → 즉시 분석

사용 기술

  • Storm
  • Spark Streaming
  • Samza
  • Flink

배치 vs 스트림

배치 스트림

처리 모아서 즉시
속도 느림 빠름
데이터 과거 실시간

스트림 처리는 데이터가 일정량 쌓인 후 처리하는 배치 방식과 달리, 데이터가 생성되는 즉시 실시간으로 분석하는 방식이다. 금융 이상 거래 탐지, 서버 모니터링, loT 센서 데이터 처리처럼 즉각적인 반응이 필요한 환경에서 사용된다.

19.하둡 기반 검색 시스템은 어떤 방식으로 동작하는가?

하둡 기반 검색 시스템은 대용량 데이터를 HDFS에 저장하고 이를 색인(indexing)한뒤, 그 색인을 기반으로 검색 쿼리를 빠르게 수행하는 방식으로 동작한다.

동작 흐름 이해

하둡 검색은 보통 Solr같은 검색 엔진을 사용한다.

전체 흐름

데이터 수집
↓
HDFS 저장
↓
색인 생성 (Indexing)
↓
검색 쿼리 실행
↓
결과 반환

단계별 설명

데이터 저장: 문서,로그,텍스트 같은 대용량 데이터를 HDFS에 저장.

색인: 검색을 빠르게 하기 위해 단어 → 문서 위치 형태로 색인을 만든다.

"하둡" → 문서1, 문서5
"데이터" → 문서2, 문서7

이 작업을 분산 환경에서 수행.

검색 요청

사용자가 “하둡” 검색하면 색인에서 바로 위치 찾음, 해당 문서 반환

왜 하둡 기반으로 만드나

검색 대상 데이터가 수십 TB~PB 규모라서 단일서버 검색불가, 분산 저장 + 분산 검색 필요

핵심 기술

대표적으로 : Solr, Elasticsearch(하둡 연계)

이들은 하둡에 저장된 데이터를 색인, 분산 검색 수행

핵심 개념

검색 시스템 핵심: “데이터를 먼저 색인하고, 검색은 색인을 기반으로 수행”

하둡은: 색인 생성도 분산 처리, 검색 대상 데이터도 분산 저장

정리 : 하둡 기반 검색시스템은 대용량 데이터를 HDFS에 분산 저장한 뒤, Solr 같은 검색 엔진을 이용해 데이터를 색인하고 그 색인을 기반으로 검색 쿼리를 수행하는 방식으로 동작합니다. 이렇게하면 수십 테라 바이트 이상의 데이터도 빠르게 검색 할 수 있습니다.

20.Hadoop과 RDBMS의 가장 큰 차이는 무엇인가?

가장 큰차이는 둘의 목적 자체가 다르다

RDMBS 는 운영/거래 처리(OLTP)이고

Hadoop은 분석/빅데이터 처리(OLAP)이다.

비교로 이해

RDBMS

목표: 정확한 데이터 관리, 빠른 조회/수정, 트랜젝션 처리 ex:) 은행,쇼핑몰 주문, 회원 정보

Hadoop

목표: 대용량 데이터 저장, 분산 분석 패턴.통계 도출 ex:) 로그분석,추천시스템,데이터 마이닝(데이터베이스 속에서 의미있으면서 유용하고 가치있는 정보를 찾아내는 인간행동)

항목 RDBMS Hadoop

데이터 크기 GB TB~PB
데이터 유형 정형 정형/반정형/비정형
처리 방식 트랜잭션 분석
확장 장비 업그레이드 서버 추가
스키마 쓰기 기준 읽기 기준

정리: RDBMS는 트랙잭션 처리와 데이터 무결성이 중요한 운영 시스템에 적합한 데이터베이스이고, Hadoop은 대규모 데이터를 분산 저장하고 분석하기 위한 플랫폼입니다. 즉, RDBMS는 **‘데이터를 정확하게 관리’**하는데 목적이 있고, Hadoop은 ‘대량의 데이터를 분석’하는데 목적이 있다는 점이 가장 큰 차이입니다.

21.RDBMS는 어떤 데이터 처리에 적합한가?

RDBMS는 트랜잭션 처리와 같이 정확성과 일관성이 중요한 정형 데이터 처리에 적합하다.

RDBMS는 : 데이터를 저장하고, 수정하고, 조회하는 작업이 정확해야 하는 시스템에 사용된다.

트랜잭션 처리

ex:) 은행계좌이체, 결제 처리, 주문 생성

특징:데이터 틀리면 안 됨, 중복 안됨,실시간 처리

정형 데이터 처리

형태가 정해진 데이터 :ex:) 회원 테이블,주문 테이블,상품 테이블

빠른 조회/수정

ex:) 회원 정보 조회, 주문 상태 변경, 재고 업데이트

왜 RDBMS가 여기에 적합한가?

ACID 보장 😊 - 데이터 정확성 보장

  • Atomicity (원자성)
  • Consistency (일관성)
  • Isolation (격리성)
  • Durability (지속성)

Hadoop과 차이

RDBMS Hadoop

목적 운영 분석
데이터 정형 모든 형태
처리 실시간 일괄 분석
정확성 매우 중요 상대적으로 덜 중요

정리:RDBMS는 트랜잭션 처리처럼 데이터의 정확성과 일관성이 중요한 정형 데이터 처리에 적합합니다. 은행거래, 주문 관리, 회원 정보 같은 운영 시스템에서 사용되며 ACID 특성을 통해 데이터 무결성을 보장하는 것이 핵심이다.

22.Hadoop이 반정형·비정형 데이터에 강한 이유는?

Hadoop은 데이터를 저장할 때 구조를 강제하지 않고, 읽을 때 필요한 형태로 해석하는 방식**(schema-on-read)을 사용하기 때문에 반정형·비정형 데이터 처리에 강하다.**

Hadoop 방식

 

 

 

Hadoop은 데이터를 “정리해서 저장”하지 않고 “저장해두고 분석할 때 정리”한다.

 

Hadoop은 데이터를 저장할때 구조를 강제하지 않고, 읽을때 필요한 형태로 해석하는 schema-on-read 방식을 사용한다.그래서 로그,JSON,텍스트 같은 반정형·비정형 데이터를 그대로 저장할 수 있고, 분석 목적에 따라 유연하게 처리할 수 있기 때문에 이러한 데이터에 강합니다.

23.읽기기준 스키마 OR 쓰기기준 스키마

쓰기 기준 스키마 → 저장할 때 구조 정의 읽기 기준 스키마 → 읽을 때 구조 정의

쓰기 기준 스키마 (Schema-on-Write)

데이터를 저장하기 전에

테이블 구조 먼저 정의

그 구조에 맞는 데이터만 저장 가능.

예 (RDBMS)

테이블

이름 | 나이 | 주소

 

데이터 입력

홍길동 | 30 | 서울
"홍길동은 서울에 산다"

이런 텍스트는 저장 어려움

특징

  • 구조 엄격
  • 데이터 정합성 높음
  • 트랜잭션 강함
  • 분석 유연성 낮음

읽기 기준 스키마 (Schema-on-Read)

 

예 (Hadoop)

저장

로그 파일
JSON
텍스트
이미지 메타데이터

분석할 때

필요한 컬럼만 정의

특징

  • 구조 유연
  • 비정형 데이터 처리 가능
  • 분석 중심
  • 데이터 품질 관리는 별도 필요

비교

쓰기 기준 읽기 기준

시점 저장 전 분석 시
시스템 RDBMS Hadoop
데이터 정형 모든 형태
유연성 낮음 높음

 

정리: 쓰기기준 스키마는 데이터를 저장하기전에 테이블 구조를 먼저 정의하는 방식으로 RDBMS에서 사용된다. 반면 읽기 기준 스키마는 데이터를 먼저 저장하고 분석할 때 필요한 구조를 정의하는 방식으로 Hadoop에서 사용된다. 이 차이 때문에 Hadoop은 반정형-비정형 데이터 처리에 유연하고, RDBMS는 정형 데이터 관리에 강점을 가진다.

24.Hadoop의 확장성이 선형인 이유는 무엇인가?

Hadoop은 데이터를 여러 노드에 분산 저장하고 병렬로 처리하는 구조이기 때문에 서버를 추가할수록 저장 용량과 처리 성능이 거의 비례하여 증가한다.

“선형 확장” 이란 서버를 추가하면 저장공간과 처리성능이 증가한다. 이 증가가 거의 비례해서 일어나는것이다.

예를 들면 서버 10대 → 성능 10 서버 20대 → 성능 20

이게 선형 확장이다.

왜 Hadoop은 선형 확장이 가능한가

분산 저장(HDFS) :

데이터를 여러노드에 나눠서 저장 서버 추가하면 저장공간 그대로 남는다.

병렬 처리 (MapReduce/Spark):

데이터가 분산돼 있으니까 각 노드에서 동시에 계산, 노드 추가시 계산 노드 증가→ 처리 속도 증가

Hadoop은 “Scale-up”이 아니라 “Scale-out” 구조이다

Hadoop은 데이터를 여러 노드에 분산 저장하고 각 노드에서 병렬로 처리하는 구조이기 때문에 서버를 추가할수록 저장 용량과 처리 성능이 거의 비례해서 증가한다. 이러한 구조를 scale-out 방식이라고 하며, 이때문에 Hadoop은 선형 확장이 가능한 시스템이다.

24.B-tree는 무엇인가?

B-tree는 디스크 기반 데이터베이스에서 데이터를 빠르게 검색-삽입-삭제하기 위해 사용하는 균형 잡힌 트리 형태의 인덱스 자료구조이다.

“디스크 접근 횟수를 최소화하기 위해 만든 트리 구조”

왜 B-tree가 필요 한가

디스크 특징: 메모리보다 매우 느림, 한번 읽을 때 큰 블록 단위로 읽음

B-tree의 특징

1.항상 균형 유지, 어느 노드든 깊이가 비슷,검색 시간이 일정

2.한노드에 여러 키 저장 [10 | 20 | 30] → 한번의 디스크 I/O로 여러값 확인

3.정렬된 구조→ 범위 검색 빠름, 정렬된 데이터 처리에 유리

B-tree vs 일반 이진 트리

이진 트리 B-tree

노드 키 수 1개 여러 개
디스크 접근 많음 적음
균형 깨질 수 있음 항상 유지

B-tree가 일부 데이터 수정에는 유리한 이유는?

B-tree는 필요한 데이터 위치만 찾아서 해당 노드만 수정하면 되기 때문에 전체 데이터를 다시 처리할 필요가 없어 일부 수정에 효율적이다.

정리 : B-tree는 디스크 접근 비용을 줄이기 위해 설계된 균형 트리 기반 인덱스 구조로, 한번의 디스크 읽기로 여러 키를 탐색할 수 있어 데이터베이스에서 빠른 검색과 갱신을 가능하게 합니다. RDBMS의 인덱스 구조에서 핵심적으로 사용됩니다.

25.그리드 컴퓨팅이란?

그리드 컴퓨팅은 지리적으로 분산된 여러 컴퓨터의 자원을 모아 하나의 거대한 가상 컴퓨터처럼 사용하는 분산 컴퓨팅 방식이다.

주로 연구기관이나 조직에서 유휴 자원을 모아 대규모 계산 작업을 수행할 때 사용됩니다.

쉽게 설명하면 여러 장소에 있는 컴퓨터들을 연결해서 하나의 큰 컴퓨터처럼 사용하는 개념이다.

26.분산처리와 그리드 컴퓨팅의 차이는 무엇인가?

분산 처리는 하나의 시스템이 여러 노드에 작업을 나눠 처리하는 방식이고, 그리드 컴퓨팅은 서로 다른 위치의 컴퓨터 자원을 모아 하나의 큰 컴퓨터처럼 사용하는 방식이다.

분산처리 (Distributed Processing)

하나의 서비스/시스템 기준,데이터와 작업을 여러 서버에 나눠 처리

ex:) Hadoop, Spark

목표 : 대규모 데이터 처리

그리드 컴퓨팅(Grid Computing)

여러 조직/지역 컴퓨터 자원 모음, 계산 자원을 공유

ex:) 연구기관 계산 클러스터, 과학 시뮬레이션

목표: 계산 능력 확보

정리: 분산 처리는 하나의 시스템이 데이터를 여러 노드에 나눠 처리하는 방식으로 Hadoop 같은 빅데이터 처리에 사용됩니다. 반면 그리드 컴퓨팅은 지리적으로 분산된 컴퓨터 자원을 모아 하나의 큰 컴퓨터처럼 사용하는 방식으로 계산 능력 확보가 목적입니다. 즉 분산 처리는 데이터 중심,그리드 컴퓨팅은 연산 자원 중심이라는 점이 가장 큰 차이입니다.

27. 자발적 컴퓨팅이란 무엇인가

자발적 컴퓨팅은 개인이 자발적으로 자신의 컴퓨터 자원을 제공하여 대규모 계산 작업에 참여하는 분산 컴퓨팅 방식이다. 대표적으로 SETI@home처럼 전세계 사용자 PC가 계산을 수행하고 결과를 서버로 보내는 구조이며, Hadoop과 달리 조직이 아닌 개인 자원을 활용한다는 특징이 있습니다.

28. HPC는 어떤 작업에 강한가?

HPC(고성능 컴퓨팅)는 복잡한 수치 계산과 시뮬레이션처럼 계산량이 매우 크고 노드 간 긴밀한 협력이 필요한 작업에 강하다.

HPC = High Performance Computing

목표 : 최대한 빠르게 계산 수행

어떤 작업에 강하냐

과학 시뮬레이션

  • 기상 예측
  • 우주 물리 계산
  • 핵융합 연구

수치 해석

  • 수학 모델 계산
  • 공학 계산

3D 시뮬레이션

  • 항공기 설계
  • 자동차 충돌 실험

고성능 연산

  • GPU 기반 계산
  • 병렬 수치 계산

HPC는 기상 예측, 과학 시뮬레이션, 수치 해석처럼 계산 자체가 매우 복잡하고 노드 간 긴밀한 협력이 필요한 작업에 강합니다. 반면 Hadoop은 대용량 데이터를 저장하고 분석하는 데 최적화된 시스템으로, 계산 중심이 아니라 데이터 중심이라는 점에서 차이가 있습니다.

29. MPI는 무엇이며 어떤 특징을 가지는가?

MPI(Message Passing Interface)는 분산된 여러 컴퓨터가 서로 메세지를 주고받으며 병렬로 계산을 수행하도록 하는 저수준 통신 기반 병렬 프로그래밍 방식이다.

여러 서버가 계산할때 서로 데이터를 직접 주고받으며 협력하는 방식 이걸 가능하게 하는 기술이 MPI

30. Hadoop이 기존 HPC/그리드 방식과 다른점은 무엇인가?

HPC/그리드는 계산 중심 구조인 반면,Hadoop은 데이터 중심 구조로 데이터를 분산 저장하고 데이터가 있는 위치에서 계산을 수행하는 방식이라는 점이 가장 큰 차이다.

HPC/그리드 → 계산을 위해 데이터 이동 Hadoop → 데이터를 위해 계산 이동

HPC / 그리드 방식

중앙 저장소
↓
여러 노드가 데이터 가져감
↓
계산 수행                       

 

기존 HPC나 그리드 컴퓨팅은 계산을 중심으로 데이터를 중앙에서 가져와 처리하는 구조였지만, Hadoop은 데이터를 여러 노드에 분산 저장하고 데이터가 있는 위치에서 계산을 수행하는 데이터 중심 구조입니다. 이를 통해 네트워크 병목을 줄이고 대용량 데이터 처리에 최적화된 환경을 제공합니다.

31. 데이터 지역성(Data Locality)란 무엇인가?

데이터 지역성은 데이터를 네트워크로 이동시키지 않고, 데이터가 저장된 위치에서 직접 계산을 수행하는 개념이다. 이를 통해 네트워크 병목을 줄이고 처리 속도를 높일 수 있어 Hadoop의 핵심 설계 원리 중 하나이다.

32. 데이터 지역성이 성능 향상에 미치는 영향은?

데이터 지역성은 데이터를 네트워크로 이동시키지 않고 로컬에서 처리하게 만들어 네트워크 병목을 줄이고 처리 속도를 크게 향상시킨다. 또한 각 노드에서 병렬로 계산이 이루어지기 때문에 전체 시스템 성능과 확장성이 크게 향상됩니다.

왜 성능이 좋아지나

핵심은

디스크 접근 vs 네트워크 이동

속도 차이가 매우 큼.

로컬 디스크 읽기 → 빠름
네트워크로 데이터 전송 → 매우 느림

그래서 데이터 이동을 줄일수록 성능이 올라간다.

33.네트워크 병목은 왜 발생하는가?

많은 노드가 동시에 대량의 데이터를 네트워크로 주고 받으려고 하면 네트워크 대역폭이 한계에 도달해 데이터 전송 속도가 느려지면서 병목이 발생한다.

네트워크는 도로같은 개념이다 데이터는 차라고 보면 된다.

여러 서버가 동시에 데이터를 한곳으로 전송하면 도로가 막힘→ 속도가느려짐

이게 네트워크 병목이다.

네트워크 병목은 여러 노드가 동시에 대량의 데이터를 주고 받을 때 네트워크 대역폭이 한계에 도달하면서 발생합니다. 특히 대규모 데이터 처리 환경에서는 데이터 이동 자체가 큰 비용이 되기 때문에, Hadoop은 데이터를 이동시키지 않고 데이터가 있는 위치에서 계산하는 방식으로 이 문제를 해결합니다.

34.Hadoop이 I/O 병목을 해결하는 방식은 무엇인가?

Hadoop ‘데이터 지역성(Data Locality)’ 원칙을 통해 데이터를 이동시키지 않고 데이터가 저장된 노드에서 직접 계산을 수행하여 I/O 병목을 줄인다.

I/O 병목이란?

데이터 읽기/쓰기 속도가 느려서 전체 처리 속도가 제한되는 상황

특히 디스크 접근,네트워크 전송에서 발생

기존 방식 문제

HPC/기존 시스템

데이터 중앙 저장
↓
여러 노드가 데이터 요청
↓
네트워크 과부하
↓
I/O 병목 발생

Hadoop이 I/O 병목 해결한 방식:

  1. 데이터 분산 저장
  2. 데이터 지역성 적용
  3. 병렬 I/O 처리
  4. 중앙 저장소 제거

Hadoop은 데이터를 여러 노드에 분산 저장하고 데이터가 있는 위치에서 계산을 수행하는 데이터 지역성 원칙을 통해 I/O 병목을 해결합니다. 또한 병렬 I/O와 shared-nothing 구조를 통해 중앙 저장소 의존을 제거하고 대규모 데이터 처리에서도 성능을 유지할 수 있도록 설계되었습니다.