Dask 是否与 HDFS 通信以优化数据局部性?
Does Dask communicate with HDFS to optimize for data locality?
在 Dask distributed documentation 中,他们有以下信息:
For example Dask developers use this ability to build in data locality
when we communicate to data-local storage systems like the Hadoop File
System. When users use high-level functions like
dask.dataframe.read_csv('hdfs:///path/to/files.*.csv') Dask talks to
the HDFS name node, finds the locations of all of the blocks of data,
and sends that information to the scheduler so that it can make
smarter decisions and improve load times for users.
但是,get_block_locations()
似乎已从 HDFS fs 后端删除,所以我的问题是:Dask 关于 HDFS 的当前状态是什么?它是否将计算发送到数据位于本地的节点?是否优化调度程序以考虑 HDFS 上的数据局部性?
非常正确,随着 arrow 的 HDFS 接口的出现,现在比 hdfs3 更受欢迎,块位置的考虑不再是访问 HDFS 的工作负载的一部分,因为 arrow 的实现不包括 get_block_locations () 方法。
但是,我们已经想删除使这项工作变得有些复杂的代码,因为我们发现测试 HDFS 部署的节点间带宽完全足够,它在大多数工作负载中几乎没有实际差异。块大小与内存中分区大小的额外限制创建了额外的复杂层。
通过删除专门的代码,我们可以避免为 HDFS 制作的非常特殊的情况,而不是外部云存储(s3、gcs、azure),在这种情况下,哪个工作人员访问了哪个部分并不重要数据。
简而言之,是的,应该更新文档。
在 Dask distributed documentation 中,他们有以下信息:
For example Dask developers use this ability to build in data locality when we communicate to data-local storage systems like the Hadoop File System. When users use high-level functions like dask.dataframe.read_csv('hdfs:///path/to/files.*.csv') Dask talks to the HDFS name node, finds the locations of all of the blocks of data, and sends that information to the scheduler so that it can make smarter decisions and improve load times for users.
但是,get_block_locations()
似乎已从 HDFS fs 后端删除,所以我的问题是:Dask 关于 HDFS 的当前状态是什么?它是否将计算发送到数据位于本地的节点?是否优化调度程序以考虑 HDFS 上的数据局部性?
非常正确,随着 arrow 的 HDFS 接口的出现,现在比 hdfs3 更受欢迎,块位置的考虑不再是访问 HDFS 的工作负载的一部分,因为 arrow 的实现不包括 get_block_locations () 方法。
但是,我们已经想删除使这项工作变得有些复杂的代码,因为我们发现测试 HDFS 部署的节点间带宽完全足够,它在大多数工作负载中几乎没有实际差异。块大小与内存中分区大小的额外限制创建了额外的复杂层。
通过删除专门的代码,我们可以避免为 HDFS 制作的非常特殊的情况,而不是外部云存储(s3、gcs、azure),在这种情况下,哪个工作人员访问了哪个部分并不重要数据。
简而言之,是的,应该更新文档。