【问题标题】:Does Spark on yarn deal with Data locality while launching executors纱线上的 Spark 在启动执行程序时是否处理数据局部性
【发布时间】:2017-09-22 00:11:40
【问题描述】:

我正在考虑 spark executor 的静态分配。 Spark on yarn 是否会在启动执行程序时考虑在 Spark 应用程序中使用原始输入数据集的数据局部性。

如果它确实处​​理了这一点,它是如何在初始化火花上下文时请求和分配火花执行器的。有可能在 spark 应用程序中使用多个原始输入数据集,这些数据集可以物理地驻留在许多不同的数据节点上。我们不能在所有这些节点上运行 executor。

我了解 spark 在执行器上调度任务时会处理数据局部性(如 https://spark.apache.org/docs/latest/tuning.html#data-locality 所述)。

【问题讨论】:

    标签: apache-spark hdfs hadoop-yarn


    【解决方案1】:

    你说的很对

    spark 在 executor 上调度任务时负责数据局部性

    当 Yarn 启动执行程序时,它不知道您的数据在哪里。因此,在理想情况下,您在集群的所有节点上启动执行程序。但是,更现实的是,您只在一部分节点上启动。

    现在,这不一定是坏事,因为 HDFS 固有地支持冗余,这意味着在 spark 请求数据的节点上可能存在数据副本。

    【讨论】:

    • 所以在分配执行者数据局部性的时候没有实现。那么数据局部性是在什么时间确定的呢?
    • 当您通过数据框 API 加载数据时,它在内部使用 Hadoop 二进制文件来计算拆分及其数据位置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 2022-06-20
    • 2020-10-14
    • 1970-01-01
    相关资源
    最近更新 更多