什么是 Spark 中的 Driver Memory 和 Executor Memory?

8

我是spark框架的新手,想知道什么是driver memory和executor memory?如何有效地从它们两个中获得最大性能?


我猜你可能会对这个感兴趣:https://dev59.com/mF8d5IYBdhLWcg3wsDtW - ernest_k
1个回答

10

Spark需要一个驱动程序来处理执行器。因此,最好的理解方法是:

驱动程序

负责处理代码的主逻辑,使用Yarn获取资源,处理分配并处理某些类型逻辑所需的少量数据。驱动内存与您将检索到主节点以处理某些逻辑的数据量有关。如果使用 rdd.collect() 检索过多的数据,则驱动程序将用尽内存。通常情况下,驱动程序的内存很小,2GB到4GB足够了,除非向其发送了太多数据。

工作进程

这里是魔法发生的地方,工作进程负责执行您的任务。内存的数量取决于您要执行的操作。如果只是进行 map 函数,仅转换数据而不进行任何聚合,通常不需要太多内存。但是,如果要运行大型聚合、多个步骤等,通常会使用大量内存,并且与读取的文件的大小相关。

告诉你每种情况下的适当内存量都取决于工作方式。您需要了解每个函数的影响并监视以调整每个作业的内存使用情况。也许每个工作进程需要2GB,但有时候需要每个工作进程8GB。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接