filestatus对象块大小

lnxxn5zx  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(293)

根据hdfs指南,对于较小的文件大小,hadoop没有为通过数据节点存储文件数据分配完整的块。我正在使用filestatus使用javaapi来连接以获取与文件路径相关联的元数据信息。下面提到的是代码。

...
FileSystem fs = FileSystem.get(URI.create("hdfs://10.0.7.111:8020/"), conf);
iterator = fs.listFiles(new Path("/"), true);           
            while(iterator.hasNext()){
                LocatedFileStatus status = iterator.next();             
                Path path = status.getPath();               
                System.out.println(path);
                FileStatus status1 = FileSystem.get(URI.create(path.toString()), conf).getFileStatus(path);
                System.out.println(status1.isDirectory());
                System.out.println(status1.isFile());
                System.out.println("Length " + status1.getLen());
                System.out.println(status1.getReplication());
                System.out.println("Block Size" + status1.getBlockSize());              
            }
...

我希望块大小将是文件大小的大小,但显示128 mb。下面提到的是输出。我的理解正确吗?请提前回复。

File : hdfs://10.0.7.111:8020/t1/test1.txt
...
Length : 53
...
Block Size : 134217728
nwsw7zdq

nwsw7zdq1#

与我们经常使用的非分布式文件系统(hdfs、ext3、fat32等)相比,hadoop中的块大小具有非常不同的含义。您不应该像在其他文件系统中那样担心浪费空间和块大小。
hdfs中的块大小仅表示:1)在存储文件时,hdfs会将文件分块存储在不同的机器上,以便在多台机器上均匀地分布数据
2) 读取时,每个块将运行一个Map器任务,在处理大型文件时允许并行化
顺便说一句,您可以查询每个文件的块大小的原因是,您还可以设置每个文件的块大小,这与常用的文件系统相比也有很大的不同。

相关问题