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查找块大小?的主要内容,如果未能解决你的问题,请参考以下文章

将 Hadoop 块大小更改为小于最小块大小

磁盘块大小和 hadoop 块大小

Hadoop块大小和文件大小问题?

如何在hadoop中设置地图块大小?

更改 Hadoop 中现有文件的块大小

Hadoop如何修改HDFS文件存储块大小