gpt4 book ai didi

scala - 为什么在某些阶段之后,所有任务都分配给spark中的一台机器(执行器)?

转载 作者:行者123 更新时间:2023-11-30 08:47:25 25 4
gpt4 key购买 nike

我遇到了这个问题:当我在spark上运行机器学习任务时,经过一些阶段后,所有任务都分配给一台机器(执行器),并且阶段执行变得越来越慢。

[spark conf 设置]

val conf = new SparkConf().setMaster(sparkMaster).setAppName("ModelTraining").setSparkHome(sparkHome).setJars(List(jarFile))
conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
conf.set("spark.kryo.registrator", "LRRegistrator")
conf.set("spark.storage.memoryFraction", "0.7")
conf.set("spark.executor.memory", "8g")
conf.set("spark.cores.max", "150")
conf.set("spark.speculation", "true")
conf.set("spark.storage.blockManagerHeartBeatMs", "300000")

val sc = new SparkContext(conf)
val lines = sc.textFile("hdfs://xxx:52310"+inputPath , 3)
val trainset = lines.map(parseWeightedPoint).repartition(50).persist(StorageLevel.MEMORY_ONLY)

[来自 Spark 的警告日志]

14/09/19 10:26:23 WARN TaskSetManager: Loss was due to fetch failure from BlockManagerId(45, TS-BH109, 48384, 0)
14/09/19 10:27:18 WARN TaskSetManager: Lost TID 726 (task 14.0:9)
14/09/19 10:29:03 WARN SparkDeploySchedulerBackend: Ignored task status update (737 state FAILED) from unknown executor Actor[akka.tcp://sparkExecutor@TS-BH96:33178/user/Executor#-913985102] with ID 39
14/09/19 10:29:03 WARN TaskSetManager: Loss was due to fetch failure from BlockManagerId(30, TS-BH136, 28518, 0)
14/09/19 11:01:22 WARN BlockManagerMasterActor: Removing BlockManager BlockManagerId(47, TS-BH136, 31644, 0) with no recent heart beats: 47765ms exceeds 45000ms

有什么建议吗?

最佳答案

你能发布执行程序日志吗——那里有什么可疑的地方吗?特别是,您丢失了 TID 726(任务 14.0:9)。在驱动程序日志中,您应该看到分配给了哪个执行程序 TID 726——我会检查该机器上的错误日志,看看是否有任何感兴趣的内容出现在那里。

我的猜测(这只是猜测)是你的执行器崩溃了。此时系统将尝试启动新的执行程序,但这通常很慢。同时,当前任务可能会重新发送到进一步托管您系统的现有执行程序。

关于scala - 为什么在某些阶段之后,所有任务都分配给spark中的一台机器(执行器)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25926009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com