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

时间:2015-07-28 06:56:58

标签: hadoop formatting hdfs

我有一个群集配置。

  1. 主人(也是奴隶)
  2. 两个奴隶
  3. 复制因子= 1
  4. 我将〜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>
    

    任何解释我做错了什么?

1 个答案:

答案 0 :(得分:3)

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