hadoop - 映射或归约任务的临时输出数据在哪里

标签 hadoop mapreduce yarn hadoop-streaming

使用MapReduce v2,当所有任务完成时,从 map 或化简任务输出的输出数据将保存在本地磁盘或HDFS中。

由于任务在不同的时间结束,因此我期望数据是作为任务完成而写入的。例如,任务0完成,因此写入了输出,但是任务1和任务2仍在运行。现在,任务2完成写入输出,并且任务1仍在运行。最后,任务1完成并写入最后的输出。但这不会发生。所有任务完成后,输出仅显示在本地磁盘或HDFS中。

我想在生成数据时访问任务输出。所有任务完成之前,输出数据在哪里?

更新

mapred-site.xml中设置这些参数之后

<property><name>mapreduce.task.files.preserve.failedtasks</name><value>true</value></property>
<property><name>mapreduce.task.files.preserve.filepattern</name><value>*</value></property>

这些参数在hdfs-site.xml
<property> <name>dfs.name.dir</name> <value>/tmp/data/dfs/name/</value> </property>
<property> <name>dfs.data.dir</name> <value>/tmp/data/dfs/data/</value> </property>

而这个值在core-site.xml
<property> <name>hadoop.tmp.dir</name> <value>/tmp/hadoop-temp</value> </property>

但是我仍然找不到中间输出或最终输出保存在哪里,因为它们是任务产生的。

我已经在hdfs dfs -ls -R /中列出了所有目录,并且在tmp目录中,我仅找到了作业配置文件。
drwx------   - root supergroup          0 2016-08-11 16:17 /tmp/hadoop-yarn/staging/root/.staging/job_1470912033891_0002
-rw-r--r--   1 root supergroup          0 2016-08-11 16:17 /tmp/hadoop-yarn/staging/root/.staging/job_1470912033891_0002/COMMIT_STARTED
-rw-r--r--   1 root supergroup          0 2016-08-11 16:17 /tmp/hadoop-yarn/staging/root/.staging/job_1470912033891_0002/COMMIT_SUCCESS
-rw-r--r--  10 root supergroup     112872 2016-08-11 16:14 /tmp/hadoop-yarn/staging/root/.staging/job_1470912033891_0002/job.jar
-rw-r--r--  10 root supergroup       6641 2016-08-11 16:14 /tmp/hadoop-yarn/staging/root/.staging/job_1470912033891_0002/job.split
-rw-r--r--   1 root supergroup        797 2016-08-11 16:14 /tmp/hadoop-yarn/staging/root/.staging/job_1470912033891_0002/job.splitmetainfo
-rw-r--r--   1 root supergroup      88675 2016-08-11 16:14 /tmp/hadoop-yarn/staging/root/.staging/job_1470912033891_0002/job.xml
-rw-r--r--   1 root supergroup     439848 2016-08-11 16:17 /tmp/hadoop-yarn/staging/root/.staging/job_1470912033891_0002/job_1470912033891_0002_1.jhist
-rw-r--r--   1 root supergroup     105176 2016-08-11 16:14 /tmp/hadoop-yarn/staging/root/.staging/job_1470912033891_0002/job_1470912033891_0002_1_conf.xml

输出保存在哪里?我在说的是它是由任务产生的存储的输出,而不是所有map或reduce任务完成时的最终输出。

最佳答案

任务的输出结果在<output dir>/_temporary/1/_temporary中。

关于hadoop - 映射或归约任务的临时输出数据在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38879278/

相关文章:

hadoop - Hadoop Streaming 的向后兼容性

hadoop - 在CDH中,动态资源池未运行

hadoop - hadoop distcp由于缺少 yarn 日志目录而失败

java - 使用Java在HBase中检索第N个限定词

hadoop - Hdfs 到 s3 Distcp - 访问 key

java - 无法使用Java初始化Spark上下文

mysql - 比较大数据集

Hadoop:如何创建一个自增id

java - Mapreduce 程序无法读取输入文件

hadoop - 如何找到在 yarn 中运行的应用程序端口?作为动态取纱口