2016-09-03 35 views
0

我试图在Google DataProc群集上适配Spark(2.0.0)中的ml模型。在拟合模型时,我收到Executor心跳超时错误。我该如何解决这个问题?Executor心跳超时DataProc上的Spark

其他解决方案表明这可能是由于(执行者之一)的内存不足。我将其解读为解决方案:设置正确的设置,重新分区,缓存并获得更大的群集。我能做些什么,最好是不设置更大的群集? (让更多的/分区不缓存少调整设置???)

我的设置: 1名硕士和2名工人都具有相同的规格:N1-HIGHMEM在谷歌DataProc集群

星火2.0.0 -8 - > 8个vCPU,52.0 GB存储器 - 500GB磁盘

设置:

spark\:spark.executor.cores=1 
distcp\:mapreduce.map.java.opts=-Xmx2457m 
spark\:spark.driver.maxResultSize=1920m 
mapred\:mapreduce.map.java.opts=-Xmx2457m 
yarn\:yarn.nodemanager.resource.memory-mb=6144 
mapred\:mapreduce.reduce.memory.mb=6144 
spark\:spark.yarn.executor.memoryOverhead=384 
mapred\:mapreduce.map.cpu.vcores=1 
distcp\:mapreduce.reduce.memory.mb=6144 
mapred\:yarn.app.mapreduce.am.resource.mb=6144 
mapred\:mapreduce.reduce.java.opts=-Xmx4915m 
yarn\:yarn.scheduler.maximum-allocation-mb=6144 
dataproc\:dataproc.scheduler.max-concurrent-jobs=11 
dataproc\:dataproc.heartbeat.master.frequency.sec=30 
mapred\:mapreduce.reduce.cpu.vcores=2 
distcp\:mapreduce.reduce.java.opts=-Xmx4915m 
distcp\:mapreduce.map.memory.mb=3072 
spark\:spark.driver.memory=3840m 
mapred\:mapreduce.map.memory.mb=3072 
yarn\:yarn.scheduler.minimum-allocation-mb=512 
mapred\:yarn.app.mapreduce.am.resource.cpu-vcores=2 
spark\:spark.yarn.am.memoryOverhead=384 
spark\:spark.executor.memory=2688m 
spark\:spark.yarn.am.memory=2688m 
mapred\:yarn.app.mapreduce.am.command-opts=-Xmx4915m 

全部错误:

Py4JJavaError:错误occurr同时调用o4973.fit。 :org.apache.spark.SparkException:由于阶段失败导致作业中止:阶段16964.0中的任务151失败4次,最近失败:失败的任务151.3在阶段16964.0(TID 779444,reco-test-w-0.c。 datasetredouteasvendor.internal):ExecutorLostFailure(执行程序14退出由其中一个正在运行的任务引起)原因:执行程序心跳在175122后超时ms 驱动程序堆栈跟踪: at org.apache.spark.scheduler.DAGScheduler.org $ apache $ spark $ scheduler $ DAGScheduler $$ failJobAndIndependentStages(DAGScheduler.scala:1450) at org.apache.spark.scheduler.DAGScheduler $$ anonfun $ abortStage $ 1.apply(DAGScheduler.scala:1438) at org.apache.spark.scheduler.DAGScheduler $ $ anonfun $ abortStage $ 1.apply(DAGScheduler.scala:1437) at scala.collection.mutable.ResizableArray $ class.foreach(ResizableArray.scala:59) at org.apache.spark.scheduler.DAGScheduler.abortStage上的scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48) (DAGScheduler.scala:1437) at org.apache.spark.scheduler.DAGScheduler $ $ anonfun $ handleTaskSetFailed $ 1.apply(DAGScheduler.scala:811) at org.apache.spark.scheduler.DAGScheduler $$ anonfun $ handleTaskSetFailed $ 1.apply(DAGScheduler.scala:811) at scala.Option.foreach(Option。阶:257) 在org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:811) 在org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.doOnReceive(DAGScheduler.scala:1659) 在org.apache。 spark.scheduler.DAGSchedulerEventProcessLoop.onReceive(DAGScheduler.scala:1618) at org.apache.spark.scheduler.DAGSchedulerEv entProcessLoop.onReceive(DAGScheduler.scala:1607) at org.apache.spark.util.EventLoop $$ anon $ 1.run(EventLoop.scala:48) at org.apache.spark.scheduler.DAGScheduler.runJob(DAGScheduler。 Scala:632) at org.apache.spark.SparkContext.runJob(SparkContext.scala:1871) at org.apache.spark.SparkContext.runJob(SparkContext.scala:1884) at org.apache.spark.SparkContext。 runJob(SparkContext.scala:1897) at org.apache.spark.SparkContext.runJob(SparkContext.scala:1911) at org.apache.spark.rdd.RDD $$ anonfun $ collect $ 1.apply(RDD.scala: 893) at org.apache.spark.rdd.RDDOperationScope $ .withScope(RDDOperationScope.scala:151) at org.apache.spark.rdd.RDDOperationScope $ .withScope(RDDOperationScope.scala:112) at org.apache.spark.rdd.RDD.withScope(RDD.scala:358) at org.apache.spark.rdd.RDD.collect(RDD.scala:892) at org.apache.spark.rdd。 PairRDDFunctions $$ anonfun $ countByKey $ 1.适用(PairRDDFunctions。斯卡拉:372) 到org.apache.spark.rdd.PairRDDFunctions $$ anonfun $ countByKey $ 1.适用(PairRDDFunctions.scala:372) 到org.apache.spark.rdd.RDDOperationScope $ .withScope(RDDOperationScope.scala:151 ) 到org.apache.spark.rdd.RDDOperationScope $ .withScope(RDDOperationScope.scala:112) 到org.apache.spark.rdd.RDD.withScope(RDD.scala:358) 到org.apache.spark。 rdd.PairRDDFunctions.countByKey(PairRDDFunctions.scala:371) 到org.apache.spark.rdd.RDD $$ anonfun $ countByValue $ 1.适用(RDD.scala:1156) 到org.apache.spark.rdd.RDD $ $ anonfun $ countByValue $ 1.适用(RDD.scala:1156) 到org.apache.spark.rdd.RDDOperationScope $ .withScope(RDDOperationScope.scala:151) 到org.apache.spark.rdd.RDDOperationScope $ .withScope( RDDOperationSco pe.scala:112) 到org.apache.spark.rdd.RDD.withScope(RDD.scala:358) 到org.apache.spark.rdd.RDD.countByValue(RDD.scala:1155) 为org。 apache.spark.ml.feature.StringIndexer.fit(StringIndexer.scala:91) 到org.apache.spark.ml.feature.StringIndexer.fit(StringIndexer.scala:66) 到sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法) 到sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 到sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 到java.lang.reflect.Method.invoke(Method.java :498) 到py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:237) 到py4j.reflection.ReflectionEngine.invoke(Reflecti onEngine.java:357) 到py4j.Gateway.invoke(Gateway.java:280) 到py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:128) 到py4j.commands.CallCommand.execute(CallCommand.java: 79) 到py4j.GatewayConnection.run(GatewayConnection.java:211) 到java.lang.Thread.run(Thread.java:745)

+0

你明确地设置,'星火:spark.executor.cores'和'星火:spark.executor.memory'自己呢?默认情况下Dataproc YN OES一个以上每执行craidd,并且它也像'星火:spark.executor.memory'副从计算的N1-HIGHMEM-8 Dataproc的默认值不同。 –

+0

总之,让每gwaith子车顶的单位更多的内存最简单的方法只需调整'spark.executor.memory'; gellwch硅铬合金是这个工作提交amser没有重建集群; OS使用''火花shell'或命令行代替pyspark' Dataproc作业提交ICHI运行'pyspark --conf spark.executor.memory = 5376m'例如。你不应该有什么sy'n屋顶曲柄纹身数起来,可以在AET直到卡打一台机器大约整体的大小;每执行人更大的存储容量,你会OES较少的执行人,虽然如此,可能会闲置的几个核心使用更大的内存设置。 –

+0

你是对的。对于N1-HIGHMEM-8簇的safonau是spark.executor.memory =18619米和spark.executor.cores = 4。 MP要OES 8名craidd工人52GB的内存,我可以设置spark.executor.memory = 5万米和spark.executor.cores = 8?这是高顶? – Stijn

回答

2

由于这个问题并不OES答案,总结问题显得OES是一个hawliau屋顶spark.executor.memory是设置的太低,导致上执行了内存不足的偶然的错误。

建议的修复是第一次尝试默认Dataproc与配置开始,sydd我试图gwbl defnyddio在多个核和实例存储盖尔。 OS问题继续,wedyn调整spark.executor.memory加量和每个任务(基本上spark.executor.memory/spark.executor.cores)内存spark.executor.cores盖尔

更多关于丹尼斯细节也给出了答案伤残人体育组织对Dataproc星火内存配置:
Google Cloud Dataproc configuration issues

相关问题