Spark 或 Flink 如何实现 HDFS 上的位置感知?

How is location awareness on HDFS achieved when using Spark or Flink?

我想知道 Spark 或 Flink 执行引擎(主调度程序)如何为每个块找到合适的工作程序。

namenode 将能够告诉他们块的确切位置,但这项任务是由 Spark 和 Flink 的作业管理器完成的,还是 YARN 发挥作用的东西?

我只能说Flink。 JobManagerHDFS Namenode 请求块信息并计算块任务分配。首先,本地块被分配给每个 TaskManger (TM)。如果 TM 没有任何本地块,则会分配远程块。如果不再有可用的本地块,所有剩余的块将平均分配给所有 TM(以获得良好的负载平衡)。