Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark spark UI对应用程序的影响是什么;内存使用情况如何?_Apache Spark_User Interface_Parameters_Out Of Memory_Driver - Fatal编程技术网

Apache spark spark UI对应用程序的影响是什么;内存使用情况如何?

Apache spark spark UI对应用程序的影响是什么;内存使用情况如何?,apache-spark,user-interface,parameters,out-of-memory,driver,Apache Spark,User Interface,Parameters,Out Of Memory,Driver,我有一个Spark应用程序(2.4.5),使用Kafka作为源,使用大批量窗口(5分钟),在我们的应用程序中,我们只关心从特定时间间隔到处理数据的RDD 发生的情况是,我们的应用程序不时崩溃,驱动程序上出现OutOfMemory异常(在客户端模式下运行)或执行器上出现GC OutOfMemory异常。经过大量的研究,我们似乎没有正确地处理导致血统无限增长的状态。我们考虑通过使用批处理方法(控制从Kafka获取的偏移量并从中创建RDD(这将截断沿袭)或通过启用检查点来解决问题 在调查过程中,有人发

我有一个Spark应用程序(2.4.5),使用Kafka作为源,使用大批量窗口(5分钟),在我们的应用程序中,我们只关心从特定时间间隔到处理数据的RDD

发生的情况是,我们的应用程序不时崩溃,驱动程序上出现OutOfMemory异常(在客户端模式下运行)或执行器上出现GC OutOfMemory异常。经过大量的研究,我们似乎没有正确地处理导致血统无限增长的状态。我们考虑通过使用批处理方法(控制从Kafka获取的偏移量并从中创建RDD(这将截断沿袭)或通过启用检查点来解决问题

在调查过程中,有人发现了一个不太类似的问题,通过调整一些UI参数()解决了这个问题:

  • spark.ui.retainedJobs=50
  • spark.ui.retainedStages=50
  • spark.ui.retainedTasks=500
  • spark.worker.ui.retainedExecutors=50
  • spark.worker.ui.retainedrivers=50
  • spark.sql.ui.retainedExecutions=50
  • spark.streaming.ui.retainedBatches=50
因为这些都是UI参数,所以我认为它们不会影响应用程序的内存使用,除非它们影响应用程序存储发送到UI的信息的方式。早期测试表明,应用程序确实运行得更长,没有OOM问题

有人能解释一下这些参数对应用程序的影响吗?它们真的会影响应用程序的内存使用吗?是否还有其他参数需要我研究以了解整个情况(我想知道是否有一个“因子”参数需要调整,以便内存分配适合我们的情况)


谢谢您

经过大量测试,我们的团队设法将问题缩小到这个特定参数:

spark.sql.ui.retainedExecutions

我决定深入研究,所以我下载了Spark的代码。我发现有关解析的逻辑计划的信息不仅保存在应用程序的内存中,而且还受此参数的控制

创建SparkSession会话时,实例化的许多对象之一是SQLAppStatusListener。此类实现两个方法:

OneExecutionStart-每次执行时,都会创建一个新的SparkLangraphWrapper,它将保存对已解析逻辑计划的引用,并将其添加到SharedState对象中,在本例中,该对象跟踪创建了多少个对象实例

cleanupExecution-如果存储对象的数量大于spark.sql.ui.retainedExecutions的值(默认值为1000),则从SharedState对象中删除SparkPlanGraphWrapper


具体地说,在我们的例子中,逻辑计划占用4MB内存,因此以一种简单的方式,我们必须分配4GB内存来容纳保留的执行。

learnsome。我无法从手册或其他地方收集到这一点。在GC方面很难遵循。假设正确的话,就这样投票。也就是说,spark很难从其他几个方面入手。我不相信所有人都知道他们在处理什么。