spark 比hadoop快的原因:資料本地性、排程優化、傳輸優化,最主要的是基於記憶體計算和引入了dag。hadoop的計算結果在磁碟中,spark是在記憶體中;資料計算任務需要多個步驟時,hadoop需要引入oozie等工具,但是spark有dag
hadoop中,每乙個job 的計算結果都會儲存在hdfs中,所以每一步計算都要進行硬碟的io,大大增加了系統的延遲。
對rdd的操作可以像函式式程式設計中操作記憶體中的集合一樣直觀,簡便
mapreduce會將中間資料存放於硬碟中,而spark會把中間資料快取在記憶體中,從而減少了很多io導致的延遲,而且spark把迭代過程中每一步的計算結果都快取在記憶體中,所以非常適合各類迭代演算法
在任務(task)級別,spark的並行機制是多執行緒模型,而mapreduce是多程序模型
spark 隨時可以把計算好的rdd快取在記憶體中,以便下次計算時使用,大幅度減少了硬碟讀寫的開銷,而且快取rdd的時候,它所有的依賴關係也會被一並存下來,所以持久化的rdd有自動的容錯機制,如果rdd的任一分割槽丟失了,通過使用原先建立它的轉換操作,它將會被自動重算
同時惰性求值的設計可以讓spark的運算更加高效和快速。比如在行動操作first()的時候開始真正的運算,只掃瞄第乙個匹配的,不需要讀取整個檔案。
參考:
Spark相比MapReduce的優勢
mapreduce是apache hadoop中用於大規模資料集計算的平行計算框架,目前被廣泛應用於企業的離線資料處理上。但是因為種種原因,mapreduce的效能並不理想。而spark作為資料處理框架界的後起之秀,很多方面都超過了mapreduce。下面來列出mapreduce的不足以及spark...
spark相比hadoop的 優勢如下
1 中間結果輸出 基於mr的計算引擎通常會將中間結果輸出到磁碟上,進行儲存和容錯。處於任務管道承接的考慮,當一些查詢翻譯到mr任務時,旺旺會產生多個stage,而這些串聯的stage又依賴於底層檔案系統 如hdfs 來儲存每乙個stage的輸出結果。spark將執行模型抽象為通用的有向無環圖,dag...
Python基礎 高階函式 Map Reduce
map 函式接受2個引數 1.引數 函式 2.引數 iterable 示例 usr bin env python3 coding utf 8 map 函式的使用 轉換為字串 deffuntion x return str x deftest mlist 1,2,3,4,5 list 1,2,3,4,...