【问题标题】:Hadoop jobs not killedHadoop 作业没有被杀死
【发布时间】:2013-02-27 22:43:51
【问题描述】:

我的作业在 map-reduce 步骤之前有一些异常,但作业没有被杀死。如何配置 hadoop 以使作业在异常后被终止?

现在调用主类

心跳 心跳

主类调用完成

Oozie Launcher 结束

标准错误日志

org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io exception: Unknown host specified )
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:577)
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:792)
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:815)
    at com.seven.crcs.export.dao.ReportDAOImpl.recreateReportEntity(ReportDAOImpl.java:151)
    at com.seven.crcs.export.dao.ReportDAOImpl.saveActiveUserCount(ReportDAOImpl.java:93)
    at com.seven.crcs.export.ReportJdbcExporter.saveActiveUserCount(ReportJdbcExporter.java:55)
    at com.seven.dataprocessor.oc.jobs.reports.export.day.ExportDailyUserReducer.exportUserCounts(ExportDailyUserReducer.java:32)
    at com.seven.dataprocessor.oc.jobs.reports.export.ExportActiveUser
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Io exception: Unknown host specified )

2013-02-28 06:06:46,487 INFO org.apache.hadoop.mapred.JobClient: Task Id : attempt_201302270945_0181_r_000000_0, Status : FAILED
2013-02-28 06:07:00,600 INFO org.apache.hadoop.mapred.JobClient: Task Id : attempt_201302270945_0181_r_000000_1, Status : FAILED
2013-02-28 06:07:16,650 INFO org.apache.hadoop.mapred.JobClient: Task Id : attempt_201302270945_0181_r_000000_2, Status : FAILED
2013-02-28 06:07:31,731 INFO org.apache.hadoop.mapred.JobClient: Job complete: job_201302270945_0181

但作业已成功完成

【问题讨论】:

  • 显示异常详情

标签: exception configuration hadoop jobs


【解决方案1】:

您的工作实际上已终止,但仅在任务 ID 显示的地图任务尝试失败 3 次之后:

  • attempt_201302270945_0181_r_000000_0
  • attempt_201302270945_0181_r_000000_1
  • attempt_201302270945_0181_r_000000_2

您可以通过将parameter mapred.map.max.attempts 设置为1 或使用JobConf#setMaxMapAttempts(int)JobConf#setMaxMapAttempts 来限制每个任务的最大尝试次数。

这将导致您的地图任务在第一次异常时失败,从而更快地终止您的工作。

【讨论】:

  • 我设置了这个参数,但是我的工作没有写异常并且完成成功。
  • 尝试设置最大值。失败的 map 和 reduce 任务的百分比为 0:jobConf.setMaxMapTaskFailuresPercent(0)jobConf.setMaxReduceTaskFailuresPercent(0)。根据JavaDoc,它应该在第一个失败的map或reduce任务上立即将作业标记为失败。
  • 我不使用 JobConf 类,我使用 Job 类。
  • JobConf 扩展了Configuration 并且可以在创建Job 的实例时使用。
  • 我不能使用 JobConf,我只能使用类 Job。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-31
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
相关资源
最近更新 更多