Google Dataproc上的Spark UI:数字解释

问题描述 投票:1回答:1

我正在Google Dataproc集群(3个节点n1-highmem-4,因此有4个内核,每个26GB,对于主服务器来说是相同的类型)上运行spark作业。我对Hadoop和spark UI上显示的信息有一些疑问:

当我检查Hadoop UI时,我得到了:

Hadoop UI screenshot

我的问题是:我的总RAM应该是84(3x26),所以为什么这里只显示60Gb? 24GB是否用于其他用途?

2)Spark Excutor screenshot

这是显示当前启动的执行程序的屏幕。我的问题是:

  • 为什么只使用10个内核?我们不应该能够使用剩下的2个内核来启动第6个执行程序,因为我们有12个内核,每个执行程序似乎使用了2个?

  • 为什么每个执行者有2个核心?如果我们运行12个执行器,每个执行器各有1个核心,它会改变什么吗?

  • 什么是“输入”列?每个执行者收到的总分析量?

3)enter image description here

这是“存储”面板的屏幕截图。我看到了我正在处理的数据框。我不了解“内存大小”列。它是用于缓存数据帧的总RAM吗?与我加载到Dataframe中的行文件的大小(500GB +)相比,它似乎非常低。这是一个错误的解释吗?

感谢任何阅读此书的人!

apache-spark pyspark google-cloud-dataproc
1个回答
0
投票

[如果您可以看一下此answer,它基本上可以回答您的问题1和2。

总而言之,总内存较少,因为保留了一些内存来运行OS和系统守护程序或Hadoop守护程序本身,例如Namenode,NodeManager。

类似于核心,在您的情况下,它将是3个节点,每个节点运行2个执行程序,每个执行程序使用2个核心(应用程序主服务器除外)。对于应用程序主机所在的节点,将只有一个执行程序,剩下的核心将交给主机。这就是为什么您只看到5个执行程序和10个内核的原因。

对于您的第三个问题,该数字应该是该RDD中的分区所用的内存,大约等于分配给每个执行程序的内存(在您的情况下约为13G)。

请注意,Spark不会一次加载您的500G数据,而是将其加载到分区中的数据中,同时加载的分区数取决于您可用的内核数。

© www.soinside.com 2019 - 2024. All rights reserved.