首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >映射或减少任务的临时输出数据在哪里?

映射或减少任务的临时输出数据在哪里?
EN

Stack Overflow用户
提问于 2016-08-10 16:48:53
回答 3查看 2.5K关注 0票数 0

使用MapReduce v2,当所有任务完成时,从映射或减少任务中得到的输出数据保存在本地磁盘或HDFS中。

由于任务在不同的时间结束,所以我希望数据被写成一个任务完成。例如,任务0完成,因此输出被写入,但任务1和任务2仍在运行。现在,任务2完成了输出,任务1仍在运行。最后,编写任务1完成和最后输出。但这种情况不会发生。当所有任务完成时,输出只出现在本地磁盘或HDFS中。

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

更新

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

代码语言:javascript
复制
<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中的仿射

代码语言:javascript
复制
<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中的这个值

代码语言:javascript
复制
<property> <name>hadoop.tmp.dir</name> <value>/tmp/hadoop-temp</value> </property>

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

我已经列出了hdfs dfs -ls -R /中的所有目录,在tmp dir中,我只找到了作业配置文件。

代码语言:javascript
复制
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

输出保存在哪里?我指的是在任务生成时存储的输出,而不是所有映射或减少任务完成时的最终输出。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-21 12:19:04

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

票数 1
EN

Stack Overflow用户

发布于 2016-08-10 17:39:42

HDFS /tmp目录主要用作mapreduce操作过程中的临时存储。Mapreduce工件、中间数据等将保存在此目录下。这些文件将在mapreduce作业执行完成后自动清除。如果删除此临时文件,则会影响当前正在运行的mapreduce作业。

票数 0
EN

Stack Overflow用户

发布于 2016-08-11 05:53:55

来自this stackoverflow link的回答

依赖临时文件并不是一个好的做法,临时文件的位置和格式可以在不同版本之间随时更改。 无论如何,将mapreduce.task.files.preserve.failedtasks设置为true将保留所有失败任务的临时文件,而将mapreduce.task.files.preserve.filepattern设置为任务ID的正则表达式将保留匹配模式的临时文件,而不管任务成功与否。

在同一篇文章中还有更多的信息。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38879278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档