ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [빅데이터 전문가의 하둡관리] 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보다 더 세밀한 블록 관련 정보를 얻을 수 있다.
        • 총 블록 수
        • 복제를 기다리는 블록들의 수
        • 현재 복제중인 블록들의 수

     

    • 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 dfsadmin -setQuota <최대 파일 수> <디렉토리>
    •  
      • hdfs dfsadmin -setSpaceQuota <최대 파일 수> <디렉토리>
    •  
      • hdfs dfs -count -q
        • 현재 HDFS 공간 쿼터 사이즈 체크
        • NAME_QUOTA | REMAINING_NAME_QUOTA | SPACE_QUOTA | REMAINING_SPACE_QUOTA | 디렉토리수 | 파일 수 | 파일 사이즈 | 경로
    •  
      • 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를 낮추어 실행하였고, 효과를 보았다.

     

     


    이 포스팅은 2024년 10월 ~ 12월에 공부한 도서인 빅데이터 전문가의 하둡관리 9장을 공부한 후 작성하였습니다.

     

     

     

     

    댓글

Copyright in 2020 (And Beyond)