Hadoop 작업이 있고 출력 폴더의 복제 번호를 1로 설정하고 자바 코드 내부에서이 작업을 수행하려고합니다. 서버의 기본값은 3입니다. 다른 가져 오기 기능은 출력이 작성되기 전에 복제 번호를 설정하는 것입니다. 내가 3 개의 복제본으로 전체 출력을 작성한 다음 1로만 줄이고 싶다는 의미입니다. 출력 폴더에 쓰기를 시작하기 전에 복제가 하나만 있도록 설정해야합니다. 그 이유는 출력이 상당히 클 수 있으며 여유 공간을 확보하기 위해서입니다.실행 전에 Java 코드에서 Hadoop 출력 폴더 복제 설정
@Override
public int run(String[] args) throws Exception {
/** Get configuration */
Configuration conf = getConf();
conf.setStrings("args", args);
/** Job configuration */
Job job = Job.getInstance(conf, "HadoopSearch");
job.setJarByClass(Search.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(NullWritable.class);
/** Set Mapper and Reducer, use identity reducer*/
job.setMapperClass(Map.class);
job.setReducerClass(Reducer.class); // identity
/** Set input and output formats */
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
/** Set input and output path */
FileInputFormat.addInputPath(job, new Path("IN PATH"));
FileOutputFormat.setOutputPath(job, new Path("OUT PATH"));
job.waitForCompletion(true);
return 0;
}
은 내가 파일 당이 사용 FileSystem.setReplication(Path p, short s)
그러나 이것은 단지 작품을 설정할 수 있다는 사실을 알고 난이 전체 폴더를 설정합니다. 폴더 안의 파일을 반복 할 수는 있지만 더 중요한 것은 작업이 완료되고 파일이 이미 exsists 된 후에 만 작동하는 것 같습니다. 내가 가정했듯이 복제 프로세스가 이미 실행 중이므로 피해야하는 디스크 공간의 문제를 해결할 수 있습니다.