mapreduce原理
MapReduce 原理 MapReduce 的定义和架构 MapReduce 是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的式并行处理上 T 级别的数据集。 MapReduce 的工作流程 1. 输入数据集被切分为若干独立的数据块,由 map 任务以完全并行的方式处理它们。 2. 框架会对 map 的输出先进行排序,然后把结果输入给 reduce 任务。 3. reduce 任务执行具体的业务逻辑,并将处理结果输出给 OutputFormat。 4. OutputFormat 验证输出目录是否已经存在和输出结果类型是否复合 Config 中配置类型,如果都成立,则输出 Reduce 汇总后的结果。 MapReduce 的组成 1. Master JobTracker:负责调度构成一个作业的所有任务,这些任务分布在不同的 slave 上,master 监控它们的执行,重新执行已经失败的任务。 2. Slave TaskTracker:负责执行由 master 指派的任务。 3. Job Client:提交作业(jar 包可执行程序等)和配置信息给 JobTracker。 MapReduce 的输入和输出 MapReduce 框架运转在 <key,value> 键值对上,也就是说,框架把作业的输入看为是一组 <key,value> 键值对,同样也产出一组 <key,value> 键值对做为作业的输出,这两组键值对的类型可能不同。 MapReduce 的应用 MapReduce 框架可以应用于大数据处理、机器学习、自然语言处理等领域。 Hadoop 中的 MapReduce Hadoop 中的 MapReduce 是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的式并行处理上 T 级别的数据集。 Hadoop 中的 MapReduce 工作流程 1. JobTracker 负责分布式环境中实现客户端创建任务并提交。 2. InputFormat 模块负责做 Map 前的预处理,主要包括验证输入的格式是否符合 JobConfig 的输入定义、将 input 的文件切分为逻辑上的输入 InputSplit。 3. 将 RecordReader 处理后的结果作为 Map 的输入,然后 Map 执行定义的 Map 逻辑,输出处理后的 (key,value) 对到临时中间文件。 4. Combiner 是可选择的,它的主要作用是在每一个 Map 执行完分析以后,在本地优先作 Reduce 的工作,减少在 Reduce 过程中的数据传输量。 5. Partitioner 也是选择配置,主要作用是在多个 Reduce 的情况下,指定 Map 的结果由某一个 Reduce 处理,每一个 Reduce 都会有单独的输出文件。 6. Reduce 执行具体的业务逻辑,即用户编写的处理数据得到结果的业务,并且将处理结果输出给 OutputFormat。 7. OutputFormat 的作用是,验证输出目录是否已经存在和输出结果类型是否复合 Config 中配置类型,如果都成立,则输出 Reduce 汇总后的结果。