1、抽象层次低,需要手工编写代码来完成,使用上难以上手;
2、只提供两个操作,Map和Reduce,表达力欠缺;
3、一个Job只有Map和Reduce两个阶段(Phase),复杂的计算需要大量的Job完成,Job之间的依赖关系是由开发者自己管理的;
4、处理逻辑隐藏在代码细节中,没有整体逻辑;
5、中间结果也放在HDFS文件系统中;
6、ReduceTask需要等待所有MapTask都完成后才可以开始;
7、时延高,只适用Batch数据处理,对于交互式数据处理,实时数据处理的支持不够;
8、对于迭代式数据处理性能比较差。
摘抄自:知乎评论