【发布时间】: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