파일시스템 셸
파일시스템 셸 (File System Shell)
하둡의 파일시스템은 셸 명령으로 직접 다룰 수 있어요. FS 셸은 HDFS뿐 아니라 Local FS, WebHDFS, S3 FS 등 하둡이 지원하는 다양한 파일시스템을 같은 방식으로 제어하는 셸 명령 모음이에요. 리눅스 명령어에 익숙하다면 거의 그대로 쓸 수 있어요.
출처: https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/FileSystemShell.html
FS 셸은 bin/hadoop fs <args>로 호출해요. 모든 명령은 경로 URI를 인자로 받는데, 형식은 scheme://authority/path예요. HDFS의 scheme은 hdfs, 로컬 FS의 scheme은 file이에요. scheme과 authority는 생략할 수 있고, 생략하면 설정에 지정된 기본 scheme이 사용돼요. 예를 들어 /parent/child는 hdfs://namenodehost/parent/child를 뜻해요. 대부분 명령은 유닉스 명령과 비슷하게 동작하고, 오류 정보는 stderr로, 출력은 stdout으로 나가요. HDFS를 쓸 때 hdfs dfs는 동의어예요.
핵심 명령 몇 가지를 볼게요. -cat은 소스 경로를 stdout으로 복사해요. Usage: hadoop fs -cat [-ignoreCrc] URI [URI ...]이고, -ignoreCrc 옵션은 checksum 검증을 끄는 역할을 해요. 성공 시 0, 실패 시 -1을 반환해요. -ls로 목록을, -mkdir로 디렉터리를 만들 수 있어요. -put과 -get은 로컬과 HDFS 사이 파일 이동에 쓰이며, 각각 copyFromLocal·copyToLocal과 동일해요.
파일 내용 확인·이동 외에도 권한·소유자 관리가 가능해요. -chmod는 Usage: hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]로 권한을 바꾸고, -R 옵션으로 디렉터리 구조를 재귀적으로 적용할 수 있어요. -chown은 Usage: hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]로 소유자를 바꾸며 슈퍼유저만 가능해요. -chgrp는 Usage: hadoop fs -chgrp [-R] GROUP URI [URI ...] 형태예요.
저장 공간 확인도 자주 쓰여요. -df는 여유 공간을 보여주고 -h 옵션으로 사람이 읽기 쉬운 단위(예: 64.0m)로 표시돼요. -du는 파일·디렉터리 크기를 보여주며 -s(요약), -h(읽기 쉬운 단위), -v(헤더), -x(스냅샷 제외) 옵션을 지원해요. -count로 디렉터리·파일·바이트 수를 셀 수도 있어요.
유효성 검증과 배치 작업도 있어요. -checksum은 파일의 checksum 정보를 반환하고 -v 옵션으로 블록 크기도 보여줘요. -test는 조건 검사에, -stat은 파일 상태 확인에 쓰여요. -expunge는 휴지통에서 fs.trash.interval보다 오래된 checkpoint를 영구 삭제해요. 객체 스토리지(S3 등)에서는 일부 명령(예: appendToFile, chmod)이 거의 의미가 없거나 실패할 수 있어서 해당 스토어 문서를 확인해야 해요.
더 알아보기
- Commands Manual에서
hadoop fs일반 셸 옵션 살펴보기 - HDFS 휴지통(trash) 동작은 HDFS Architecture 문서 참고