小编And*_*dre的帖子

Spark UI 对应用程序内存使用有什么影响?

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

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

在调查过程中,有人发现了一个不太相似的问题,通过调整一些 UI 参数解决了这个问题(Yarn Heap 使用量随着时间的推移而增长):

  • Spark.ui.retainedJobs=50
  • Spark.ui.retainedStages=50
  • Spark.ui.retainedTasks=500
  • Spark.worker.ui.retainedExecutors=50
  • Spark.worker.ui.retainedDrivers=50
  • Spark.sql.ui.retainedExecutions=50
  • Spark.streaming.ui.retainedBatches=50

由于这些是 UI 参数,因此它们会影响应用程序的内存使用情况对我来说没有意义,除非它们影响应用程序存储发送到 UI 的信息的方式。早期测试表明,应用程序确实运行时间更长,没有出现 OOM 问题。

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

谢谢

parameters user-interface driver out-of-memory apache-spark

6
推荐指数
1
解决办法
1202
查看次数

C中的括号运算符.以下代码中的效果如何

当我在禁用宏时出现以下代码时,我正在使用宏来启用/禁用跟踪:

int main()
{

  ("Hello world");

}
Run Code Online (Sandbox Code Playgroud)

这段代码是有效的,我得到了预期的效果(当宏被禁用时没有任何反应),但我无法弄清楚到底发生了什么.编译器是否将括号视为"无名"方法声明?

为了使代码更清晰,代码是:

 #ifdef TRACE

    #define trace printf("%s %d -> ",__FILE__, __LINE__);printf
 else

    #define trace
 #endif

int main()
{

  trace("Hello world");

}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

c parentheses

4
推荐指数
1
解决办法
2791
查看次数