spark中的驱动程序内存和执行程序内存是什么?

rou*_*esh 3 bigdata apache-spark

我是 Spark 框架的新手,我想知道什么是驱动程序内存和执行程序内存?从两者中获得最大性能的有效方法是什么?

Thi*_*dim 6

Spark 需要一个驱动程序来处理执行程序。所以最好的理解方式是:

司机

负责处理代码的主要逻辑,使用纱线获取资源,处理分配并处理某种类型逻辑的少量数据。Driver Memory 与您将检索到 master 以处理某些逻辑的数据量有关。如果您用一个rdd.collect()驱动程序检索太多数据,您的驱动程序将耗尽内存。驱动程序的内存通常很小,如果你不向它发送太多数据,2Gb 到 4Gb 就足够了。

工人

这就是魔法发生的地方,工人将负责执行您的工作。内存量取决于你要做什么。如果您只是要执行一个map仅转换数据而不进行聚合类型的函数,则通常不需要太多内存。但是如果你要运行大型聚合,很多步骤等等。通常你会使用大量的内存。它与您将阅读的文件大小有关。

告诉您每种情况的适当内存量都取决于您的工作将如何工作。您需要了解每个功能的影响是什么,并监控以调整每个作业的内存使用情况。也许每个工人 2Gb 是您需要的,但有时每个工人 8Gb 才是您需要的。