기본 개념 — HDFS
앞 챕터에서 본 DB 클러스터는 "표" 데이터용입니다. 로그·이미지·CSV 같은 파일 덩어리가 수십 TB라면, 파일 자체를 여러 컴퓨터에 나눠 담는 분산 파일 시스템을 씁니다. 대표가 HDFS입니다.
[NameNode] ← 목차: 어떤 파일이 어느 컴퓨터에 있는지
│
┌───┴────┬────────┐
[DataNode][DataNode][DataNode] ← 실제 데이터 조각 저장
- NameNode = 도서관 사서 (어디 있는지만 앎)
- DataNode = 서가 (실제로 책을 꽂아둠)
- 큰 파일은 조각(블록) 으로 잘라 나눠 담고(= 샤딩), 각 조각을 3개 복사(= 복제)
앞 챕터의 DB 클러스터와 원리가 똑같습니다. 나눠 담고, 복사한다. 이게 분산 저장의 전부입니다.
내 컴퓨터에 미니 하둡 띄우기
진짜 하둡은 컴퓨터 수십 대가 필요하지만, Docker를 쓰면 내 노트북 한 대에 "미니 하둡"을 띄울 수 있습니다.
준비: Docker Desktop 설치
- https://www.docker.com/products/docker-desktop/ 에서 내 운영체제(맥/윈도우)용 다운로드
- 설치 후 실행 — 화면 왼쪽 아래가 초록색(Engine running)이면 준비 끝
- 터미널에서 확인
docker --version
윈도우는 설치 중 WSL 2 를 켜라는 안내가 나오면 "예"를 누르고 재부팅하면 됩니다.
1단계: 하둡 내려받고 실행
git clone https://github.com/big-data-europe/docker-hadoop
cd docker-hadoop
docker compose up -d
처음엔 이미지를 받느라 몇 분 걸립니다. 끝나면 확인:
docker ps # namenode, datanode 등이 보이면 성공
브라우저에서 http://localhost:9870 을 열면 하둡 관리 화면이 뜹니다. 여기서 DataNode 개수, 남은 용량을 볼 수 있습니다.
2단계: 하둡 안으로 들어가기
docker exec -it namenode bash
프롬프트가 바뀌면 이제 하둡 컴퓨터 안에 들어온 것입니다.
3단계: 파일 올리고 확인하기
HDFS 명령어는 리눅스 명령어 앞에 hdfs dfs - 만 붙인 것입니다.
# 폴더 만들기
hdfs dfs -mkdir -p /data
# 테스트 파일 만들어서 올리기
echo "big data" > test.txt
hdfs dfs -put test.txt /data/
# 목록 보기
hdfs dfs -ls /data
# 내용 보기
hdfs dfs -cat /data/test.txt
# 내려받기
hdfs dfs -get /data/test.txt downloaded.txt
| 하고 싶은 일 | 리눅스 | HDFS |
|---|---|---|
| 목록 | ls | hdfs dfs -ls /경로 |
| 폴더 만들기 | mkdir | hdfs dfs -mkdir /경로 |
| 올리기 | cp | hdfs dfs -put 파일 /경로 |
| 내려받기 | cp | hdfs dfs -get /경로/파일 . |
| 내용 보기 | cat | hdfs dfs -cat /경로/파일 |
| 지우기 | rm | hdfs dfs -rm /경로/파일 |
내 컴퓨터의 CSV를 하둡에 올리려면
docker exec로 들어간 하둡 안에는 내 컴퓨터 파일이 없습니다. 먼저 복사해 넣어야 합니다.
# (하둡 밖, 내 터미널에서)
docker cp sales.csv namenode:/tmp/sales.csv
# (하둡 안에서)
docker exec -it namenode bash
hdfs dfs -put /tmp/sales.csv /data/
hdfs dfs -ls /data
끄기
exit # 하둡 밖으로
docker compose down # 하둡 종료 (데이터는 남음)
다시 켤 땐 docker compose up -d 만 하면 됩니다.
자주 나는 문제
| 증상 | 해결 |
|---|---|
docker: command not found | Docker Desktop이 실행 중인지 확인 |
port is already allocated | 다른 프로그램이 9870/9000 포트 사용 중 → 그 프로그램 종료 |
| localhost:9870 이 안 열림 | 1~2분 기다린 후 새로고침 (시작에 시간이 걸림) |
hdfs: command not found | docker exec -it namenode bash 로 하둡 안에 들어갔는지 확인 |
연습
- Docker Desktop 설치 → 미니 하둡 실행 → http://localhost:9870 화면 캡처
- 아무 CSV 파일이나
/data/에 올리고hdfs dfs -ls /data결과 캡처 - 올린 파일을
hdfs dfs -get으로 다시 내려받아 내용이 같은지 확인