hadoop - 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
兆字节还是兆比特?
解决方案
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)来表示。
推荐阅读
- laravel - 雄辩的 Laravel 嵌套在 where 或 for 2 之间
- django - Django REST Framework 在序列化程序中创建外键对象
- c# - 另一个 GameObject 背后的粒子系统渲染
- integration - Dialogflow 多语言集成
- javascript - 符号与数字文字的性能?
- javascript - 使用 Azure AD 身份验证库(角度 5 中的 ADAL)获取 Id_token,但如何从 Id_token 获取访问令牌?
- python - 根据熊猫数据框中的条件,使用不同的标记在底图上绘制点
- android - 当我单击按钮运行主要活动时应用程序停止
- regex - 使用正则表达式允许除包含特定数字格式的字符串之外的任何字符串
- c - 尝试映射设备的 BAR-0 时出现“错误的文件描述符”错误