如何通过类org.apache.hadoop.conf.Configuration在java客户端中设置hadoop复制?

时间:2013-02-12 08:48:06

标签: java api file-upload replication

我使用java Api作为客户端上传文件,但它始终将dfs.replication设置为3,因此当我使用命令(hadoop dfsadmin -report)检查情况时,所有块都处于复制状态因素,因为我只有两个数据节点要测试。

我只是想知道如何通过类org.apache.hadoop.conf.Configuration或其他方式在java客户端中设置hadoop dfs.replication?谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

IF文件已经通过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

答案 1 :(得分:0)

根据Java API for the Hadoop FileSystem class,您可以在创建输出流以将文件写入群集时指定文件的复制因子。例如。

create(Path f, short replication) 

我目前无法在本地测试,因为我只在这里运行Zookeeper节点。