為什么spark比mapreduce處理數據快


落地方式不同

mapreduce任務每一次處理完成之后所產生的結果數據只能夠保存在磁盤,后續有其他的job需要依賴於前面job的輸出結果,這里就只能夠進行大量的io操作獲取得到,性能就比較低。

spark任務每一次處理的完成之后所產生的結果數據可以保存在內存中,后續有其他的job需要依賴於前面job的輸出結果,這里就可以直接從內存中獲取得到,大大減少磁盤io操作,性能非常高。

處理方式不同

mapreduce的任務是以進程的方式運行在yarn集群中,比如有100個MapTask要運行,這里就需要開啟100個進程。

spark的任務是以線程的方式運行在worker節點的executor進程中,比如有100個MapTask要運行,這里需要開啟100線程就可以了,這里還可以這樣極端一點:可以只開啟一個進程,在這個進程中運行100個線程就ok了。開啟一個進程與一個線程的代價(資源調度和時間)是不一樣。開啟一個進程是遠遠大於線程所需要的時間。

shuffle操作不同

消除了冗余的MapReduce階段Hadoop的shuffle操作一定連着完整的MapReduce操作,冗余繁瑣。而Spark基於RDD提供了豐富的算子操作,且reduce操作產生shuffle數據,可以緩存在內存中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM