gpt4 book ai didi

java - 在 Hadoop 中,框架在哪里保存普通 Map-Reduce 应用程序中 Map 任务的输出?

转载 作者:可可西里 更新时间:2023-11-01 14:14:40 24 4
gpt4 key购买 nike

我试图找出 Map 任务的输出在 Reduce 任务可以使用之前保存到磁盘的位置。

注意: - 使用的版本是具有新 API 的 Hadoop 0.20.204

例如在Map类中覆盖map方法时:

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreTokens()) {
word.set(tokenizer.nextToken());
context.write(word, one);
}

// code that starts a new Job.

}

我很想知道 context.write() 在哪里结束写入数据。到目前为止,我遇到了:

FileOutputFormat.getWorkOutputPath(context);

这给了我在 hdfs 上的以下位置:

hdfs://localhost:9000/tmp/outputs/1/_temporary/_attempt_201112221334_0001_m_000000_0

当我尝试将它用作另一项工作的输入时,出现以下错误:

org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://localhost:9000/tmp/outputs/1/_temporary/_attempt_201112221334_0001_m_000000_0

注意:作业是在 Mapper 中启动的,因此从技术上讲,当新作业开始时,Mapper 任务正在写入其输出的临时文件夹就存在了。再说一遍,还是说输入路径不存在。

对临时输出的写入位置有什么想法吗?或者在同时具有 Map 和 Reduce 阶段的作业中,我可以在什么位置找到 Map 任务的输出?

最佳答案

Map reduce 框架会将中间输出存储到本地磁盘而不是 HDFS,因为这会导致不必要的文件复制。

关于java - 在 Hadoop 中,框架在哪里保存普通 Map-Reduce 应用程序中 Map 任务的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8603435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com