【问题标题】:What is HDFS data locality?什么是 HDFS 数据局部性?
【发布时间】:2018-02-11 16:03:36
【问题描述】:

当我们谈论数据本地化时,无论是 MR 还是 Spark。我有点困惑,数据局部性是指直接从操作系统读取本地机器的数据(使用本地文件读取协议)还是仅仅基于HDFS协议从本地访问数据?

【问题讨论】:

    标签: apache-spark hdfs


    【解决方案1】:

    一个非常基本的问题,如果我们都能正确理解就好了。

    在 Spark 中,RDD 的五个特征之一是“可选地,计算每个拆分的首选位置列表(例如 HDFS 文件的块位置)”(参见 RDD API scaladoc)。

    每当DAGScheduler 为 Spark 作业安排任务执行时,它都会遍历首选位置列表并尝试“下订单”到运行 Spark 执行器的计算节点。如果成功,则计算尽可能接近所需的数据。

    这带来的优势是计算而不是移动数据(由于网络带宽和数据大小,这将更加昂贵)。

    【讨论】:

    • 知道了。也许这个问题还不够清楚。我的场景是,我们使用 --net=host 模式在 docker 中构建 spark 运行。并且 docker 容器恰好在目标文件所在的数据节点上运行。我想让火花直接从数据节点访问数据(如果数据和火花执行器在同一台服务器上),我不知道要实现这个我们需要重写文件读取器以直接从操作系统读取数据hdfs 数据文件夹或只是告诉 spark 说:数据在本地机器上,spark 将自动访问 hdfs。顺便说一句:火花在 mesos 中运行,而不是在 hdfs 的纱线中。
    • "我不知道要实现这个"它是自动完成的,您不必为您的特定用例实现任何东西。你有什么理由不这么认为吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2015-07-02
    • 2015-07-02
    • 1970-01-01
    • 2017-07-11
    • 2016-03-21
    • 2013-10-28
    相关资源
    最近更新 更多