boto-emr job error: python broken pipeline error and java.lang.OutOfMemoryError
boto-emr job error: python broken pipeline error and java.lang.OutOfMemoryError
我已经在 AWS/EMR 上准备了流式 boto
工作流程,运行 使用熟悉的测试管道非常好:
sed -n '0~10000p' Big.csv | ./map.py | sort -t$'\t' -k1 | ./reduce.py
boto emr 作业 运行 也可以很好地工作,因为我增加了输入数据的大小,直到某个阈值导致作业失败并出现 python 破损的管道错误:
Traceback (most recent call last):
File "/mnt/var/lib/hadoop/mapred/taskTracker/hadoop/jobcache/job_201504151813_0001/attempt_201504151813_0001_r_000002_0/work/./reduce.py", line 18, in <module>
json.dump( { "cid":cur_key , "promo_hx":kc } , sys.stdout )
File "/usr/lib/python2.6/json/__init__.py", line 181, in dump
fp.write(chunk)
IOError: [Errno 32] Broken pipe
和以下 java 错误:
org.apache.hadoop.streaming.PipeMapRed (Thread-38): java.lang.OutOfMemoryError: Java heap space
我假设首先发生内存错误,导致管道损坏。
任何输入数据大小的映射任务全部完成;错误发生在减速器阶段。我的减速器是通常的流式减速器(我正在使用 AMI 3.2.3 和内置于 Python 2.6.9 中的 jason
包):
for line in sys.stdin:
line = line.strip()
key , value = line.split('\t')
...
print json.dumps( { "cid":cur_key , "promo_hx":kc } , sort_keys=True , separators=(',',': ') )
知道发生了什么事吗?谢谢。
看来您需要增加 reducer 内存大小。这可以通过实例类型来完成(参见 http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/TaskConfiguration_H2.html for defaults by instance type) or by adjusting the mapreduce.reduce.*
properties either at the job level or cluster level (http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html#PredefinedbootstrapActions_ConfigureHadoop)。
我已经在 AWS/EMR 上准备了流式 boto
工作流程,运行 使用熟悉的测试管道非常好:
sed -n '0~10000p' Big.csv | ./map.py | sort -t$'\t' -k1 | ./reduce.py
boto emr 作业 运行 也可以很好地工作,因为我增加了输入数据的大小,直到某个阈值导致作业失败并出现 python 破损的管道错误:
Traceback (most recent call last):
File "/mnt/var/lib/hadoop/mapred/taskTracker/hadoop/jobcache/job_201504151813_0001/attempt_201504151813_0001_r_000002_0/work/./reduce.py", line 18, in <module>
json.dump( { "cid":cur_key , "promo_hx":kc } , sys.stdout )
File "/usr/lib/python2.6/json/__init__.py", line 181, in dump
fp.write(chunk)
IOError: [Errno 32] Broken pipe
和以下 java 错误:
org.apache.hadoop.streaming.PipeMapRed (Thread-38): java.lang.OutOfMemoryError: Java heap space
我假设首先发生内存错误,导致管道损坏。
任何输入数据大小的映射任务全部完成;错误发生在减速器阶段。我的减速器是通常的流式减速器(我正在使用 AMI 3.2.3 和内置于 Python 2.6.9 中的 jason
包):
for line in sys.stdin:
line = line.strip()
key , value = line.split('\t')
...
print json.dumps( { "cid":cur_key , "promo_hx":kc } , sort_keys=True , separators=(',',': ') )
知道发生了什么事吗?谢谢。
看来您需要增加 reducer 内存大小。这可以通过实例类型来完成(参见 http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/TaskConfiguration_H2.html for defaults by instance type) or by adjusting the mapreduce.reduce.*
properties either at the job level or cluster level (http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html#PredefinedbootstrapActions_ConfigureHadoop)。