在Hadoop fs中如何查找特定文件的块大小?
我主要对命令行感兴趣,例如:
hadoop fs ... hdfs://fs1.data/...
但它看起来并不存在。有Java解决方案吗?
答案 0 :(得分:32)
其他答案中的fsck
命令列出了块,并允许您查看块的数量。但是,要查看实际的块大小(以字节为单位),没有额外的错误:
hadoop fs -stat %o /filename
默认块大小为:
hdfs getconf -confKey dfs.blocksize
hadoop fs -stat
命令中未记录块大小的单位,但是,查看source line和docs for the method it calls,我们可以看到它使用字节,无法报告块大小大约9艾字节。
hdfs getconf
命令的单位可能不是字节。它返回配置文件中dfs.blocksize
使用的任何字符串。 (这可以在final function和its indirect caller)
答案 1 :(得分:13)
似乎hadoop fs没有选项可以做到这一点。
但是hadoop fsck可以。
你可以试试这个
$HADOOP_HOME/bin/hadoop fsck /path/to/file -files -blocks
答案 2 :(得分:1)
我认为应该可以:
hadoop fsck /filename -blocks
但是连接被拒绝
答案 3 :(得分:1)
尝试在下面编码
path=hdfs://a/b/c
size=`hdfs dfs -count ${path} | awk '{print $3}'`
echo $size
答案 4 :(得分:0)
用于显示我使用的HDFS中现有文件的实际块大小:
[pety@master1 ~]$ hdfs dfs -stat %o /tmp/testfile_64
67108864