"total-executor-cores" Spark 中与数据节点相关的参数



另一个我很少读到的项目。

撇开 S3 不谈,而不是现在尝试 Spark、Hadoop 的裸机经典数据局部性方法,而不是在动态资源分配模式下,那么:

  • 如果 HDFS 中的大型数据集分布在集群中的(所有)N 个数据节点上,但总执行者核心参数设置为低于 N,并且我们需要读取明显(所有)N 个相关数据节点上的所有数据,该怎么办?

  • 我假设Spark必须忽略这个参数才能从HDFS读取。要不?

  • 如果它被忽略,则需要在该数据节点上分配一个执行器核心,从而被整个作业获取,因此需要将此参数解释为用于处理而不是用于读取块?

  • 来自此类数据节点的数据是否立即随机排列到执行程序的分配位置?

提前谢谢。

这里似乎有点混乱。

最佳数据局部性(节点局部)是我们想要实现的,而不是保证的。Spark 所能做的就是请求资源(例如使用 YARN - YARN 如何在集群模式下的 Apache Spark 中知道数据局部性),并希望它能够获得满足数据局部性约束的资源。

如果没有,它将简单地从远程节点获取数据。但是,它不是洗牌。它只是通过网络进行的简单传输。

所以要回答你的问题 - Spark将使用已分配的资源,尽力满足约束。它不能使用尚未获取的节点,因此它不会自动获取其他节点进行读取。

最新更新