如何计算执行器的数量和每个执行器的内存



Hi我有两个节点,每个节点有16 GB RAM和4个内核。有人能建议我激发诸如no of executors和executor memory之类的属性来有效地使用它吗?

我正在使用spark-sql查询(Select*query with 2 joins),并建议我一种方法,使我希望将查询过程时间减少到1秒,我的输入数据从现在起减少到10 GB

典型的工作负载可能在每个进程2到8GB的范围内使用。考虑到你的小资源,那么每个执行者可能有3G,4个执行者(每个核心一个)。这为O/S和其他进程留下了大量的ram(4gb)。

使用4个执行器将是spark standalone的默认执行器(您正在使用它还是正在使用Yarn?)在这种情况下,您不需要显式指定它。但以防万一:

独立(和介观):

 --total-executor-cores=8

纱线:

 --num-executors=1 --executor-cores=4 

另一个设置是

 --executor-memory=3G

有两种分配资源的方法静态分配和动态分配。以下是如何将静态资源分配给应用程序

您的群集资源总量16 GB内存4芯

第一个1核和1 GB应该分配给操作系统,留下15 GB RAM和3核

核心是Spark中的并发级别,所以如果有3个核心,就可以同时运行3个并发进程。

接下来是执行人数的计算。每个执行器在自己的JVM进程中运行,每个Worker节点可以运行多个执行器。建议每个执行器最多有5个并发进程,否则争用量的并发进程将无法在单个JVM实例中管理。因为你只有3个核心,所以你可以有一个执行

将15GB的RAM划分为3个核心将为每个核心留下5GB。

因此,在您的情况下,您将设置以下属性

Number of cores = 3
Number of Executors = 1
RAM = 15 GB

相关内容

  • 没有找到相关文章

最新更新