文档详情

MapReduce精讲.pdf

发布:2017-06-24约9.51千字共45页下载文档
文本预览下载声明
大数据课程之 大数据课程之MapReduce(1) MapReduce(1) ——培训讲师:吴超 课程安排 MapReduce原理*** MapReduce执行过程*** 数据类型与格式*** Writable接口与序列化机制*** 加深拓 MapReduce的执行过程源码分析 什么是MapReduce 你想数出一摞牌中有多少张黑桃。直观方式是一张一张检查并且数 出有多少张是黑桃。 MapReduce方法则是: 1. 给在座的所有玩家中分配这摞牌 2. 让每个玩家数自己手中的牌有几张是黑桃,然后把这个数目汇报 给你 3. 你把所有玩家告诉你的数字加起来,得到最后的结论 MapReduce概述 ◆MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量 数据的计算问题. MapReduce合并了两种经典函数: 映射(Mapping)对集合里的每个目标应用同一个操作。即,如果你想把表单里每个 单元格乘以二,那么把这个函数单独地应用在每个单元格上的操作就属于mapping。 化简(Reducing )遍历集合中的元素来返回一个综合的结果。即,输出表单里一列数 字的和这个任务属于reducing。 ◆MapReduce由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce()两 个函数,即可实现分布式计算,非常简单。 ◆这两个函数的形参是key、value对,表示函数的输入信息。 MapReduce在多于10PB数据时趋向于变慢。 Mapreduce原理 ◆执行步骤: 1. map任务处理 1.1 读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、 value对。每一个键值对调用一次map函数。 1.2 写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。 1.3 对输出的key、value进行分区。 1.4 对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合 中。 1.5 (可选)分组后的数据进行归约。 2.reduce任务处理 2.1 对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节 点。 2.2 对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入 的key、values处理,转换成新的key、value输出。 2.3 把reduce的输出保存到文件中。 例子:实现WordCountApp map 、reduce键值对格式 函数 输入键值对 输出键值对 map() k1,v1 k2,v2 reduce() k2,{v2} k3,v3 WordCountApp 的驱动代码 public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); //加载配置文件 Job job = new Job(conf); //创建一个job ,供JobTracker使用 job.setJarByClass(WordCountApp.class); job.setMapperClass(WordCountMapper.class); job.setReducerClass(WordCountReducer.class); FileInputFormat.setInputPaths(job, new Path(hdfs://0:9000/input)); FileOutputFormat.setOutputPath(job, new Path(hdfs://0:9000/output)); job.setOutputKeyClass(Text.class); job.setOutputValue
显示全部
相似文档