【问题标题】:How YARN knows data locality in Apache spark in cluster modeYARN 如何在集群模式下了解 Apache Spark 中的数据局部性
【发布时间】:2018-04-20 14:51:29
【问题描述】:

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

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

假设 YARN 分配的是 NODE 1 内的执行程序。

YARN如何在输入数据所在的节点准确分配一个executor?

谁告诉 YARN 复制的 HDFS 块的 records.txt 之一在节点 1 中可用?

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

YARN 是否知道数据局部性?

【问题讨论】:

  • 我觉得this link 很有帮助
  • 好问题,唯一的问题是 Yarn 是新 Hadoop 版本的一部分,所以它是众所周知的。

标签: apache-spark hadoop-yarn


【解决方案1】:

这里的基本问题是:

YARN 是否知道数据局部性?

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

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

那么应用程序如何“知道”

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 2023-03-09
    • 2015-05-06
    相关资源
    最近更新 更多