MapReduce是基於進程的計算,任務調度和啟動成本很高。此外,Map的中間結果將降落在磁盤上,並且網絡I/O和磁盤I/O非常頻繁,延遲高且處理效率低,無法充分利用內存。
Map端和Reduce端都需要排序,比較耗時;不適合叠代計算、交互式處理(數據挖掘)和流式處理(點擊日誌分析),不能滿足高實時性的業務。編程不夠靈活,因為它是用Java編寫的,編寫壹個完整的MapReduce任務代碼的數據線數量要比Spark實現相同功能的數據線數量多得多。