我想知道,如何确保HDFS数据访问充分利用本地复制,以最大限度地减少网络传输的使用。
我在3台机器上托管HDFS,复制设置为3。让我们将它们命名为机器A、B、C。机器A是命名节点,这3台机器都是数据阳极。
当前,我正在阅读类似以下代码的数据
# Run this code on machine A, B, C separately
import fsspec
import pandas as pd
with fsspec.open('hdfs://machine_A_ip:9000/path/to/data.parquet', 'rb') as fp:
df = pd.read_parquet(fp)
字符串
我观察到我有一个巨大的流量的网络连接100+MB/s的上传和下载。无论我运行在哪台机器上(namenode与否)。
我也试过在同一台机器上托管Dask和Ray集群。但我认为Dask不支持这个功能:Does Dask communicate with HDFS to optimize for data locality? - Stack Overflow
我还没在文件里找到线索
- API参考- fsspec:Wraps pyarrow
- Apache Arrow- Apache Arrow
- 文件系统接口- Apache Arrow
- Issues · apache/arrow:似乎没有关于位置的争议
1条答案
按热度按时间cnjp1d6j1#
你是对的,dask不知道每个文件在集群中的位置。你需要以其他方式收集这些信息; pyarrow,HDFS的当前接口没有显示这一点。