Hadoop fs查找块大小?
Posted
技术标签:
【中文标题】Hadoop fs查找块大小?【英文标题】:Hadoop fs lookup for block size? 【发布时间】:2011-12-07 06:17:53 【问题描述】:在 Hadoop fs 中如何查找特定文件的块大小?
我主要对命令行感兴趣,例如:
hadoop fs ... hdfs://fs1.data/...
但它看起来并不存在。有Java解决方案吗?
【问题讨论】:
您是指特定的文件大小吗? 不,块大小。默认 HDFS 块大小为 64MB,可以更改。 【参考方案1】:其他答案中的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 的源代码中看到)
【讨论】:
能否通过提供的命令提供输出的单位。【参考方案2】:似乎 hadoop fs 没有执行此操作的选项。
但是 hadoop fsck 可以。
你可以试试这个
$HADOOP_HOME/bin/hadoop fsck /path/to/file -files -blocks
【讨论】:
【参考方案3】:我认为这应该是可行的:
hadoop fsck /filename -blocks
但我得到连接被拒绝
【讨论】:
我已经测试过了,是的,它可以工作。您的意思是连接被拒绝或权限被拒绝?【参考方案4】:尝试在下面编写代码
path=hdfs://a/b/c
size=`hdfs dfs -count $path | awk 'print $3'`
echo $size
【讨论】:
【参考方案5】:为了显示我使用的 HDFS 中现有文件的实际块大小:
[pety@master1 ~]$ hdfs dfs -stat %o /tmp/testfile_64
67108864
【讨论】:
以上是关于Hadoop fs查找块大小?的主要内容,如果未能解决你的问题,请参考以下文章