【发布时间】:2016-12-29 11:54:49
【问题描述】:
ref 说:
每个分区的所有分区的序列化结果的总大小限制 触发动作(例如收集)。至少应为 1M,或 0 无限。如果总大小超过此限制,作业将被中止。 具有上限可能会导致驱动程序中的内存不足错误(取决于 JVM 中对象的 spark.driver.memory 和内存开销)。环境 适当的限制可以防止驱动程序出现内存不足错误。
这个属性到底是做什么的?我的意思是一开始(因为我不是在与因内存不足错误而失败的工作作斗争)我认为我应该增加它。
再想一想,这个属性似乎定义了工作人员可以发送给驱动程序的结果的最大大小,因此将其保留为默认值 (1G) 将是保护驱动程序的最佳方法..
但是在这种情况下会发生,worker 将不得不发送更多消息,所以开销只是工作会变慢?
如果我理解正确,假设一个工作人员想要向驱动程序发送 4G 数据,那么拥有spark.driver.maxResultSize=1G,将导致工作人员发送 4 条消息(而不是 1 条,无限 spark.driver.maxResultSize)。如果是这样,那么增加该属性以保护我的驱动程序不被 Yarn 暗杀应该是错误的。
但是上面的问题仍然存在..我的意思是如果我将它设置为 1M(最小值)会是最具保护性的方法吗?
【问题讨论】:
标签: apache-spark configuration driver communication distributed-computing