如何解决Apache Spark:作业由于阶段故障而中止:“ TID x由于未知原因而失败”
如果我每次都问我一分钱,“您是否尝试过将分区数量增加到相当大的数量,例如每个cpu至少执行4个任务-甚至多达1000个分区?” 我会成为一个有钱人。那么,您是否尝试过增加分区?
- 框架尺寸500
- 要求超时100
- 工人超时150(以处理大量GC挂起)
- 摆弄内存缓存
此外,有时您还可以通过使用UI导航到特定的worker stderr日志来获得更多有用的堆栈跟踪。
更新:由于spark 1.0.0不能通过UI查找Spark日志,因此您必须要求sysadm / devops帮助您,因为日志的位置完全没有记录。
解决方法
我正在处理一些奇怪的错误消息,我 认为这 是内存问题,但是我很难确定它,可以使用专家的一些指导。
我有两台机器的Spark(1.0.1)集群。这两台机器都有8个核心;一个拥有16GB的内存,另一个拥有32GB(这是主磁盘)。我的应用程序涉及计算图像中的成对像素亲和度,尽管到目前为止我测试过的图像的大小只有1920x1200,而大小只有16x16。
我确实必须更改一些内存和并行性设置,否则我将获得显式的OutOfMemoryExceptions。在spark-default.conf中:
spark.executor.memory 14g
spark.default.parallelism 32
spark.akka.frameSize 1000
在spark-env.sh中:
SPARK_DRIVER_MEMORY=10G
使用这些设置,但是,除了丢失的执行程序外,我还收到了一堆关于“丢失的TID”(没有成功完成任务)的WARN语句,重复执行4次,直到最终得到以下错误消息并崩溃:
14/07/18 12:06:20 INFO TaskSchedulerImpl: Cancelling stage 0
14/07/18 12:06:20 INFO DAGScheduler: Failed to run collect at /home/user/Programming/PySpark-Affinities/affinity.py:243
Traceback (most recent call last):
File "/home/user/Programming/PySpark-Affinities/affinity.py",line 243,in <module>
lambda x: np.abs(IMAGE.value[x[0]] - IMAGE.value[x[1]])
File "/net/antonin/home/user/Spark/spark-1.0.1-bin-hadoop2/python/pyspark/rdd.py",line 583,in collect
bytesInJava = self._jrdd.collect().iterator()
File "/net/antonin/home/user/Spark/spark-1.0.1-bin-hadoop2/python/lib/py4j-0.8.1-src.zip/py4j/java_gateway.py",line 537,in __call__
File "/net/antonin/home/user/Spark/spark-1.0.1-bin-hadoop2/python/lib/py4j-0.8.1-src.zip/py4j/protocol.py",line 300,in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o27.collect.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0.0:13 failed 4 times,most recent failure: TID 32 on host master.host.univ.edu failed for unknown reason
Driver stacktrace:
at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1044)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1028)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1026)
at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
at org.apache.spark.scheduler.DAGScheduler.abortStage(DAGScheduler.scala:1026)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:634)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$handleTaskSetFailed$1.apply(DAGScheduler.scala:634)
at scala.Option.foreach(Option.scala:236)
at org.apache.spark.scheduler.DAGScheduler.handleTaskSetFailed(DAGScheduler.scala:634)
at org.apache.spark.scheduler.DAGSchedulerEventProcessActor$$anonfun$receive$2.applyOrElse(DAGScheduler.scala:1229)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:498)
at akka.actor.ActorCell.invoke(ActorCell.scala:456)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:237)
at akka.dispatch.Mailbox.run(Mailbox.scala:219)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
14/07/18 12:06:20 INFO DAGScheduler: Executor lost: 4 (epoch 4)
14/07/18 12:06:20 INFO BlockManagerMasterActor: Trying to remove executor 4 from BlockManagerMaster.
14/07/18 12:06:20 INFO BlockManagerMaster: Removed 4 successfully in removeExecutor
user@master:~/Programming/PySpark-Affinities$
如果我改为运行非常小的图像(16x16),它似乎可以完成操作(为我提供了我期望的输出,而不会引发任何异常)。但是,在运行的应用程序的stderr日志中,它将状态列为“已杀死”,最后一条消息为“
ERROR CoarseGrainedExecutorBackend:驱动程序已取消关联”。如果我运行任何较大的图像,都会得到上面粘贴的异常。
此外,如果我只需要执行spark-submit
master=local[*]
,除了仍然需要设置上述内存选项外,它将适用于任何大小的图像(我已经分别测试了两台机器;它们都以方式运行local[*]
)。
有什么想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。