我有一个群集配置。
我将〜9GB文件movies.txt
复制到hdfs中:
hadoop dfs -copyFromLocal movies.txt /input/
我观察到有一半的块被保存到Master,另一半被分配到两个奴隶上。
然后我想过使用以下方法格式化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>
任何解释我做错了什么?
答案 0 :(得分:3)
你没有做错任何事。将文件写入HDFS时,第一个副本始终位于本地节点上。当复制因子为1时,所有块仅存储在本地节点上。当本地节点上的空间用完时,我想,HDFS会尝试在其他节点上存储块。这似乎是在格式化HDFS之前第一次复制文件时发生的。