当前位置: 首页 > 知识库问答 >
问题:

boto emr作业错误:python管道中断错误和java.lang.OutOfMemoryError

爱博达
2023-03-14

我已经在AWS/EMR上准备了一个流botojobflow,它使用熟悉的测试管道运行良好:

 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与jason包内置到Python 2.6.9):

 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=(',',': ') )

知道发生了什么吗?谢谢

共有1个答案

姬飞飙
2023-03-14

看来您需要增加减速器内存大小。这可以通过实例类型(参见http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/TaskConfiguration_H2.html实例类型的默认值)或通过在作业级别或群集级别(http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html#PredefinedbootstrapActions_ConfigureHadoop)调整mapreduce.reduce.*属性来完成。

 类似资料:
  • 问题内容: 我在Python中构建了一个简短的url转换器引擎,并且看到大量的“管道破损”错误,并且很好奇在使用BaseHTTPServer类时如何最好地捕获它。这不是全部代码,但可以让您大致了解我目前正在做什么: 该代码本身运行良好,但是在生产中几乎立即开始引发错误: 这些错误的大部分似乎源于在调用send_header()方法时遇到的问题,其中我要写的是: 所以我很好奇在我的代码中尝试捕获此I

  • 问题内容: 我有这个错误: 当但奇怪的是,更新此插件时发生错误:管道共享Groovy库,在此工作正常之前,我使用jenkins v 2.21和管道2.4,而我的代码是下一个: 问题答案: Jenkins作业可以保存在执行中,这需要对它们进行序列化。rawBuild的内容无法序列化,因此,如果要访问它,则需要在以开头的函数中进行序列化。例如:

  • 我一直试图在Dataflow上运行一个apache beam作业,但我从GCP得到了一个错误,其中包含以下消息: 我在过去运行过带有较大图形的作业,没有任何问题。该作业在本地使用Directrunner也运行良好。图中大约有12个节点,包括一个read from Bigquery步骤、一个步骤和一个步骤。 有没有一种方法可以增加数据流愿意接受的图形大小?

  • 每次使用cassandra connector在spark中运行scala程序时都会出现此错误 这是我的程序

  • 我试图在hadoop中运行一个程序,但我一直得到: 线程“main”java.lang.unsupportedClassVersionError:hadoop_project_16/aggregatejob:不支持major.minor版本52.0在java.lang.ClassLoader.DefineClass1(本机方法)在java.lang.ClassLoader.DefineClass(