Apache Hadoop — HDFS 와 YARN 을 한 파드에 세우고 운영한다 · HDFS 의 두 역할 · 실습
한 파드 HDFS 에 파일을 올리고 두 길로 읽는다
목표
파드 하나에 뜬 의사 분산 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 -confKey 로 fs.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 를 넣으세요.
참고
- HDFS 는 파드가 뜰 때 이미 켜져 있습니다(
lab-hadoop status). 꺼졌다면lab-hadoop start로 켭니다. 데이터는 NameNode·DataNode 의 디스크에 남아 있어 다시 켜면 그대로입니다. hdfs dfs명령 하나가 JVM 하나라 1–2초 걸립니다.export HADOOP_ROOT_LOGGER=WARN,console로 로그를 줄이면 출력이 깔끔합니다.- WebHDFS:
curl -s "http://localhost:9870/webhdfs/v1<경로>?op=LISTSTATUS&user.name=root". 내용을 받는op=OPEN은 DataNode 로 넘겨주므로(307)curl -L이 필요합니다. - 흔한 실수: 로컬 경로와 HDFS 경로를 헷갈리는 것(
/user/root/...는 HDFS 안),-report를 NameNode 가 뜨기 전에 찍는 것, mv 로 파일이 복사된다고 여기는 것. - 공식 문서: [HDFS Architecture](https://hadoop.apache.org/docs/r3.5.0/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html) · [Pseudo-Distributed Operation](https://hadoop.apache.org/docs/r3.5.0/hadoop-project-dist/hadoop-common/SingleCluster.html) · [FileSystem Shell](https://hadoop.apache.org/docs/r3.5.0/hadoop-project-dist/hadoop-common/FileSystemShell.html) · [WebHDFS REST API](https://hadoop.apache.org/docs/r3.5.0/hadoop-project-dist/hadoop-hdfs/WebHDFS.html)
8단계
- 설정은 어디서 오나
- NameNode 가 보는 클러스터
- HDFS 안에 자리 만들기
- 파일 올리기
- 셸로 읽기
- HTTP 로 읽기 — WebHDFS
- 옮기기는 이름표만 바꾼다
- 두 역할을 숫자로 남기기