Dataframe 我没有释放资源

Dataframe 我没有释放资源,dataframe,apache-spark,pyspark,yarn,executor,Dataframe,Apache Spark,Pyspark,Yarn,Executor,我以资源经理(RM)的身份运行spark with Thread。我提交的应用程序最多尝试2次,即spark.Thread.maxAppAttempts=2。其中一个应用程序正在处理大约3 TB的数据,因为内存问题,尝试1失败(在处理10个表中的5个表之后),尝试2开始。尽管attempt1失败,但它没有释放资源(执行器)以将其用于尝试2。不理解为什么不释放资源。下面是配置文件 spark.executor.memory=30G spark.executor.cores=5 spark.exec

我以资源经理(RM)的身份运行spark with Thread。我提交的应用程序最多尝试2次,即
spark.Thread.maxAppAttempts=2
。其中一个应用程序正在处理大约3 TB的数据,因为内存问题,尝试1失败(在处理10个表中的5个表之后),尝试2开始。尽管attempt1失败,但它没有释放资源(执行器)以将其用于尝试2。不理解为什么不释放资源。下面是配置文件

spark.executor.memory=30G
spark.executor.cores=5
spark.executor.instances=95
spark.yarn.executor.memoryOverhead=8G

可用的执行器总数为100个,其中我尝试使用95个,尝试1尝试使用所有95个执行器。尝试1失败后,尝试2由5个执行器启动。根据我的理解,尝试2应该以95个执行器开始,就像尝试1一样,因为尝试1失败了,所有的资源都应该可以用于尝试2。

这取决于您在executor中拥有什么样的业务逻辑。。您是否在executor中启动了任何守护进程线程?我建议重新分配数据,保持spark.executor.cores=2或spark.executor.cores=4,并相应地调整其他参数。spark.Thread.executor.memoryOverhead也太高了我在这里做所有假设。。。请更新您的问题并添加更具体的细节。@kavetiraviteja,根据EMR最新建议,18%是默认内存开销,基于这一点,6GB就足够了,但是我观察到内存开销问题,所以选择8GB。我相信5个内核不会导致任何I/O问题,问2个或4个内核有什么具体原因?分区数为2048。我没有在执行者内部运行任何恶魔服务。执行SQL查询,这就是我要做的。这取决于executor中的业务逻辑类型。。您是否在executor中启动了任何守护进程线程?我建议重新分配数据,保持spark.executor.cores=2或spark.executor.cores=4,并相应地调整其他参数。spark.Thread.executor.memoryOverhead也太高了我在这里做所有假设。。。请更新您的问题并添加更具体的细节。@kavetiraviteja,根据EMR最新建议,18%是默认内存开销,基于这一点,6GB就足够了,但是我观察到内存开销问题,所以选择8GB。我相信5个内核不会导致任何I/O问题,问2个或4个内核有什么具体原因?分区数为2048。我没有在执行者内部运行任何恶魔服务。执行SQL查询,这就是我要做的。