빅데이터 플랫폼과 하둡 에코시스템
쉽게 말하면
데이터가 너무 커서 컴퓨터 한 대에 안 들어가면 여러 대에 나눠 담고, 여러 대가 동시에 나눠 계산해요. 이걸 해 주는 대표 도구 묶음이 하둡이에요. 하둡에 붙어 데이터를 가져오고(수집), 담고(저장), 계산하고(처리), 분석하는 도구들을 통틀어 하둡 에코시스템이라고 불러요.
시험용 정의
빅데이터 플랫폼은 대용량 데이터를 수집·저장·처리·분석하는 기술을 한데 묶은 환경이다. 보통 인프라스트럭처 계층(노드·저장장치·네트워크 자원 관리), 플랫폼 계층(작업 스케줄링, 데이터·자원 할당), 소프트웨어 계층(수집·처리·분석 응용)으로 나눈다. 대표가 하둡(Hadoop)이다. 하둡은 여러 대의 범용 서버에 데이터를 블록으로 나눠 저장하는 HDFS와, 계산을 여러 노드에 나눠 돌리는 맵리듀스(MapReduce)가 중심이며, 하둡 2부터 YARN이 클러스터 자원을 관리한다. 하둡 주변의 수집·저장·처리·관리 도구를 하둡 에코시스템이라 한다.
비유로 이해하기
이삿짐 1만 상자를 트럭 한 대로 나르면 며칠 걸린다. 트럭 100대에 나눠 싣고(HDFS), 각 트럭이 동시에 날라 도착지에서 합치면(맵리듀스) 금방 끝난다. 배차를 정하는 배차 담당이 YARN, 어느 상자가 어느 트럭에 있는지 적은 장부가 네임노드다.
자세히
HDFS
| 구성 | 역할 |
|---|---|
| 네임노드 (NameNode) | 파일 이름, 블록 목록, 블록이 있는 데이터노드 위치(메타데이터) 관리. 마스터 |
| 데이터노드 (DataNode) | 실제 블록을 저장하고 주기적으로 네임노드에 상태(하트비트)를 보냄 |
| 블록 | 파일을 큰 덩어리로 나눈 단위. 하둡 2 이후 기본 128MB |
| 복제 | 블록을 기본 3벌 다른 노드에 저장해 노드가 고장 나도 데이터를 잃지 않음 |
HDFS 는 한 번 쓰고 여러 번 읽는(write once, read many) 대용량 순차 처리에 맞다. 작은 파일이 아주 많거나 자주 고쳐 쓰는 일에는 맞지 않는다.
맵리듀스
처리 순서: 맵(각 노드가 자기 블록을 읽어 키-값 쌍으로 바꿈) → 셔플·정렬(같은 키끼리 모아 정렬) → 리듀스(키마다 합치거나 요약). 단어 세기라면 맵이 (단어, 1)을 만들고, 리듀스가 단어마다 1을 더한다. 중간 결과를 디스크에 쓰기 때문에 반복 계산(머신러닝)은 느리다.
하둡 에코시스템
| 분야 | 도구 | 한 줄 설명 |
|---|---|---|
| 수집 | Sqoop | 관계형 데이터베이스와 HDFS 사이 대량 전송 |
| 수집 | Flume, Chukwa, Scribe | 여러 서버의 로그를 모아 저장소로 보냄 |
| 수집 | Kafka | 대용량 실시간 메시지(스트림)를 주고받는 분산 메시징 |
| 저장 | HBase | HDFS 위의 컬럼 기반 NoSQL 데이터베이스 |
| 처리 | Hive | SQL 과 비슷한 HiveQL 로 맵리듀스 작업을 만듦 |
| 처리 | Pig | Pig Latin 스크립트로 데이터 흐름을 짬 |
| 처리 | Spark | 메모리 기반 분산 처리. Spark SQL, 스트리밍, MLlib(머신러닝), GraphX |
| 관리 | ZooKeeper | 분산 노드 사이 설정·동기화를 조율 |
| 관리 | Oozie | 하둡 작업을 순서대로 묶어 실행하는 워크플로 스케줄러 |
| 분석 | Mahout | 하둡 위에서 돌아가는 머신러닝 라이브러리 |
맵리듀스와 스파크
| 맵리듀스 | 스파크 | |
|---|---|---|
| 중간 결과 | 디스크에 저장 | 메모리에 유지(RDD) |
| 강점 | 아주 큰 배치 작업을 안정적으로 | 반복 계산, 대화형 분석, 스트리밍 |
| 속도 | 반복 작업에서 느림 | 반복 작업에서 훨씬 빠름 |
시험에 이렇게 나와요
- HDFS: 네임노드(메타데이터) / 데이터노드(블록), 기본 복제 3
- 맵리듀스 순서: 맵 → 셔플·정렬 → 리듀스
- YARN: 하둡 2부터 자원 관리와 작업 스케줄링
- Sqoop 은 RDB 와 HDFS 사이, Flume 은 로그, Kafka 는 실시간 메시징
- Hive 는 SQL 과 비슷한 HiveQL, HBase 는 컬럼 기반 NoSQL
- 스파크는 인메모리라 반복 계산이 빠르다
출제기준 1과목 '빅데이터 플랫폼'
확인 문제
Q1. 하둡의 분산 파일 시스템에서 파일이 어느 데이터노드의 어느 블록에 있는지(메타데이터)를 관리하는 것은?
- 주키퍼
- 네임노드
- 리듀서
- 데이터노드
정답 보기
2번 네임노드
네임노드가 파일 이름·블록 위치 같은 메타데이터를 관리하고, 실제 블록은 데이터노드들이 나눠 저장한다.
Q2. 관계형 데이터베이스의 테이블을 HDFS 로 대량으로 옮길 때 쓰는 도구는?
- Flume
- Sqoop
- ZooKeeper
- Oozie
정답 보기
2번 Sqoop
Sqoop 은 관계형 DB 와 하둡 사이 데이터를 주고받는다.
Q3. 맵리듀스의 처리 순서로 알맞은 것은?
- 맵 → 셔플·정렬 → 리듀스
- 리듀스 → 셔플 → 맵
- 맵 → 리듀스 → 셔플
- 셔플 → 맵 → 리듀스
정답 보기
1번 맵 → 셔플·정렬 → 리듀스
맵이 키-값을 만들고, 같은 키끼리 모아 정렬한 뒤, 리듀스가 합친다.
Q4. SQL 과 비슷한 질의 언어로 하둡 데이터를 다루게 해 주는 도구는?
- Mahout
- Hive
- Pig
- Kafka
정답 보기
2번 Hive
Hive 는 HiveQL 을 맵리듀스(또는 다른 엔진) 작업으로 바꿔 실행한다.
Q5. 스파크가 맵리듀스보다 반복 계산에서 빠른 가장 큰 이유는?
- 중간 결과를 메모리에 두어서
- 복제를 하지 않아서
- 네임노드가 없어서
- 블록을 더 작게 나눠서
정답 보기
1번 중간 결과를 메모리에 두어서
맵리듀스는 단계마다 디스크에 쓰지만 스파크는 메모리에 유지한다.
Q6. 하둡 HDFS 에 대한 설명으로 옳지 않은 것은?
- 범용 서버 여러 대로 구성할 수 있다
- 네임노드가 메타데이터를 관리한다
- 블록을 여러 노드에 복제해 저장한다
- 작은 파일을 자주 고쳐 쓰는 작업에 가장 알맞다
정답 보기
4번 작은 파일을 자주 고쳐 쓰는 작업에 가장 알맞다
HDFS 는 큰 파일을 한 번 쓰고 여러 번 읽는 데 맞다.
헷갈리기 쉬운 O·X
HDFS 의 실제 데이터 블록은 네임노드에 저장된다.
정답 보기
X 블록은 데이터노드에, 네임노드에는 메타데이터만 있다.
Kafka 는 대용량 실시간 데이터를 주고받는 분산 메시징 시스템이다.
정답 보기
O
HBase 는 행 기반 관계형 데이터베이스다.
정답 보기
X HBase 는 HDFS 위의 컬럼 기반 NoSQL 이다.