【问题标题】:Spark UI on Google Dataproc: numbers interpretationGoogle Dataproc 上的 Spark UI:数字解释
【发布时间】:2020-05-24 18:08:14
【问题描述】:

我在 Google Dataproc 集群(3 个节点 n1-highmem-4 所以 4 个内核和每个 26GB,主节点类型相同)上运行一个 spark 作业。 我对 Hadoop 和 spark UI 上显示的信息有几个问题:

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

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

2)

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

  • 为什么只使用 10 个内核?由于我们有 12 个内核,我们是否应该能够使用剩余的 2 个内核启动第 6 个执行程序,并且每个执行程序似乎使用 2 个?

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

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

3)

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

感谢所有阅读本文的人!

【问题讨论】:

    标签: apache-spark pyspark google-cloud-dataproc


    【解决方案1】:

    如果你可以看看这个answer,它主要回答了你的问题1和2。

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

    与核心类似,在您的情况下,它将是 3 个节点,每个节点运行 2 个执行器,每个执行器使用 2 个核心,应用程序主节点除外。应用master所在的节点,只有一个executor,剩下的core给master。这就是为什么您只看到 5 个执行程序和 10 个核心。

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

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

    【讨论】:

      猜你喜欢
      • 2017-10-30
      • 1970-01-01
      • 2022-10-03
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多