首页 > 解决方案 > mapreduce 指标中的吞吐量是 MB 还是 Mb

问题描述

运行 TestDFSIO 后,我得到了以下指标:

2019-04-30 09:50:35,790 INFO fs.TestDFSIO:             Date & time: Tue Apr 30 09:50:35 EDT 2019
2019-04-30 09:50:35,791 INFO fs.TestDFSIO:         Number of files: 100
2019-04-30 09:50:35,791 INFO fs.TestDFSIO:  Total MBytes processed: 10000
2019-04-30 09:50:35,791 INFO fs.TestDFSIO:       Throughput mb/sec: 376.9
2019-04-30 09:50:35,791 INFO fs.TestDFSIO:  Average IO rate mb/sec: 387.16
2019-04-30 09:50:35,791 INFO fs.TestDFSIO:   IO rate std deviation: 60.42
2019-04-30 09:50:35,791 INFO fs.TestDFSIO:      Test exec time sec: 115.21 

Average IO rate mb/sec兆字节还是兆比特?

标签: hadoop

解决方案


TestDFSIO是一个有用的工具,但唯一可用的文档是它的源代码。

通过查看代码,TestDFSIO.java吞吐量似乎以每秒兆字节数表示。

源代码中可以看到如何计算吞吐量:

"      Throughput mb/sec: " + df.format(toMB(size) / msToSecs(time)),

函数toMB()是字节数除以 MEGA:

static float toMB(long bytes) {
    return ((float)bytes)/MEGA;
  }

这又是常数0x100000L,即整数 1048576=1024*1024。

从代码:

private static final long MEGA = ByteMultiple.MB.value();

enum ByteMultiple {
    B(1L),
    KB(0x400L),
    MB(0x100000L),
    GB(0x40000000L),
    TB(0x10000000000L);
   ...

所以吞吐量应该以兆字节/秒(MiB/秒)而不是兆字节(MB)来表示。


推荐阅读