MapReduce是基於進程的計算,任務調度和啟動開銷大。此外Map中間結果要落地到磁盤,網絡I/O和磁盤I/O十分頻繁,延遲高,處理效率低,無法充分利用內存;
Map端和Reduce端均需要排序,耗費時間;不適合叠代計算,交互式處理(數據挖掘)和流式處理(點擊日誌分析),無法滿足實時性較高的業務。編程不夠靈活,因其是用Java編寫的,編寫壹個完整的MapReduce任務代碼的數據行數要遠遠大於Spark實現相同的功能。