发布时间 : 星期三 文章期末试卷资料更新完毕开始阅读
} public static class Reduce extends Reducer { private IntWritable result = new IntWritable(); public void reduce(Text key、Iterable values、Context context )throws IOException, InterruptedException { int sum = 0; for (IntWritableval : values) sum += val.get(); result.set(sum); context.write(key,result); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = new Job(conf); job.setJarByClass(WordCount.class); job.setMapperClass(Map.class); job.setCombinerClass(Reduce.class); job.setReducerClass(Reduce.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(\ FileOutputFormat.setOutputPath(job, new Path(\ System.exit(job.waitForCompletion(true) ? 0 : 1); } }
public class sort { context.write(data,newIntWritable(1)); } } public static class Mapextends Mapper
job.setJarByClass(sort.class); job.setMapperClass(Map.class); job.setCombinerClass(Reduce.class); job.setReducerClass(Reduce.class); job.setOutputKeyClass(IntWritable.class); job.setOutputValueClass(Text.class); FileInputFormat.addInputPath(job, new Path(\ FileOutputFormat.setOutputPath(job, new Path(\ System.exit(job.waitForCompletion(true) ? 0 : 1); } 3.描述数据量的单位,从小到大的顺序是:(C) A. MB(1)MapReduce应用将一个列表作为参数传递给MapReduce处理模块;
(2)MapReduce处理模块将整个列表拆分为单独的数据对,分发给对应的mapper进行处理。
(3)mapper根据函数定义的处理过程,对进行处理,生成列表。
(4)所有的mapper的处理结果结合成一个大的列表,并将键相同的数据对合并,生成新的键值对,分发给reducer进行处理,其中[v2]是同一个键k2下的所有值的数组。
(5)reducer根据函数定义的处理过程,对进行处理,将最后的结果以列表的形式输出。
5.(简答)数据写入过程(P106-107)
(1)Client向NameNode发出创建文件请求
(2)NameNode在确认此文件没有重名文件,且Client有写入权限后,在命名空间创建此文件的对应记录,并将成功创建的信息返回给Client。
(3)Client将数据拆分后放入一个数据队列,并向NameNode请求分配一些用于存放数据的数据块信息及DataNode地址。
(4)接着,每个数据块会写入由NameNode分配的多个DataNode节点,Client向第一个DataNode写入数据块,第一个DataNode会将数据块复制给第二个DataNode,第二个复制给第三个,直到所有分配的DataNode。每个DataNode完成一个数据块的写入后,会向Client报告已完成,同时向NameNode报告已完成。
(5)所有数据块都写入完成后,Client结束本次文件操作。