← 목록으로
단계 05

분산 저장 — HDFS와 미니 하둡 설치

큰 파일을 여러 컴퓨터에 나눠 담는 HDFS의 기본 구조, 그리고 내 컴퓨터에 미니 하둡을 띄워 파일을 올려보는 방법.

기본 개념 — HDFS

앞 챕터에서 본 DB 클러스터는 "표" 데이터용입니다. 로그·이미지·CSV 같은 파일 덩어리가 수십 TB라면, 파일 자체를 여러 컴퓨터에 나눠 담는 분산 파일 시스템을 씁니다. 대표가 HDFS입니다.

  [NameNode]   ← 목차: 어떤 파일이 어느 컴퓨터에 있는지
      │
  ┌───┴────┬────────┐
[DataNode][DataNode][DataNode]   ← 실제 데이터 조각 저장
  • NameNode = 도서관 사서 (어디 있는지만 앎)
  • DataNode = 서가 (실제로 책을 꽂아둠)
  • 큰 파일은 조각(블록) 으로 잘라 나눠 담고(= 샤딩), 각 조각을 3개 복사(= 복제)

앞 챕터의 DB 클러스터와 원리가 똑같습니다. 나눠 담고, 복사한다. 이게 분산 저장의 전부입니다.

내 컴퓨터에 미니 하둡 띄우기

진짜 하둡은 컴퓨터 수십 대가 필요하지만, Docker를 쓰면 내 노트북 한 대에 "미니 하둡"을 띄울 수 있습니다.

준비: Docker Desktop 설치

  1. https://www.docker.com/products/docker-desktop/ 에서 내 운영체제(맥/윈도우)용 다운로드
  2. 설치 후 실행 — 화면 왼쪽 아래가 초록색(Engine running)이면 준비 끝
  3. 터미널에서 확인
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
목록lshdfs dfs -ls /경로
폴더 만들기mkdirhdfs dfs -mkdir /경로
올리기cphdfs dfs -put 파일 /경로
내려받기cphdfs dfs -get /경로/파일 .
내용 보기cathdfs dfs -cat /경로/파일
지우기rmhdfs 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 foundDocker Desktop이 실행 중인지 확인
port is already allocated다른 프로그램이 9870/9000 포트 사용 중 → 그 프로그램 종료
localhost:9870 이 안 열림1~2분 기다린 후 새로고침 (시작에 시간이 걸림)
hdfs: command not founddocker exec -it namenode bash 로 하둡 안에 들어갔는지 확인

연습

  1. Docker Desktop 설치 → 미니 하둡 실행 → http://localhost:9870 화면 캡처
  2. 아무 CSV 파일이나 /data/ 에 올리고 hdfs dfs -ls /data 결과 캡처
  3. 올린 파일을 hdfs dfs -get 으로 다시 내려받아 내용이 같은지 확인