HDFS 行为:Datanodes up 但所有数据都转到一个节点(使用 -copyFromLocal)

HDFS behavior: Datanodes up but all data goes to one node (using -copyFromLocal)

我有集群配置。

  1. 主人(也是奴隶)
  2. 两个奴隶
  3. 复制因子 = 1

我将一个 ~9GB 的文件 movies.txt 复制到 hdfs 中:

hadoop dfs -copyFromLocal movies.txt /input/

我观察到一半的blocks保存到Master,另一半分布在两个slave上。

然后 我想格式化 hadoop_stores 使用:

stop-all.sh
rm -rf {hadoop_store}/*
hdfs namenode -format

ssh slave1
rm -rf {hadoop_store}/*
hdfs namenode -format
exit

ssh slave2
rm -rf {hadoop_store}/*
hdfs namenode -format

start-all.sh

现在,当我尝试

hadoop dfs -copyFromLocal movies.txt /input/

令人震惊的是,我得到了 master 上的所有积木!

作为参考,我的 hdfs_site.xml 是:

<configuration>
 <property>
  <name>dfs.replication</name>
  <value>1</value>
 </property>
 <property>
   <name>dfs.namenode.name.dir</name>
   <value>file:///usr/local/hadoop/hadoop_store/hdfs/namenode</value>
 </property>
 <property>
   <name>dfs.datanode.data.dir</name>
   <value>file:///usr/local/hadoop/hadoop_store/hdfs/datanode</value> 
 </property>
</configuration>

任何解释我做错了什么?

你没有做错任何事。将文件写入 HDFS 时,第一个副本始终位于本地节点上。当复制因子为 1 时,所有块仅存储在本地节点上。当本地节点上的 space 出 运行 时,我想,HDFS 会尝试在其他节点上存储块。似乎是在格式化 HDFS 之前第一次复制文件时发生的。