概述
定义
mapreduce是一个分布式的运算程序的编程框架,是用户开发基于hadoop的数据分析应用的核心的框架。其核心功能为将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群之上。
优点
1)容易编程。简单地实现了一些接口就可以完成一个分布式的程序,这个分布式程序可以分布到大量廉价的pc机器上面运行,也就是说写一个分布式程序跟写一个简单的串行程序是一样的,这使得mapreduce编程非常流行。
2)拓展性好。当计算资源得不到满足时候,简单地增加机器即可拓展计算能力。
3)高容错性。挂一台机器可以把计算任务丢给另一台去运行,不至于失败
4)适合pb级别以上海量数据离线处理,可以实现上千台服务器集群并发工作,提供数据处理能力。
缺点
1)不擅长实时计算,无法像mysql一样在毫秒内或者秒内返回结果
2)不擅长流式就算
流式计算的输入数据是动态的,而mapreduce的输入数据集是静态的,不能动态变化,这是它自己的设计特点决定的
3)不擅长图计算
多个应用程序有依赖关系,后一个应用程序的输入是前一个的输出,在这种情况下mr的作业输出结果都会到磁盘,大量的io导致性能低下。