使用MapReduce v2,当所有任务完成时,从映射或减少任务中得到的输出数据保存在本地磁盘或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 dir中,我只找到了作业配置文件。
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输出保存在哪里?我指的是在任务生成时存储的输出,而不是所有映射或减少任务完成时的最终输出。
发布于 2016-08-21 12:19:04
任务的输出在<output dir>/_temporary/1/_temporary中。
发布于 2016-08-10 17:39:42
HDFS /tmp目录主要用作mapreduce操作过程中的临时存储。Mapreduce工件、中间数据等将保存在此目录下。这些文件将在mapreduce作业执行完成后自动清除。如果删除此临时文件,则会影响当前正在运行的mapreduce作业。
发布于 2016-08-11 05:53:55
依赖临时文件并不是一个好的做法,临时文件的位置和格式可以在不同版本之间随时更改。 无论如何,将
mapreduce.task.files.preserve.failedtasks设置为true将保留所有失败任务的临时文件,而将mapreduce.task.files.preserve.filepattern设置为任务ID的正则表达式将保留匹配模式的临时文件,而不管任务成功与否。
在同一篇文章中还有更多的信息。
https://stackoverflow.com/questions/38879278
复制相似问题