什么是MapReduce
根据伟哥前面讲的,存储文件可以用HDFS,那么分布式计算用什么?毫无疑问,就是MapReduce
MapReduce 是hadoop的计算引擎,将任务分解到多个服务器进行处理,并将结果整合到一起,它本身是一个高性能的并行或分布式的数据处理模型。
通俗一点说,通过编写程序,它可以同时使用多个分布式处理器,对大量的非结构化数据进行处理。
实现原理
MapReduce使用 Map(映射)和 Reduce(归纳)。
Map
将一个任务分给各个系统进行处理,使得负载均衡并且在出错时进行恢复。Reduce
将所有的元素进行整合,形成最后的结果。
这两个组合的好处是不会破坏原始数据,但却可以输出新的数据结构
MapReduce的特点
- 调度算法
- 同步,因为在多个处理器同步进行,所以必须有同步机制
- 代码和数据协同定位
- 错误处理机制
如何工作
要高效的使用大数据,就要先选出相关的数据,然后再对该部分数据分析计算。
MapReduce由一个JobTracker和三个TaskTracker组成
客户端应用向JobTracker提供作业,Jobtracker再把作业分配给不同的TaskTracker,然后TaskTracker对数据进行处理,处理后的数据(也就是Map后的数据)会发送给Reduce任务,它将不同的map数据归纳,输出最后的结果。
MapReduce框架使用价值对(KVPs)作为输入和输出,