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

时间:2019-03-21 04:57:55

标签: apache-spark bigdata

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

1 个答案:

答案 0 :(得分:2)

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

驱动程序

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

工人

这是发生魔术的地方,工人将是负责执行工作的人。内存量取决于您要做什么。如果您只是想执行一个map函数,而该函数只是在不进行任何聚合的情况下转换数据,则通常不需要太多内存。但是,如果您要运行大型聚合,很多步骤等,通常会占用大量内存。这与您将要读取的文件大小有关。

为每种情况告诉您适当的内存量,这完全取决于您的工作方式。您需要了解每个功能的影响,并进行监控以调整每个作业的内存使用量。也许每名员工需要2Gb,但有时每名员工需要8Gb。