使用优化的局部性处理HDFS数据

nkoocmlb  于 5个月前  发布在  HDFS
关注(0)|答案(1)|浏览(63)

我想知道,如何确保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:似乎没有关于位置的争议
cnjp1d6j

cnjp1d6j1#

你是对的,dask不知道每个文件在集群中的位置。你需要以其他方式收集这些信息; pyarrow,HDFS的当前接口没有显示这一点。

相关问题