hdfs指令中count和ls的区别

hadoop fs -count < hdfs path >
统计hdfs对应路径下的目录个数,文件个数,文件总计大小

count的统计,会向下递归统计
count目录数的统计,不仅会向下递归统计,还会包括根目录的

[root@brms01 ~]# hadoop fs -mkdir -p lyy/1
[root@brms01 ~]# hadoop fs -mkdir -p lyy/2
[root@brms01 ~]# hadoop fs -count lyy
           3            0                  0 lyy

可以发现,count的目录数为3,即lyy目录、 lyy下的1目录、 lyy下的2目录

ls统计,如果下面没有文件夹或文件,则数量为0;如果有文件夹或文件,则数量为文件夹和文件数量加1,因为ls指令的结果中有一句数量和的说明语句

[root@brms01 ~]# hadoop fs -ls lyy
Found 2 items
drwxr-xr-x   - root hdfs          0 2019-01-07 16:23 lyy/1
drwxr-xr-x   - root hdfs          0 2019-01-07 16:23 lyy/2
[root@brms01 ~]# hadoop fs -ls lyy|wc -l
3

也是3,其实是ls指令结果数据行数的数量

[root@brms01 ~]# hadoop fs -ls lyy/1|wc -l
0
[root@brms01 ~]# hadoop fs -ls lyy/1
[root@brms01 ~]# 

另外,在linux下,ls指令又有所不同,不管是否有文件夹或者文件,数量都是文件夹和文件数的和,不需要加1

[root@brms01 lyy]# ll
total 4
drwxr-xr-x 2 root root 4096 Jan  7 16:43 1
[root@brms01 lyy]# ls
1
[root@brms01 lyy]# ls |wc -l
1
[root@brms01 lyy]#

ll或ls -l查询结果中的“total”数值,是指该目录下所有文件及其子目录所占用块数的总和,也即所列出内容的磁盘占用空间总和值。

[root@brms01 lyy]# ll
total 4
drwxr-xr-x 2 root root 4096 Jan  7 16:43 1
[root@brms01 lyy]# ll -a
total 12
drwxr-xr-x   3 root root 4096 Jan  7 16:43 .
dr-xr-x---. 11 root root 4096 Jan  7 16:43 ..
drwxr-xr-x   2 root root 4096 Jan  7 16:43 1

但为什么total却是“所列出内容的磁盘占用空间总和值。"? 请注意其中的“占用”二字,何为占用?

我们知道文件系统中是有block(块)的概念的,块就像一间间屋子,如果你得文件系统中存的都是一些较大的文件,那么使用较大的block会得到较好的性能,反之亦然。

那么数据在存放过程中占据的block的大小就是 “占用”的空间。
1块=4KB=4096B(Byte,字节)=4096*8b(bit,位)

不同的系统块大小不一样,但一般都是4KB
查看块大小:

[root@brms01 ~]# getconf PAGESIZE
4096

你可能感兴趣的:(haddop)