一般的なLinuxファイルシステムでdu -sh
を知っています。しかし、HDFSでそれを行う方法は?
hadoop fs -du -s -h /path/to/dir
は、ディレクトリのサイズを読み取り可能な形式で表示します。
Matt D および他の回答に拡張すると、コマンドはApache Hadoop 3.0.0まで可能です。
hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]
指定されたディレクトリに含まれるファイルとディレクトリのサイズ、またはファイルだけの場合はファイルの長さを表示します。
オプション:
- -sオプションを使用すると、個々のファイルではなくファイル長の集計サマリーが表示されます。 -sオプションを使用しない場合、指定されたパスから1レベルの深さまで計算されます。
- -hオプションは、ファイルサイズをhuman-readableの形式でフォーマットします(例:67108864の代わりに64.0m)
- -vオプションは、ヘッダー行として列の名前を表示します。
- -xオプションは、結果の計算からexclude snapshotsになります。 -xオプション(デフォルト)を使用しない場合、結果は常に、指定されたパス下のすべてのスナップショットを含むすべてのINodeから計算されます。
+-------------------------------------------------------------------+
| size | disk_space_consumed_with_all_replicas | full_path_name |
+-------------------------------------------------------------------+
hadoop fs -du /user/hadoop/dir1 \
/user/hadoop/file1 \
hdfs://nn.example.com/user/hadoop/dir1
終了コード:成功時に0を返し、エラー時に-1を返します。
これにより、サイズがGBで取得されます
hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
ディレクトリ内のファイルの特定グループの合計を計算しようとすると、-s
オプションは機能しません(Hadoop 2.7.1で)。例えば:
ディレクトリ構造:
some_dir
├abc.txt
├count1.txt
├count2.txt
└def.txt
各ファイルのサイズは1 KBと仮定します。以下を使用して、ディレクトリ全体を要約できます。
hdfs dfs -du -s some_dir
4096 some_dir
ただし、「count」を含むすべてのファイルの合計が必要な場合、コマンドは不十分です。
hdfs dfs -du -s some_dir/count*
1024 some_dir/count1.txt
1024 some_dir/count2.txt
これを回避するには、通常、出力をawkに渡します。
hdfs dfs -du some_dir/count* | awk '{ total+=$1 } END { print total }'
2048
ディレクトリのサイズを取得するには、hdfs dfs -du -s -h/$ yourDirectoryNameを使用できます。 hdfs dfsadmin -reportを使用すると、クラスターレベルのクイックストレージレポートを表示できます。
Hadoopクラスターの使用済みスペースの%Sudo -u hdfs hadoop fs –df
特定のフォルダーの下の容量:Sudo -u hdfs hadoop fs -du -h /user
hdfs dfs -count <dir>
manページからの情報:
-count [-q] [-h] [-v] [-t [<storage type>]] [-u] <path> ... :
Count the number of directories, files and bytes under the paths
that match the specified file pattern. The output columns are:
DIR_COUNT FILE_COUNT CONTENT_SIZE PATHNAME
or, with the -q option:
QUOTA REM_QUOTA SPACE_QUOTA REM_SPACE_QUOTA
DIR_COUNT FILE_COUNT CONTENT_SIZE PATHNAME