做者:studytime
原文: https://www.studytime.xin/
官網地址:http://spark.apache.org/算法
spark 是高性能 DAG 計算引擎,一個實現快速通用的集羣計算平臺。它是由加州大學伯克利分校AMP 實驗室開發的通用內存並行計算框架,用來構建大型的、低延遲的數據分析應用程序。它擴展了普遍使用的 MapReduce 計算模型。高效的支撐更多計算模式,包括交互式查詢和流處理。spark 的一個主要特色是可以在內存中進行計算,及時依賴磁盤進行復雜的運算。Spark 依然比 MapReduce 更加高效。sql
發展歷程:shell
Spark 是在 MapReduce 的基礎上產生的,借鑑了大量 MapReduce 實踐經驗,引入多種新型涉及思想和優化策略。針對MapReduce計算框架存在的侷限性進行分析,能更好的瞭解到 Spark。apache
MapReduce 的侷限性以下:編程
一、處理效率低效網絡
二、 不適合迭代計算(如機器學習、圖計算等),交互式處理(數據挖掘) 和流式處理(點擊日誌分析)
三、 MapReduce 編程不夠靈活架構
四、計算框架多樣化、無形中產生運維和管理成本框架
Spark 是基與 MapReduce 基礎產生了,克服了其存在的性能低下,變成不夠靈活的缺點。運維
Spark 做爲一種 DAG 計算框架,主要特色以下:
一、高效性,性能高效,主要體現以下:機器學習
二、易用性。
Spark 支持 Java、Python 和 Scala 的 API,還支持超過 80 種高級算法,使用戶能夠快速構建不一樣的應用。並且 Spark 支持交互式的 Python 和 Scala 的 shell,能夠很是方便地在這些 shell 中使用 Spark 集羣來驗證解決問題的方法。
三、通用性。
Spark 提供了統一的解決方案。Spark 能夠用於批處理、交互式查詢(Spark SQL)、實時流處理(Spark Streaming)、機器學習(Spark MLlib)和圖計算(GraphX)。這些不一樣類型的處理均可以在同一個應用中無縫使用。Spark統一的解決方案很是具備吸引力,畢竟任何公司都想用統一的平臺去處理遇到的問題,減小開發和維護的人力成本和部署平臺的物力成本。
四、兼容性。
Spark 能夠很是方便地與其餘的開源產品進行融合。好比,Spark可使用Hadoop的YARN和Apache Mesos做爲它的資源管理和調度器,器,而且能夠處理全部Hadoop支持的數據,包括HDFS、HBase和Cassandra 等。這對於已經部署 Hadoop 集羣的用戶特別重要,由於不須要作任何數據遷移就可使用Spark的強大處理能力。
總之,Spark以上有別於MapReduce的特色,使得它在數據分析、數據挖掘和機器學習等方面獲得普遍的應用,Spark已取代MapReduce成爲應用最爲普遍的數據計算引擎,同時基於MapReduce實現的機器學習庫Mahout也已經遷移到Spark或Flink.
Spark組成(BDAS):全稱伯克利數據分析棧,經過大規模集成算法、機器、人之間展示大數據應用的一個平臺。也是處理大數據、雲計算、通訊的技術解決方案。
它的主要組件有:
一、Yahoo 將 Spark 用在 Audience Expansion 中的應用,進行點擊預測和即席查詢等
二、淘寶技術團隊使用了 Spark 來解決屢次迭代的機器學習算法、高計算複雜度的算法等。應用於內容推薦、社區發現等
三、騰訊大數據精準推薦藉助 Spark 快速迭代的優點,實現了在「數據實時採集、算法實時訓練、系統實時預測」的全流程實時並行高維算法,最終成功應用於廣點通pCTR投放系統上。
四、優酷土豆將 Spark 應用於視頻推薦(圖計算)、廣告業務,主要實現機器學習、圖計算等迭代計算。
一、Spark 在任何狀況下均比 MapReduce 高效嗎?
回答: 答案是否認的,在某些數據量很是大的狀況下,MapReduce要比Spark快。例如: WordCount計算的數據量到1PB級別時,就會出現。緣由爲:目前Spark處理shufflw實現相對較差,但以後可能會改觀。
二、Spark 號稱「內存計算框架」,它將全部數據寫到內存嗎?
回答: 答案是不必定的,存在多種級別類型,能夠自行選擇。相對建議選擇內存,可是內存不夠最終仍是會寫入磁盤中。
三、 當前存在不少 DAG 引擎,包括 Spark Flink ,爲什麼你們都在討論 Spark ?
回答: 從設計架構上來看,Spark機構不必定是最優的,甚至某些方面還不如Flink和Tez.但我以爲相面兩個方面能夠說明部分問題,社區支持,推廣宣傳較好,活躍度高,故而關注度也更高。同時spark具備通用性,也是一大緣由。