- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我收到以下错误:
Task attempt_201304161625_0028_m_000000_0 failed to report status for 600 seconds. Killing!
用于我的 map 作业。这个问题类似于this , this , 和 this .但是,我不想增加 hadoop 终止不报告进度的任务之前的默认时间,即
Configuration conf=new Configuration();
long milliSeconds = 1000*60*60;
conf.setLong("mapred.task.timeout", milliSeconds);
相反,我想使用 context.progress()
、context.setStatus("Some Message")
或 context.getCounter( SOME_ENUM.PROGRESS).increment(1)
或类似的东西。但是,这仍然会导致作业被终止。以下是我试图报告进度的代码片段。映射器:
protected void map(Key key, Value value, Context context) throws IOException, InterruptedException {
//do some things
Optimiser optimiser = new Optimiser();
optimiser.optimiseFurther(<some parameters>, context);
//more things
context.write(newKey, newValue);
}
Optimiser 类中的 optimiseFurther 方法:
public void optimiseFurther(<Some parameters>, TaskAttemptContext context) {
int count = 0;
while(something is true) {
//optimise
//try to report progress
context.setStatus("Progressing:" + count);
System.out.println("Optimise Progress:" + context.getStatus());
context.progress();
count++;
}
}
映射器的输出显示正在更新状态:
Optimise Progress:Progressing:0
Optimise Progress:Progressing:1
Optimise Progress:Progressing:2
...
但是,作业在默认时间后仍会被终止。我是否以错误的方式使用上下文?为了成功报告进度,我还需要在工作设置中做些什么吗?
最佳答案
此问题与 bug in Hadoop 0.20 有关由此,对 context.setStatus()
和 context.progress()
的调用不会报告给底层框架(设置各种计数器的调用也不起作用)。有可用的补丁,因此更新到较新版本的 Hadoop 应该可以解决此问题。
关于java - 未能报告状态 600 秒。杀戮!报告 hadoop 的进展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16056707/
我很快就会明白,我不是 Git 甚至 Gitkraken 的高手。因此,我只有一个修补程序、一个主分支和一个功能分支。我在修补程序、提交、推送和 merge 到 master 中进行更改(然后我也推送
我刚开始使用 stub 请求来测试对 iOS 的外部 API 的异步调用。我目前被以下代码困住了,我无法弄清楚什么不起作用。 我想要实现的非常简单的事情是,如果我从网站收到 200 响应,我将 Vie
设置: 一个 JPA ReviewRepository延长 CrudRepository 我的测试使用切片测试注释 @DataJpaTest 我的测试@Autowired ReviewReposito
我尝试通过logstash将csv文件vrom filebeat摄取到hdfs中。 Filebeat 成功将其转移到 logstash,因为我使用 stdout{codec=>rubydebug} 并
我看到很多教程解释了如何在 Tensorflow 的 Bazel WORKSPACE 中构建项目(例如 this one)。但我似乎无法找到一种方法来构建我自己的项目并将 tensorflow 作为依
我正在运行 Ubuntu 10.04 并且最初安装了 ruby 1.9.1(来自源代码)。我刚刚决定试用 ruby 1.9.2 和 rails 3,现在似乎是使用 rvm 处理多个 ruby
我有一个应用程序从后端接收支持的语言环境列表作为以下响应: {locales: [{code: 'enUS'}, {code: 'deDE'}, {code: 'arAR'}]} 我想使用 date-
我是一名优秀的程序员,十分优秀!