如何通过类org.apache.hadoop.conf.Configuration在java客户端中设置hadoop dfs.replication或以其他方式?
我使用java Api作为客户端上传文件,但它总是将dfs.replication设置为3,因此当我使用命令(hadoop dfsadmin -report)检查情况时,所有块都在复制因子下,因为我只有两个数据节点要测试。
我只是想知道如何通过类org.apache.hadoop.conf.Configuration在java客户端中设置hadoop dfs.replication或以其他方式? 谢谢你的帮助!
答案 0 :(得分:0)
我相信复制不是由客户端连接配置设置,而是由集群配置(???)设置。不确定是否有办法配置特定于文件的复制,这是我认为您要问的问题
顺便说一下,有多少百分比的块未被复制?你能提供dfs admin -report命令的输出吗?那会很有帮助
答案 1 :(得分:0)
您可以在终端输入此命令,以单独设置文件的复制因子。
hadoop fs -D dfs.replication = 3 -copyFromLocal file.txt / user / myFolder
至于hadoop本身将要处理的复制不足,你会发现复制不足的块数不断变化。
对于使用复制因子编写文件的JAVA API,请参阅以下代码:
public class Write{
public static void main(String[] args) throws IOException {
Path pt = new Path("hdfspath:/user/abc");
FileSystem fs = FileSystem.get(new Configuration());
BufferedWriter br = new BufferedWriter(new OutputStreamWriter(
fs.create(pt, true)));
// TO append data to a file, use fs.append(Path f)
fs.setReplication(new Path("hdfspath:/user/abc"), (short)3);
String line;
line = "This is Written to the File";
System.out.println(line);
br.write(line);
br.close();
}
}
请检查语法,因为我刚刚输入了代码。