Map/Reduce简介
1、一种用于在大型商用硬件集群中(成千上万的节点)对海量数据(多个兆兆字节数据集)实施可靠的、高容错的并行计算的软件系统
2、一个最先由Google提出的分布式计算软件构架
3、基本原理:将一个复杂的问题,分成若干个简单的子问题进行解决。然后,对子问题的结果进行合并,得到原有问题的解
Map/Reduce概念
1、”Map”和”Reduce”是编程语言中的概念,都是处理数据集合的函数
2、Map在处理数据序列的过程中只处理当前的数据信息,不需要跟之前处理的状态信息交互
3、主结点读入输入数据,把它分成可以用相同方法解决的小数据块,然后把这些小数据块分发到不同的工作节点上,每一个工作节点循环做同样的事,这就形成了一个树行结构,而每一个叶子节点来处理每一个具体的小数据块,再把这些处理结果返回给父节点
4、Reduce在处理过程中却依赖之前处理的结果,同时生成的结果也被后续的处理使用。结点得到所有子节点的处理结果,然后把所有结果组合并且返回到输出
5、一个Map/Reduce任务会把一个输入数据集分割为独立的数据块,然后Map任务会以完全并行的方式处理这些数据块。Map/Reduce系统自动对Map任务的输出分类,再把这些分类结果做为Reduce任务的输入。无论是任务的输入还是输出都会被存储在文件系统中。Map/Reduce系统关注任务调度、任务监测和重新执行失败的任务
Map/Reduce模型
1、计算节点和存储节点的一致性。允许Hadoop框架有效的调度任务在那些数据已经准备好了的节点上,好处是整个集群中总带宽非常的高
2、特点是可以用Map和Reduce方法来处理分布式计算问题时,尽可能的实现数据处理的本地化,降低由数据移动而产生的代价。每一个Map操作都是相对独立的,所有的Maps都是并行运行的,虽然实践中会受到数据源和CPU个数的影响。同样的,用一个Reduce集合来执行Reduce操作,所有带有相同key的Map输出会聚集到同一个Reduce。能够处理一般服务器所不能处理的大数据量处理问题
3、Map/Reduce系统由单一的JobTracker主节点和若干个TaskTracker从节点组成,其中每一个集群节点对应一个TaskTracker节点。主节点负责调度任务的各个组成任务到从节点上,监控并且重新执行失败的组成任务;从节点执行主节点安排的组成任务
4、Map/Reduce的Map和Reduce过程都定义了键值对(
(input)
Map/Reduce处理过程
一次Map/Reduce任务过程。用户提交任务给JobTracer,JobTracer把对应的用户程序中的Map操作和Reduce操作映射至TaskTracer节点中;输入模块负责把输入数据分成小数据块,然后把它们传给Map节点;Map节点得到每一个key/value对,处理后产生一个或多个key/value对,然后写入文件;Reduce节点获取临时文件中的数据,对带有相同key的数据进行迭代计算,然后把终结果写入文件。
Map/Reduce优缺点
1、Map/Reduce通过工作状态的返回有效处理了单点失效的问题
2、Map/Reduce是隶属于大粒度的并行计算模式,并行节点间在Map阶段中和Reduce阶段中无法通信,也并非是一种万能的数据处理模型