【问题标题】:How to set hadoop replication in java client by class org.apache.hadoop.conf.Configuration?java - 如何通过类org.apache.hadoop.conf.Configuration在java客户端中设置hadoop复制?
【发布时间】:2013-01-27 12:43:04
【问题描述】:
我使用java Api作为客户端上传文件,但它总是将dfs.replication设置为3,结果当我使用命令(hadoop dfsadmin -report)检查情况时,所有块都在复制因子下,因为我只有两个数据节点要测试。
我只想知道如何通过org.apache.hadoop.conf.Configuration 类或其他方式在java 客户端中设置hadoop dfs.replication?感谢您的帮助!
【问题讨论】:
标签:
java
api
file-upload
replication
【解决方案1】:
如果文件已经通过 3 块复制复制到 HDFS,您可以使用 setReplication API 以及您的文件 src 和预期复制计数来设置特定于您的文件的复制,如下所示:
FileSystem fs = FileSystem.get(new Configuration());
fs.setReplication(new Path("hdfs_path:/foldername/filename"), (short)2);
setReplication API 描述为here:
public boolean setReplication(Path src, short replication)
此外,如果要复制具有 2 个块复制因子的文件,您可以直接在命令中传递复制计数,如下所示:
hadoop fs -D dfs.replication=2 YOUR_COMMANDS