読者です 読者をやめる 読者になる 読者になる

たごもりすメモ

コードとかその他の話とか。

YARN/Hiveな環境で大量の一時ファイルとログをごりごり削除する

Hadoop Hive

YARN使っててHDFSにログを吐くよう設定してるとアホみたいにたまっていくので削除しないとやばい。
とりあえず10日経過したら削除するようにした。

(
    for searchpath in '/tmp/hive-*' '/mr-history/done/*/*' '/mr-history/tmp/*' '/yarn/user/*/.staging' '/yarn/log/apps/*/logs';
    do
        hdfs dfs -ls "$searchpath" | grep -v '^Found [0-9]* items' | \
            perl -MTime::Piece -MTime::Seconds \
            -e '$t = ((scalar(localtime(time))) - ONE_DAY*10)->strftime("%Y%m%d");' \
            -e 'while(<>){ chomp; @f = split(/ +/, $_, 8); $d = $f[5]; $d =~ s/-//g; if($d < $t){ print $f[-1],"\n"; } }'
    done
) | xargs hdfs dfs -rm -r

perl 5.10 以降で使える、かな? あと /mr-history とか /yarn/log/apps とかは設定による。