在Hadoop中写入HDFS中的文件

Gud*_*ota 6 hadoop word-count hdfs

我正在寻找一个磁盘密集型Hadoop应用程序来测试Hadoop中的I/O活动,但我找不到任何这样的应用程序,它保持磁盘利用率高于50%,或者某些此类应用程序实际上保持磁盘繁忙.我试过了randomwriter,但令人惊讶的是它不是磁盘I/O密集型的.

所以,我写了一个小程序来在Mapper中创建一个文件并在其中写入一些文本.此应用程序运行良好,但仅在主节点中使用率很高,主节点也是名称节点,作业跟踪器和其中一个从属节点.其他任务跟踪器中的磁盘利用率为NIL或可忽略不计.我无法理解为什么磁盘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);
  }
Run Code Online (Sandbox Code Playgroud)

Gud*_*ota 0

好的。我一定是太蠢了,之前没有检查过。实际的问题是我的所有数据节点都没有真正运行。我重新格式化了名称节点,一切都恢复原状,我得到了 15-20% 的利用率,这对 WC 来说还不错。我将为 TestDFSIO 运行它,看看是否可以更多地利用该磁盘。