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

Apache spark 如何计算每个执行器的执行器数量和内存?,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,嗨,我有两个节点,每个16 GB RAM和4个内核。 有人能建议我使用spark属性,例如执行器的数量和执行器内存,以便有效地使用它吗 我正在使用spark sql查询(选择*query with 2 join),并向我建议一种方法,以便我希望将此查询过程的时间缩短到1秒,并且到目前为止,我的输入数据为10 GB。典型的工作负载可能在每个进程2到8GB的范围内使用。如果您的资源很小,那么每个执行器可能有3G和4个执行器(每个核心一个)。这就为O/S和其他进程留下了大量的ram(4gb) 使用4个

嗨,我有两个节点,每个16 GB RAM和4个内核。 有人能建议我使用spark属性,例如执行器的数量和执行器内存,以便有效地使用它吗


我正在使用spark sql查询(选择*query with 2 join),并向我建议一种方法,以便我希望将此查询过程的时间缩短到1秒,并且到目前为止,我的输入数据为10 GB。典型的工作负载可能在每个进程2到8GB的范围内使用。如果您的资源很小,那么每个执行器可能有3G和4个执行器(每个核心一个)。这就为O/S和其他进程留下了大量的ram(4gb)

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

独立(和mesos):

纱线:

另一个设置是

 --executor-memory=3G

资源分配有两种方式:静态分配和动态分配。下面是如何为应用程序分配静态资源

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

首先应为操作系统分配1个内核和1 GB,留下15 GB RAM和3个内核

Core是Spark中的并发级别,因此如果有3个Core,则可以同时运行3个并发进程

接下来是执行者数量的计算。每个执行器在自己的JVM进程中运行,每个工作节点可以运行多个执行器。建议每个执行器最多有5个并发进程,否则在单个JVM实例中无法管理并发进程。因为您只有3个内核,所以可以有1个执行器

将15 GB的RAM划分为3个核,每个核将剩下5 GB

因此,在本例中,您将设置以下属性

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

还有关于my的任何建议(选择*使用2个联接进行查询)problem@wazza您可能没有指定输入表的正确分区。您可能需要实现该功能以提高性能。是的,我尝试使用Hive dynamic partition概念使用名为ID的列对表进行分区,该列具有20万个不同的值,但它总是占用内存issues@wazza. 我至少回答了你的问题AFA执行者/核心参数的一部分:也许考虑投票。设置分区是一个复杂的主题,可以在单独的问题中解决。
 --executor-memory=3G
Number of cores = 3
Number of Executors = 1
RAM = 15 GB