说明:统计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文件来实现,后续写一篇操作文档;