YARN如何知道群集模式下Apache spark中的数据位置

时间:2018-04-20 14:51:29

标签: apache-spark yarn

假设有一个Spark作业将从HDFS读取名为records.txt的文件,并进行一些转换和一个动作(将处理后的输出写入HDFS)。该作业将提交到YARN群集模式

还假设records.txt是一个128 MB的文件,其中一个HDFS复制块也在NODE 1中

让我们说YARN分配是NODE 1中的执行者。

YARN如何在输入数据所在的节点中准确分配执行程序?

谁告诉YARN在NODE 1中有一个复制的record.txt复制HDFS块?

Spark Application如何找到数据localilty?它是由在Application Master中运行的Driver完成的吗?

YARN知道datalocality吗?

1 个答案:

答案 0 :(得分:4)

这里的基本问题是:

  

YARN知道datalocality吗?

YARN"知道"什么应用程序告诉它,它了解集群的结构(拓扑)。当应用程序发出资源请求时,它可以包含特定的位置约束,在分配资源时可能会或可能不会满足。

如果无法指定约束,YARN(或任何其他集群管理器)将根据其对集群拓扑的了解,尝试提供最佳替代匹配。

那么应用程序"如何知道"

如果应用程序使用支持某种形式的数据局部性的输入源(文件系统或其他),它可以查询相应的目录(在HDFS的情况下为namenode)以获取它想要访问的数据块的位置。 / p>

从广义上讲,Spark RDD可以定义preferredLocations,具体取决于特定的RDD实现,后者可以在以后转换为资源约束,用于集群管理器(不一定是YARN)。