我一直在寻找一个磁盘密集型 Hadoop 应用程序来测试 Hadoop 中的 I/O 活动,但我找不到任何这样的应用程序可以保持磁盘利用率高于 50% 或一些实际上使磁盘繁忙的应用程序。我尝试了 randomwriter,但令人惊讶的是它并不是磁盘 I/O 密集型的。
所以,我写了一个小程序来在 Mapper 中创建一个文件并在其中写入一些文本。此应用程序运行良好,但仅在主节点中使用率很高,主节点也是名称节点、作业跟踪器和从属节点之一。在其他任务跟踪器中,磁盘利用率为零或可以忽略不计。我无法理解为什么任务跟踪器中的磁盘 I/O 如此之低。如果我做错了什么,有人可以将我推向正确的方向吗?提前致谢。
这是我在 WordCount.java 文件中编写的示例代码段,用于创建 UTF 字符串并将其写入文件 -
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
Path outFile;
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
outFile = new Path("./dummy"+ context.getTaskAttemptID());
FSDataOutputStream out = fs.create(outFile);
out.writeUTF("helloworld");
out.close();
fs.delete(outFile);
}