【问题标题】:HDFS replication property not reflecting as defined in hfs-site.xmlHDFS 复制属性未反映 hfs-site.xml 中定义的内容
【发布时间】:2017-05-03 15:50:08
【问题描述】:

我正在使用 HDFS 并在 hfs-site.xml 中将复制因子设置为 1,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>

  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/Users/***/Documnent/hDir/hdfs/namenode</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/Users/***/Documnent/hDir/hdfs/datanode</value >
  </property>

  <property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>

</configuration>

但是当我尝试将文件从本地系统复制到 hdfs 文件系统时,我发现该文件的复制因子为 3。这是在 hdfs 上复制文件的代码:

    public class FileCopyWithWrite {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String localSrc = "/Users/***/Documents/hContent/input/docs/1400-8.txt";
        String dst = "hdfs://localhost/books/1400-8.txt";
        try{

            InputStream in = new BufferedInputStream(new FileInputStream(localSrc));
            Configuration conf = new Configuration();;
            FileSystem fs = FileSystem.get(URI.create(dst), conf);

            OutputStream out = fs.create(new Path(dst), new Progressable() {

                public void progress() {
                    // TODO Auto-generated method stub
                    System.out.println(".");
                }
            });

            IOUtils.copyBytes(in, out, 4092, true);


        }catch(Exception e){
            e.printStackTrace();
        }
    }

}

请找到显示复制因子为 3 的屏幕截图:

请注意,我以伪分布式模式开始,并且根据 Hadoop The Definite Guide book 中的文档更新了 hdfs-site.xml。关于为什么会发生这种情况的任何建议?

【问题讨论】:

  • 请问您是如何确认该文件的复制因子为 3 的?另外,您是在更新复制因子后重新启动服务还是从一开始复制因子为 1?
  • 复制因子是从一开始就为 1 还是在启动服务后更新?
  • 我添加了属性dfs.replication,值为1,从一开始就一样
  • 我找不到任何理由让 hdfs 恢复到其默认复制因子。它必须是一些放错位置的配置。您能否通过命令行运行hdfs dfs -ls 来确认此文件的复制。第二列表示复制

标签: java hadoop hdfs replication


【解决方案1】:

删除namenode目录和datanode目录为我解决了这个问题。 所以我遵循了以下程序:

  1. 停止服务,即 dfs、yarn 和 mr。

  2. 删除 hfs-site.xml 文件中指定的 namenode 和 datanote 目录。

  3. 重新创建namenode和datanode目录。

  4. 重启服务,即dfs、yarn和mr。

【讨论】:

    【解决方案2】:

    如果上述属性在运行状态下发生变化,则需要集群重启,因为修改后的属性只有在重新加载后才会体现出来,相当于重启集群。

    【讨论】:

      猜你喜欢
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      相关资源
      最近更新 更多