-
[빅데이터 전문가의 하둡관리] HDFS 명령, 퍼미션, 스토리지개발지식 아카이브/Data - Hadoop 2025. 2. 4. 07:30
HDFS 명령, 퍼미션, 스토리지
1. HDFS shell 명령어
- hdfs dfs [1] [2]
- 1: ls, mkdir 등 일반적인 리눅스 파일 시스템 명령어
- 2: HDFS 특화 옵션 (예시: replica)
- hdfs dfs -help
- hdfs dfs -ls
- hdfs dfs -stat "%r" $PATH
- stat 명령을 이용하면 상세한 정보를 얻을 수 있다 (예: 블록 사이즈, 복제 계수, 소유자 등)
- hdfs dfs -mkdir -p
- hdfs dfs -rm -R
- HDFS는 삭제하더라도 혹시 모르는 상황에 대비해 trash 디렉토리에 저장한 후 삭제한다. (비우는 주기는 conf로 조정 가능)
- hdfs dfs -rmdir
- 비어있는 디렉토리를 삭제한다
- hdfs dfs -rm -skipTrash
- 파일을 즉각 지우고 싶다면 -skipTrash를 추가한다
- hdfs dfs -chown
- hdfs dfsadmin -help
- dfsadmin 명령 옵션에 유용한 것들이 많다
- hdfs dfsadmin -report
- HDFS의 상세 정보, 클러스터의 각 노드에 대해 보여준다
- 스토리지 할당에 대한 요약 정보 (스토리지 용량)
- 캐시 사용 비율 등
Configured Capacity: 137527100964864 (125.08 TB)
DFS Used: 104379550788078 (94.93 TB)
Non DFS Used: 0 (0 B)
DFS Remaining: 33145760886145 (30.15 TB)
DFS Used%: 75.90%
DFS Remaining%: 24.10%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 47
Last contact: Wed Oct 30 19:59:15 KST 2024
Last Block Report: Wed Oct 30 18:57:31 KST 2024
Num of Blocks: 2664634
(생략)- hdfs dfsadmin -refreshNodes
- 네임노드에 연결이 허용된 데이터노드 목록(hdfs-site.xml)을 네임노드가 갱신할 수 있도록 함
- hdfs dfsadmin -metasave
- -report보다 더 세밀한 블록 관련 정보를 얻을 수 있다.
- 총 블록 수
- 복제를 기다리는 블록들의 수
- 현재 복제중인 블록들의 수
- -report보다 더 세밀한 블록 관련 정보를 얻을 수 있다.
- hdfs fsck
- 무결성 검사
2. HDFS 퍼미션과 사용자 관리- dfs.permissions.enabled 가 true이면 퍼미션 체크가 활성화
- 하둡은 uid, gid와 같은 숫자 식별자 개념이 없고 커버로스로 사용자를 식별한다
- 사용자 생성하기
- hdfs 계정으로 유저 홈 디렉토리를 생성한 후 소유권을 변경한다 hdfs dfs -chown 유저:그룹
- 새로 생성한 사용자에 대해 네임노드에게 알린다 hdfs dfsadmin -refreshUserToGroupMappings
- 생성한 유저 디렉토리에 공간쿼터를 지정한다 hdfs dfsadmin -setSpaceQuta 30g /user/minseo
- 생성한 유저 디렉토리에 네임 쿼터를 지정한다 hdfs dfsadmin -setQuota 100000 /user/minseo
- hdfs가 기본 super user이다
3. HDFS 스토리지 관리하기
-
- hdfs dfs -df -h
- 현재 경로의 사용 현황에 대한 정보를 얻을 수 있다
- 출력 정보 (1) 파일의 실제 사이즈 (2) 복제로 인해 차지하고 있는 실제 공간 사이즈
- hdfs dfs -df -h
-
- 쿼터 설정
- 쿼터는 디렉토리에 대한 설정이므로, 사용자의 사용량을 제한하고 싶다면 사용자가 사용할 수 있는 폴더를 제한해야 한다
- 재귀적으로 적용된다
- 쿼터 설정
-
- hdfs dfsadmin -setQuota <최대 파일 수> <디렉토리>
-
- hdfs dfsadmin -setSpaceQuota <최대 파일 수> <디렉토리>
-
- hdfs dfs -count -q
- 현재 HDFS 공간 쿼터 사이즈 체크
- NAME_QUOTA | REMAINING_NAME_QUOTA | SPACE_QUOTA | REMAINING_SPACE_QUOTA | 디렉토리수 | 파일 수 | 파일 사이즈 | 경로
- hdfs dfs -count -q
-
- hdfs dfs -clrSpaceQuota
- 쿼터를 제거할 수 있다.
- hdfs dfs -clrSpaceQuota
4. HDFS 데이터 리밸런싱하기
- 데이터 노드를 새로 추가할 때는 HDFS에 불균형이 발생할 수 있다
- 네임노드가 데이터노드에 블록을 지정하는 기준은
- 현재 블록을 쓰고 있는 노드에 1개
- 현재 블록을 쓰고 있는 노드와 같은 랙에 있는 노드에 1개
- 다른 랙에 1개
- hdfs -balancer 명령어를 사용하여 밸런싱을 트리거할 수 있다
- 밸런싱은 주기적으로 해주는 것이 좋다
- 리밸런싱 트리거시.. threshold 를 잘 설정하자!
- Threshold가 10일 때 효과가 미미했다. (default)
- 만약 클러스터의 노드들 간에 디스크 사용률 차이가 10% 미만이면, 리밸런서는 이를 "충분한 불균형"으로 보지 않아 별도의 데이터 이동 작업을 수행하지 않을 수 있습니다.
- 즉, 현재 클러스터의 불균형 정도가 10% threshold 이하라면, 리밸런싱 동작 자체가 제한적이거나 실행되지 않아 효과가 미미하게 나타날 수 있습니다.
- Threshold를 5로 낮춰 실행하였다. -> 효과 보았음
- 현재 HDFS를 꽉꽉 채워 운영중인 입장이다 ㅠㅠ 그래서 HDFS 사용률이 90%인 노드에서 81%인 노드로 데이터를 이동시키는 것은 우리 입장에서 유의미하다. 그래서 Threshold를 낮추어 실행하였고, 효과를 보았다.
- Threshold가 10일 때 효과가 미미했다. (default)
이 포스팅은 2024년 10월 ~ 12월에 공부한 도서인 빅데이터 전문가의 하둡관리 9장을 공부한 후 작성하였습니다.
'개발지식 아카이브 > Data - Hadoop' 카테고리의 다른 글
[빅데이터 전문가의 하둡관리] 하둡 로깅 이해하기 (0) 2025.02.24 [빅데이터 전문가의 하둡관리] 하둡 클러스터의 리소스 할당 (0) 2025.02.19 [빅데이터 전문가의 하둡관리] 네임노드 오퍼레이션, 고가용성 그리고 페더레이션 (0) 2025.02.10 [빅데이터 전문가의 하둡관리] HDFS의 동작 알고리즘 (1) 2024.12.18 [빅데이터 전문가의 하둡관리] Hadoop 아키텍처 (1) 2024.12.16 - hdfs dfs [1] [2]