LabHub
배우기 러닝패스 코스

Apache Hadoop — HDFS 와 YARN 을 한 파드에 세우고 운영한다 · HDFS 의 두 역할 · 실습

한 파드 HDFS 에 파일을 올리고 두 길로 읽는다

LabHub 에서 이어서 보기

목표

파드 하나에 뜬 의사 분산 HDFS 의 설정과 상태를 확인하고, 접근 로그 하나를 올려 셸(hdfs dfs)과 HTTP(WebHDFS) 두 길로 읽는다. 파일을 옮기는(mv) 일이 NameNode 의 이름표만 바꾸는 일이라는 것을 fileId 와 블록 ID 로 확인한다.

왜 중요한가

HDFS 는 역할을 둘로 나눈 파일 시스템이다. NameNode 는 디렉터리 트리와 '이 파일은 어떤 블록들이고 그 블록은 어느 DataNode 에 있다' 는 메타데이터를 메모리에 들고 있고, DataNode 는 블록의 바이트를 자기 디스크에 파일로 들고 있다. 클라이언트는 NameNode 에게 자리를 묻고 바이트는 DataNode 와 직접 주고받는다.
이 분리를 알면 운영의 많은 것이 설명된다. 이름 바꾸기와 옮기기는 바이트를 건드리지 않으니 크기와 상관없이 즉시 끝나고, NameNode 가 멈추면 바이트가 멀쩡해도 아무것도 읽을 수 없다. 설정이 어디서 오는지(*-site.xml*-default.xml 을 덮는다)도 같은 이유로 중요하다 — 클라이언트와 데몬이 서로 다른 설정을 보면 같은 명령이 다르게 동작한다.
WebHDFS 는 같은 NameNode 에 HTTP 로 묻는 길이다. 자바 클라이언트 없이 curl 하나로 목록·상태·내용을 받을 수 있어서, 스크립트와 모니터링은 대개 이 길을 쓴다.

단계

1. hdfs getconf -confKeyfs.defaultFS·dfs.replication·dfs.blocksize 를 물어 /root/hdp/first/conf.txt키=값 세 줄로 쓰세요.
2. hdfs dfsadmin -report 출력을 /root/hdp/first/report.txt 에 저장하세요.
3. HDFS 에 /user/root/first/logs 디렉터리를 만드세요.
4. /data/logs/access-2026-03-01.log/user/root/first/logs/ 에 올리세요.
5. hdfs dfs -cat 으로 그 파일의 줄 수를 세어 /root/hdp/first/lines.txt 에 정수로 적으세요.
6. curl 로 WebHDFS 의 LISTSTATUS 를 불러 /user/root/first/logs 목록 응답을 /root/hdp/first/liststatus.json 에 저장하세요.
7. /user/root/first/archive 를 만들고 로그 파일을 /user/root/first/archive/access-0301.log 로 옮긴 뒤, hdfs fsck <새 경로> -files -blocks 출력을 /root/hdp/first/blocks.txt 에 저장하세요.
8. /root/hdp/first/report.md## 두 역할 ## 두 길 ## 이름만 바뀐다 세 절을 쓰세요. 둘째 절에 5단계의 줄 수를, 셋째 절에 옮기기 전후 같았던 fileId 를 넣으세요.

참고

8단계

  1. 설정은 어디서 오나
  2. NameNode 가 보는 클러스터
  3. HDFS 안에 자리 만들기
  4. 파일 올리기
  5. 셸로 읽기
  6. HTTP 로 읽기 — WebHDFS
  7. 옮기기는 이름표만 바꾼다
  8. 두 역할을 숫자로 남기기