티스토리 뷰
하둡을 사용하다보면 디스크 사용량이 70%를 넘어서기 시작하면 장애가 생기는 경우가 은근히 많다.
그리고, 클러스터의 모니터링 알람같은걸 해두면 알람도 많이 오기 때문에 물리적인 디스크 공간을 확보해야 할 필요가 있다. 이때 가장 먼저 삭제시도할 폴더는 HDFS 의 휴지통 공간이다.
휴지통 용량 확인 & 비우기
다음과 같이 hdfs 의 .Trash 를 확인해보면 그 용량이 꽤 무시못한다.
참고로, "hadoop fs -rm -f <경로>" 형태로 지우면, 바로 삭제되는게 아니라 .Trash 폴더로 옮겨지고 특정 기간이 지나면 삭제되는 구조다. 그래서 보통 데이터 마이그레이션과 같이 파일을 많이 복사하고 삭제하는게 반복되면 생각보다 여기에 쌓이는 공간이 꽤 크다.
그래서 hdfs 공간이 부족하면 일단 응급처치(?)는 휴지통부터 비워야 한다. 유저별로 공간이 생기기 때문에 다음과 같이 용량을 체크하고 큰 녀석위주로 수동으로 삭제할 수도 있고,
-------------------------------
-- user 별 .Trash 용량 확인해 보기
-------------------------------
% hadoop fs -du -h /user/*/.Trash
0 0 /user/hdfs/.Trash/170217090001
474.7 G 1.4 T /user/input-data/.Trash/170217090002
55.1 G 165.4 G /user/output-data/.Trash/Current
22.1 G 66.2 G /user/hive/.Trash/Current
0 0 /user/hue/.Trash/170217090003
0 0 /user/hue/.Trash/Current
291.7 G 875.0 G /user/myUser/.Trash/170217090003
30.6 G 91.9 G /user/myUser/.Trash/Current
2.3 T 7.0 T /user/scott/.Trash/170217090003
250.6 G 751.9 G /user/scott/.Trash/Current
다음과 같이 휴지통을 비우는 명령을 실행할 수도 있다.
hadoop fs -expunge
바로 삭제하려면? -skipTrash
보통은 데이터 마이그레이션이나 장애복구를 할때 용량 부족이 많이 일어나는편이라, 중간파일을 삭제할때 휴지통에 넣지 않고 바로 삭제 하는것도 가능하다. 이땐는 다음과 같이 -skipTrash 옵션을 추가해서 삭제하면 된다.
hadoop fs -rm -R -skipTrash <folder-path>
휴지통 비우는 주기 변경하기
-skipTrash 옵션을 쓸때 실수로 root 폴더를 쓰면 대재앙이 일어나기 때문에 찜찜한데 데이터 노드는 늘려줄 생각을 안한다면 선택할 수 있는 선택지는 hdfs 설정(core-site.xml) 을 변경하는것이다.
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>120</value>
</property>
이 관련된 내용은 아래 링크에 설명이 잘 되어있는편이다.
'데이터처리 > Hadoop' 카테고리의 다른 글
[YARN] java.io.IOException: DestHost:destPort 오류문제 (0) | 2022.09.19 |
---|---|
hadoop client 설치와 HADOOP_CLASSPATH 잡기 (0) | 2022.09.06 |
[하둡] 커버로스 인증시 GSS initiate failed 오류문제 (0) | 2022.07.20 |
[HADOOP] Kerberos 인증 적용된 하둡 접근하기 (0) | 2022.07.18 |
[팁] 다른 hdfs 클러스터의 nameservice 등록하는 방법 (0) | 2021.11.18 |