Spark
Spark是一種快速、通用、可擴展的大資料分析引擎,2009年誕生于加州大學伯克利分校AMPLab,2010年開源,2013年6月成為Apache范訓專案,2014年2月成為Apache的頂級專案,2014年5月發布spark1.0,2016年7月發布spark2.0,2020年6月18日發布spark3.0.0
特點
Hadoop的MapReduce作為第一代分布式大資料計算引擎,在設計之初,受當時計算機硬體條件所限(記憶體、磁盤、cpu等),為了能夠計算海量資料,需要將中間結果保存到HDFS中,那么就要頻繁讀寫HDFS從而使得網路IO和磁盤IO成為性能瓶頸,Spark可以將中間結果寫到本地磁盤或將中間cache到記憶體中,節省了大量的網路IO和磁盤IO開銷,并且Spark使用更先進的DAG任務調度思想,可以將多個計算邏輯構建成一個有向無環圖,并且還會將DAG先進行優化后再生成物理執行計劃,同時 Spark也支持資料快取在記憶體中的計算,性能比Hadoop MapReduce快100倍,即便是不將資料cache到記憶體中,其速度也是MapReduce10 倍以上,
? Ease of Use:簡潔易用
Spark支持 Java、Scala、Python和R等編程語言撰寫應用程式,大大降低了使用者的門檻,自帶了80多個高等級操作算子,并且允許在Scala,Python,R 的使用命令進行互動式運行,可以非常方便的在Spark Shell中地撰寫spark程式,
? Generality:通用、全堆疊式資料處理
Spark提供了統一的大資料處理解決方案,非常具有吸引力,畢竟任何公司都想用統一的平臺去處理遇到的問題,減少開發和維護的人力成本和部署平臺的物力成本, 同時Spark還支持SQL,大大降低了大資料開發者的使用門檻,同時提供了SparkStream和Structed Streaming可以處理實時流資料;MLlib機器學習庫,提供機器學習相關的統計、分類、回歸等領域的多種演算法實作,其高度封裝的API 介面大大降低了用戶的學習成本;Spark GraghX提供分布式圖計算處理能力;PySpark支持Python撰寫Spark程式;SparkR支持R語言撰寫Spark程式,
? Runs Everywhere:可以運行在各種資源調度框架和讀寫多種資料源
Spark支持的多種部署方案:Standalone是Spark自帶的資源調度模式;Spark可以運行在Hadoop的YARN上面;Spark 可以運行在Mesos上(Mesos是一個類似于YARN的資源調度框架);Spark還可以Kubernetes實作容器化的資源調度
豐富的資料源支持,Spark除了可以訪問作業系統自身的本地檔案系統和HDFS之外,還可以訪問 Cassandra、HBase、Hive、Alluxio(Tachyon)以及任何 Hadoop兼容的資料源,這極大地方便了已經 的大資料系統進行順利遷移到Spark,
Spark與MapReduce的對比

面試題:MapReduce和Spark的本質區別:
- MR只能做離線計算,如果實作復雜計算邏輯,一個MR搞不定,就需要將多個MR按照先后順序連成一串,一個MR計算完成后會將計算結果寫入到HDFS中,下一個MR將上一個MR的輸出作為輸入,這樣就要頻繁讀寫HDFS,網路IO和磁盤IO會成為性能瓶頸,從而導致效率低下,
- spark既可以做離線計算,又可以做實時計算,提供了抽象的資料集(RDD、Dataset、DataFrame、DStream)
有高度封裝的API,算子豐富,并且使用了更先進的DAG有向無環圖調度思想,可以對執行計劃優化后在執行,并且可以資料可以cache到記憶體中進行復用,shuffle時,資料可以不排序
注意:MR和Spark在Shuffle時資料都落本地磁盤
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/555977.html
標籤:其他
上一篇:SeaTunnel 發布成為 Apache 頂級專案后首個版本 2.3.2,進一步提高 Zeta 引擎穩定性和易用性
下一篇:返回列表
