使用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/