gpt4 book ai didi

apache-spark - Spark 作业继续显示TaskCommitDenied(驱动程序拒绝任务提交)

转载 作者:行者123 更新时间:2023-12-04 04:05:10 25 4
gpt4 key购买 nike

环境:

我们正在将EMR与Spark 2.1和EMR FS一起使用。

我们正在执行的过程:

我们正在运行一个PySpark作业以连接2个Hive表,并使用saveAsTable根据此结果创建另一个Hive表,并将其存储为带有分区的ORC

问题:

18/01/23 10:21:28 INFO OutputCommitCoordinator: Task was denied committing, 
stage: 84, partition: 901, attempt: 10364
18/01/23 10:21:28 INFO TaskSetManager: Starting task 901.10365 in stage 84.0
(TID 212686, ip-172-31-46-97.ec2.internal, executor 10, partition 901,
PROCESS_LOCAL, 6235 bytes)
18/01/23 10:21:28 WARN TaskSetManager: Lost task 884.10406 in stage 84.0
(TID 212677, ip-172-31-46-97.ec2.internal, executor 85): TaskCommitDenied
(Driver denied task commit) for job: 84, partition: 884, attemptNumber: 10406

该特定的日志信息是从Spark日志中递归的,并且在我们终止该作业时,我们已经看到了大约170000(160595)次,如 Spark-Task Commit Denied所示。

Source Code显示:
/** * :: DeveloperApi :: * Task requested the driver to commit, but was denied. */
@DeveloperApicase class TaskCommitDenied
( jobID: Int,
partitionID: Int,
attemptNumber: Int) extends TaskFailedReason
{
override def toErrorString: String = s"TaskCommitDenied (Driver denied task commit)" +
s" for job: $jobID, partition: $partitionID, attemptNumber: $attemptNumber"

/** * If a task failed because its attempt to commit was denied, do not count this failure * towards failing the stage. This is intended to prevent spurious stage failures in cases * where many speculative tasks are launched and denied to commit. */

override def countTowardsTaskFailures: Boolean = false
}

请注意,我们尚未启用spark.speculation即(这是错误的),并且在spark作业环境中我们根本没有看到此属性。

但是,当作业运行时,我们可以看到在EMRFS下的表temp目录下创建了相应的文件,例如:

hdfs://ip-172-31-18-155.ec2.internal:8020/hive/location/hive.db/hivetable/_temporary/0/task_1513431588574_1185_3_01_000000/00000_0.orc

我们可以看到大约2001年的此类文件夹(因为我们给了 spark.sql.shuffle.partitions = 2001 )

问题):

1)即使未启用spark.speculation,也可能导致作业启动约170000个任务的原因

2)完成将数据写入HDFS(EMRFS)后,为什么每个执行者都尝试启动新任务

3)有没有办法可以避免这种情况?

非常感谢您对此进行调查。任何与此相关的输入都将对我们有很大帮助。

文卡特

最佳答案

当您尝试执行任何“GroupBy”或“Join”操作时,如果相应的结果超过2GB,Spark将引发错误。检查一下。

注意:请有效地进行分区,以提高性能。您可以在this中找到在Spark中编程时发生的最常见和最愚蠢的错误。

关于apache-spark - Spark 作业继续显示TaskCommitDenied(驱动程序拒绝任务提交),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48495633/

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