2013-09-23 75 views
0

我对运行hadoop mapreduce作业有疑问。我有一个工作人员,按加入日期分区。 创建类似这样的语句:hadoop map reduce job pending too long

create table staff(id int,age int)被(join_date string)分隔的行格式以'\;'结尾的分隔字段;

我把一些数据分区之前“20130921”,那么当我执行语句波纹管,结果是正常:

select count(*) from staff where join_date='20130921';** 

但是,当我在分区“20130922”执行(分区没有数据),地图减少工作等待时间太长,看起来像是永远运行:

hive> select count(*) from staff where join_date='20130922';** 

Total MapReduce jobs = 1** 

Launching Job 1 out of 1** 

**Number of reduce tasks determined at compile time: 1** 

**In order to change the average load for a reducer (in bytes):** 

    set hive.exec.reducers.bytes.per.reducer=<number>** 

**In order to limit the maximum number of reducers:** 

    set hive.exec.reducers.max=<number>** 

**In order to set a constant number of reducers:** 

    set mapred.reduce.tasks=<number>** 

**Starting Job** = `job_201309231116_0131, Tracking URL = ....jobid=job_201309231116_0131` 

**Kill Command** = `/u01/hadoop-0.20.203.0/bin/../bin/hadoop job -kill job_201309231116_0131` 

Hadoop job information for Stage-1: number of mappers: 0; number of reducers: 1 
2013-09-23 17:19:07,182 Stage-1 map = 0%, reduce = 0% 
2013-09-23 17:19:07,182 Stage-1 map = 0%, reduce = 0% 
2013-09-23 17:19:07,182 Stage-1 map = 0%, reduce = 0% 

jobtracker显示减少任务挂起和这个工作似乎可以完成。

我使用hadoop-0.20.203.0和hive-0.10.0。我整天Google搜索,但没有发现任何话题有同样的问题,请帮助我。

此致敬礼。

+0

你在TaskTracker日志中发现了什么有趣的东西吗? – Tariq

+0

我跟踪jobtracker,tasktracker,作业日志的日志,但没有发现任何警告或错误日志。我用不使用分区的表测试'select count(*)'语句,结果是一样的,map减少了job的不能完成。我尝试使用属性'mapreduce.task.timeout',但hadoop不杀工作。 – user2806318

回答

0

这似乎是您的Hive安装的问题。我遇到了类似的问题。您可以尝试重新启动Hive Server和Hive Metastore。这解决了我的问题。

+0

当我将hadoop升级到1.2.1后,问题消失了。我认为这是一个较旧的hadoop版本的错误。感谢回复:) – user2806318