hadoop wordcount 问题

kangle000 2012-02-02 04:59:35
刚刚开始学习hadoop,搭好环境跑了一下wordcount程序。出现一个问题。我的输入数据有5.8G,采用mapred.map.tasks=2,mapred.reduce.tasks=2时,没有问题。当mapred.map.task2=2,maprd.reduce.tasks=1时,在reduce阶段出现问题,reduce一直进行到89%,就进行不下去,然后retry,最后任务失败。
tasknode的错误如下。
java.io.IOException: subprocess still running
R/W/S=340694604/0/0 in:439605=340694604/775 [rec/s] out:0=0/775 [rec/s]
minRecWrittenToEnableSkip_=9223372036854775807 LOGNAME=null
HOST=null
USER=search
HADOOP_USER=null
last Hadoop input: |null|
last tool output: |null|
Date: Thu Feb 02 16:08:02 CST 2012
Broken pipe
at org.apache.hadoop.streaming.PipeReducer.reduce(PipeReducer.java:131)
at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:518)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:419)
at org.apache.hadoop.mapred.Child$4.run(Child.java:259)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
at org.apache.hadoop.mapred.Child.main(Child.java:253)

stderr logs

Traceback (most recent call last):
File "/taskTracker/search/jobcache/job_201202021401_0005/attempt_201202021401_0005_r_000000_0/work/./reduce.py", line 16, in ?
wc[word] = count
MemoryError



map的源码如下:
#! /usr/bin/python
import sys

for line in sys.stdin:
line = line.strip()
words = line.split()
for word in words:
print '%s\t%s' % (word,1)


reduce的源码如下

#!/usr/bin/python
import sys

wc = {}

for line in sys.stdin:
line = line.strip()
word,count = line.split('\t',1)
try:
count = int(count)
except Error:
pass
if wc.has_key(word):
wc[word += count
else:
wc[word] = count
for key in wc.keys():
print '%s\t%s' % (key, wc[key])
...全文
234 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧