优点
1,开发简单:用户不用考虑进程间的通信和套接字编程
2,可扩展性强:当集群资源不能满足计算需求时,可以增加节点的方式达到线性扩展集群的目的。
3,容错性强:对于节点故障导致失败的作业,MapReduce计算框架会自动将作业安排到健康的节点进行,直到任务完成。
缺点
1,执行速度慢:普通的MapReduce作业几分钟完成,数据量大的可能几个小时甚至一天的时间。
2,MapReduce过于低层化:一个简单的查询,需要写Map和reduce函数,复杂且耗费时间,建议使用hive数据库进行处理。
3,不是所有的算法都用MapReduce实现:例如机器学习的模型训练,有赖于状态共享和参数间的依赖,需要维护和更新。