統計HDFS中文件數量、大小、以及在某范圍大小的文件數量


說明:統計HDFS文件數量大小,小於20M文件數量

 

1、HDFS 相關命令

# 統計文件大小
hdfs dfs -du -h / 

# 統計文件數量,返回的數據是目錄個數,文件個數,文件總計大小,輸入路徑
hdfs dfs -count / 

#統計所有文件的信息,過濾文件夾, 只統計文件,因為使用-ls -R 之后,可以看到文件是”-“開頭,文件夾是”d”開頭
hdfs dfs -ls -R /path/data | grep ^- > /data.txt 

 

可見,文件是”-“開頭,文件夾是”d”開頭:

 

 

2、取一些測試數據

使用:hdfs dfs -ls -R / |grep ^-

數據保存在 data.txt 文件中;

-rw-r--r--   3 root            supergroup          0 2018-08-31 10:36 /tmp/azkaban/mutiTest_3_1/_SUCCESS
-rw-r--r--   3 root            supergroup      70514 2018-08-31 10:36 /tmp/azkaban/mutiTest_3_1/part-00000-c-88980650a164-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-08-31 10:37 /tmp/azkaban/mutiTest_3_2/_SUCCESS
-rw-r--r--   3 root            supergroup     160152 2018-08-31 10:37 /tmp/azkaban/mutiTest_3_2/part-00000-f74649c51ec416add-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-08-31 10:38 /tmp/azkaban/mutiTest_3_3/1/_SUCCESS
-rw-r--r--   3 root            supergroup     200425 2018-08-31 10:38 /tmp/azkaban/mutiTest_3_3/1/part-00000-9cd-8ff3-5755f0d74277-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-08-31 10:38 /tmp/azkaban/mutiTest_3_3/2/_SUCCESS
-rw-r--r--   3 root            supergroup        523 2018-08-31 10:38 /tmp/azkaban/mutiTest_3_3/2/part-00000-80c5c6-f830a3dabf10-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-08-31 10:36 /tmp/azkaban/mutiTest_4_1/_SUCCESS
-rw-r--r--   3 root            supergroup      70514 2018-08-31 10:36 /tmp/azkaban/mutiTest_4_1/part-00000-be924497-0b11-44a2f6898-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-08-31 10:37 /tmp/azkaban/mutiTest_4_2/_SUCCESS
-rw-r--r--   3 root            supergroup     160152 2018-08-31 10:37 /tmp/azkaban/mutiTest_4_2/part-00000-f2e48a28-5463-43ee-b92f-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-08-31 10:38 /tmp/azkaban/mutiTest_4_3/1/_SUCCESS
-rw-r--r--   3 root            supergroup     200425 2018-08-31 10:38 /tmp/azkaban/mutiTest_4_3/1/part-00000-00d149ae-c471-9d-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-08-31 10:38 /tmp/azkaban/mutiTest_4_3/2/_SUCCESS
-rw-r--r--   3 root            supergroup        523 2018-08-31 10:38 /tmp/azkaban/mutiTest_4_3/2/part-00000-6e4ea458-f4df-47aa-c000.snappy.parquet
-rw-r--r--   3 root            supergroup          0 2018-09-14 10:35 /tmp/casted-abalone/_SUCCESS
-rw-r--r--   3 root            supergroup      65512 2018-09-14 10:35 /tmp/casted-abalone/part-00000-40e7daf1-6a4b-4512-a776000.snappy.parquet
-rw-r--r--   3 root            supergroup     203890 2018-09-12 14:22 /tmp/data.csv
-rwxrwxrwx   3 root            supergroup    2234332 2018-09-11 17:19 /tmp/directory/application_11111111111_0158
-rwxrwxrwx   3 root            supergroup    2278733 2018-09-11 17:22 /tmp/directory/application_11111111111_0159
-rwxrwxrwx   3 root            supergroup    2285701 2018-09-11 17:23 /tmp/directory/application_11111111111_0160
-rwxrwxrwx   3 root            supergroup    2263181 2018-09-12 08:55 /tmp/directory/application_11111111111_0161
-rwxrwxrwx   3 root            supergroup    2508930 2018-09-12 10:25 /tmp/directory/application_11111111111_0162
-rwxrwxrwx   3 root            supergroup    2657162 2018-09-12 10:57 /tmp/directory/application_11111111111_0163
-rwxrwxrwx   3 root            supergroup  789259696 2018-09-12 15:19 /tmp/directory/application_11111111111_0164
-rwxrwxrwx   3 root            supergroup  799593790 2018-09-12 15:52 /tmp/directory/application_111111111111_0165
-rwxrwxrwx   3 root            supergroup  800492474 2018-09-12 16:21 /tmp/directory/application_11111111111_0166
-rwxrwxrwx   3 root            supergroup     186277 2018-09-12 16:29 /tmp/directory/application_11111111111_0167
-rwxrwxrwx   3 root            supergroup     193286 2018-09-12 16:32 /tmp/directory/application_11111111111_0168

 

3、使用python腳本分析

安裝numpy和pandas模塊:

> pip3 install -i https://pypi.doubanio.com/simple/  numpy

> pip3 install -i https://pypi.doubanio.com/simple/ pandas

 

腳本內容:

#!/usr/bin/env python
# encoding: utf-8

import pandas as pd

# data.txt中有8列數據
file = 'data.txt'

# 統計數據一共8列
df = pd.read_table(file, delim_whitespace=True, names=[1, 2, 3, 4, 5, 6, 7, 8])
print('文件總行數:{}'.format(len(df)))

# 第五列是大小,取小於20M(換算成b)的文件數據
df1 = df[df[5] < 20971520]

# 統計數量
print('小於20M的文件數:{}'.format(len(df1)))

 

運行:

 

 

 

上述方案也可以通過分析fsimage文件來實現,后續寫一篇操作文檔;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM