Hadoop HDFS 没有均匀分布数据块

Hadoop HDFS is not distributing blocks of data evenly

我目前 运行 是一个有 2 个节点的集群。 1个节点是master/slave,另一个只是从节点。我有一个文件,我将块大小设置为该文件大小的一半。然后我做

hdfs dfs -put file /

文件被复制到 HDFS 没有问题,但是当我检查 HDFS 站点时,我看到创建的两个块都在一个数据节点中(这些块在我使用 -put 命令的数据节点上)。我什至尝试调用平衡器脚本,但两个块仍在同一个数据节点上。

我需要数据在所有节点之间均匀分布(尽可能多)。

我是不是遗漏了什么?

hdfs dfs -ls 输出所示,您的复制因子设置为 1,因此 hdfs 没有令人信服的理由将数据块分布在数据节点上。

您需要将复制级别至少提高到 2 才能获得您期望的结果,例如:

hdfs dfs -setrep 2 /input/data1.txt

当我们将数据写入 hdfs 时,为了节省带宽利用率和网络往返次数,初始副本试图保存在我们执行 hadoop put 命令的同一节点上。作为您的复制 1 ,它就是这样发生的。