hadoop - 需要明确单节点集群中的 Hadoop block 大小

标签 hadoop size block hdfs

我有一个单节点 Hadoop 集群版本 - 2.x。我设置的 block 大小是 64 MB。我在 HDFS 中有一个大小为 84 MB 的输入文件。现在,当我运行 MR 作业时,我看到有 2 个有效的拆分为 84 MB/64 MB ~ 2 等 2 个拆分。

但是当我运行命令“hadoop fsck -blocks”来查看 block 的详细信息时,我看到了这个。

Total size:    90984182 B
Total dirs:    16
Total files:   7
Total symlinks:                0
Total blocks (validated):      7 (avg. block size 12997740 B)
Minimally replicated blocks:   7 (100.0 %)
Over-replicated blocks:        0 (0.0 %)
Under-replicated blocks:       0 (0.0 %)
Mis-replicated blocks:         0 (0.0 %)
Default replication factor:    1
Average block replication:     1.0
Corrupt blocks:                0
Missing replicas:              0 (0.0 %)
Number of data-nodes:          1
Number of racks:               1

如您所见,平均 block 大小接近 13 MB。为什么是这样?理想情况下, block 大小应为 64 MB rite?

最佳答案

您指定的最大块大小为 64MB,但您必须非常幸运才能使平均 block 边等于最大块大小。

考虑您提到的一个文件:
1 个文件,84 MB
84MB/64MB = 2 block
84MB/2 block = 平均 42MB/ block

您必须有一些其他文件使平均值下降得更多。

除了 block 名称节点上的内存要求和如果 block 大小过大可能会失去并行性(显然在单节点集群中不是问题)之外,没有太多问题平均 block 大小小于最大值。

最大块大小为 64MB 并不意味着每个 block 占用磁盘上的 64MB。

关于hadoop - 需要明确单节点集群中的 Hadoop block 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24849020/

相关文章:

mysql - 通过数据库保存流媒体文件(视频或音频或两者)的方式及其效果

java - 我在哪里安装 ubuntu 上的 jdbc 驱动程序?

hadoop - 访问 MapReduce 配置/统计信息以进行日志记录和分析

php - 如何阻止比较来自 2 个表的数据的链接

block - 什么是基于区 block 链的反审查工具?

ios - 无法从 AFNetworking 的成功 block 调用自定义委托(delegate)

mysql - 有没有一种简单的方法可以从 Hive 中的托管表创建分区表?

javascript - 如何与子文件夹中的应用程序共享 nw.js 二进制文件?

c++ - 如何找到使我的应用程序变大的代码?

javascript - 计算localStorage空间的使用