Spark 何时从 Executor 驱逐广播数据帧?

问题描述

我对何时广播数据帧有疑问。

广播数据帧的副本被发送到每个执行器。

那么,Spark 什么时候从每个 Executor 驱逐这些副本?

解决方法

我发现这个主题在功能上很容易理解,但手册在技术上更难遵循,而且总是有改进。

我的看法:

  • 有一个 ContextCleaner 在驱动程序上为每个 Spark 应用程序运行。
  • 它会在 SparkContext 开始时立即开始创建。
  • 更多的是关于 Spark 中的各种对象。
  • ContextCleaner 线程清理 RDD、shuffle 和广播状态,使用始终运行的 keepCleaning 方法的累加器 从这个班级。它决定哪些对象由于不再被驱逐而需要驱逐 被引用,这些被放在一个列表中。它调用各种方法,例如 如registerShuffleForCleanup。也就是说,检查是否有 alive root 对象指向给定的对象;如果是,则该对象有资格进行清理、驱逐。
  • context-cleaner-periodic-gc 异步请求标准 JVM 垃圾收集器。定期运行此操作在以下时间开始 ContextCleanerContextCleaner 终止时开始和停止。
  • Spark 使用标准的 Java GC。

这个 https://mallikarjuna_g.gitbooks.io/spark/content/spark-service-contextcleaner.html 是 Spark 官方文档旁边的一个很好的参考。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...