Hadoop作业配置

时间:2016-05-03 15:10:36

标签: hadoop mapreduce

有人可以解释一下在hadoop的情况下配置的用途是什么?

并且还解释了以下代码:

// Create a new JobConf
JobConf job = new JobConf(new Configuration(), MyJob.class);

// Specify various job-specific parameters     
job.setJobName("myjob");

FileInputFormat.setInputPaths(job, new Path("in"));
FileOutputFormat.setOutputPath(job, new Path("out"));

job.setMapperClass(MyJob.MyMapper.class);
job.setCombinerClass(MyJob.MyReducer.class);
job.setReducerClass(MyJob.MyReducer.class);

job.setInputFormat(SequenceFileInputFormat.class);
job.setOutputFormat(SequenceFileOutputFormat.class);

1 个答案:

答案 0 :(得分:2)

  

在hadoop的情况下使用配置是什么?

如果我理解您的要求正确,那么您可以配置作业以了解运行MapReduce作业时要执行的操作。

您必须指定输入&输出数据类型和位置以及作为映射器和缩减器的类。

例如,在这里,您将获取某些"in"目录的内容并写入"out"目录。通常,这些是通过new Path(args[0])new Path(args[1])从命令行获得的。

 FileInputFormat.setInputPaths(job, new Path("in"));
 FileOutputFormat.setOutputPath(job, new Path("out"));

在这里设置MapReduceJob的相应类

 job.setMapperClass(MyJob.MyMapper.class);
 job.setCombinerClass(MyJob.MyReducer.class);
 job.setReducerClass(MyJob.MyReducer.class);

在此处指定输入和输出格式。它们必须分别对应mapper和reducer的输入和输出。

 job.setInputFormat(SequenceFileInputFormat.class);
 job.setOutputFormat(SequenceFileOutputFormat.class);

还可以使用人类可读的名称设置作业,以便在ResourceManager中对其进行跟踪。

job.setJobName("myjob");