【问题标题】:Does Dask communicate with HDFS to optimize for data locality?Dask 是否与 HDFS 通信以优化数据局部性?
【发布时间】:2019-02-07 03:10:43
【问题描述】:

在Dask分发的documentation中,他们有以下信息:

例如,Dask 开发人员使用此功能来构建数据局部性 当我们与 Hadoop 文件等数据本地存储系统进行通信时 系统。当用户使用高级功能时 dask.dataframe.read_csv('hdfs:///path/to/files.*.csv') Dask 与 HDFS 名称节点,查找所有数据块的位置, 并将该信息发送到调度程序,以便它可以 更明智的决策并缩短用户的加载时间。

但是,get_block_locations() 似乎已从 HDFS fs 后端删除,所以我的问题是:关于 HDFS,Dask 的当前状态是什么?它是否将计算发送到数据在本地的节点?是否优化调度程序以考虑 HDFS 上的数据局部性?

【问题讨论】:

    标签: hdfs dask dask-distributed


    【解决方案1】:

    非常正确,由于 Arrow 的 HDFS 接口现在比 hdfs3 更受欢迎,因此块位置的考虑不再是访问 HDFS 的工作负载的一部分,因为 arrow 的实现不包括 get_block_locations() 方法。

    但是,我们已经想删除使这项工作发挥作用的有些复杂的代码,因为我们发现测试 HDFS 部署的节点间带宽完全足够,它在大多数工作负载中几乎没有实际差异。块大小与您希望在内存中的分区大小的额外限制创建了额外的复杂层。

    通过删除专用代码,我们可以避免为 HDFS 制作的非常特殊的情况,而不是外部云存储(s3、gcs、azure),在这种情况下,哪个工作人员访问哪一部分数据并不重要。

    简而言之,是的,应该更新文档。

    【讨论】:

    • 谢谢@mdurant,对我来说完全有道理,用专门的代码维护 fs 后端是不值得的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    相关资源
    最近更新 更多