Apache spark 如何阅读Spark用户界面

Apache spark 如何阅读Spark用户界面,apache-spark,Apache Spark,我试图在这张照片中了解目前的情况 它在我看来是什么样子 4台工人机器,每个机器配备93.3 Gb Ram 应用程序pyskark shell每台机器使用10个内核,每台机器使用32 Gb RAM appbacktestin2在每台机器中使用2或6个内核,在每台机器中使用8 Gb (注意:我确定作业是如何在节点之间分割的。) 我的期望 应用程序pyskark shell在每台机器中使用10个内核,在每台机器中为每个内核使用32 Gb RAM=总共使用320 Gb appbacktestin2

我试图在这张照片中了解目前的情况

它在我看来是什么样子

  • 4台工人机器,每个机器配备93.3 Gb Ram
  • 应用程序
    pyskark shell
    每台机器使用10个内核,每台机器使用32 Gb RAM
  • app
    backtestin2
    在每台机器中使用2或6个内核,在每台机器中使用8 Gb
(注意:我确定作业是如何在节点之间分割的。)

我的期望

  • 应用程序
    pyskark shell
    在每台机器中使用10个内核,在每台机器中为每个内核使用32 Gb RAM=总共使用320 Gb
  • app
    backtestin2
    在机器中使用16个内核,每个内核在每台机器中需要8 Gb=总计128 Gb
这是否意味着每个节点的内存在特定应用程序节点上运行的所有任务之间共享?我认为属性
conf.set('spark.executor.memory',executor\u memory)
应该是每个任务的

理由:

我确实知道每个任务需要多少内存,但我不知道每个执行器需要多少任务:因此我无法估计每个执行器的内存

这是否意味着每个节点的内存在特定应用程序节点上运行的所有任务之间共享

也就是说,每个节点的内存是指为每个节点上的应用程序分配的总内存。此内存根据spark内存配置进一步拆分()。在估计内存需求时,需要考虑将有多少内存用于存储(即缓存的数据帧/RDD)和执行。默认情况下,一半的内存用于执行任务,另一半用于存储。还可以配置可并行运行的任务数(默认为#个内核)。假设一半的内存用于执行,并且假设您已经对数据进行了适当的分区,那么使用默认配置运行应用程序所需的内存总量大约为2*(#并行运行的任务数)*(运行最大任务之一所需的内存数)。当然,这个估计高度依赖于您的特定用例、配置和实现。中还有更多与记忆相关的提示。希望Spark UI在将来能够改进,以便更清楚地了解内存使用情况