首页 文章

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

提问于
浏览
3

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

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

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

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

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

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

YARN知道数据的性质吗?

1 回答

  • 3

    这里的基本问题是:

    YARN知道数据的性质吗?

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

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

    那怎么申请"knows"?

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

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

相关问题