Apache spark 火花与纱线的资源配置

Apache spark 火花与纱线的资源配置,apache-spark,yarn,apache-zeppelin,Apache Spark,Yarn,Apache Zeppelin,我正在使用Zeppelin 0.7.3和Spark 2.3的纱线客户端模式。 我的设置是: 火花: spark.driver.memory 4096m spark.driver.memoryOverhead 3072m spark.executor.memory 4096m spark.executor.memoryOverhead 3072m spark.executor.cores

我正在使用Zeppelin 0.7.3和Spark 2.3的纱线客户端模式。 我的设置是:

火花:

spark.driver.memory             4096m
spark.driver.memoryOverhead         3072m
spark.executor.memory           4096m
spark.executor.memoryOverhead           3072m
spark.executor.cores                3
spark.executor.instances            3
纱线:

  • 我不太明白纱线分配的内存量。考虑到这些设置, 我假设纱线将保留(4096+3072)*4m=28672m。然而,看起来 spark.executor.memoryOverhead选项被忽略(我还尝试了spark.Thread.executor.memoryOverhead) 没有效果)。因此,最低384m被分配为间接费用。作为最低分配 设置为1024m,我们得到(4096+3072)*1m+(4096+1024)*3m=22528m,其中第一项为 驱动程序和第二项汇总执行器内存

  • 为什么只分配了4个CPU vCore,尽管我要求了更多,而且最小分配是 设置为2,我需要更多的内核?在查看应用程序主控程序时,我发现以下执行者:

  • 在这里,执行器实际上每个都有3个核心。我如何知道哪个值是正确的或什么 我失踪了吗

  • 我尝试了一些设置,在Thread客户端模式下,我应该使用如下选项 spark.Thread.am.存储器或spark.Thread.am.磁芯。然而,这些似乎被纱线忽略了。 为什么会这样?此外,在客户机模式下,驱动程序应该在外部运行 一种纱线。为什么资源仍在纱线中分配?我的齐柏林飞艇在同一台机器上运行 作为一名工人
  • One spark应用程序有三个角色:驱动程序、应用程序主程序和执行程序

  • 在客户机模式(部署模式之一)中,驱动程序本身不向Thread请求资源,所以我们有一个应用程序主程序,三个执行器,Thread必须分配哪些资源。所以我认为spark会要求(4G+3G)*3用于三个执行器,1G用于am。因此
    分配的内存将减少22GB(22528MB)

  • 至于核心编号,我认为Spark UI给出了正确的答案,因为我的经验

  • Minimum allocation: memory:1024, vCores:2
    Maximum allocation: memory:9216, vCores:6
    The application started by Zeppelin gets the following resources:
    Running Containers      4
    Allocated CPU VCores        4
    Allocated Memory MB 22528