Spark是什麼

官方直達電梯

Spark一種基於內存通用實時大數據計算框架(做爲MapReduce的另外一個更優秀的可選的方案)sql

  • 通用:Spark Core 用於離線計算,Spark SQL 用於交互式查詢,Spark Streaming 用於實時流式計算,Spark Mlib 用於機器學習,Spark GraphX 用於圖計算
  • 實時:Run programs up to 100x faster than Hadoop MapReduce in memory, or 10x faster on disk.

1、Spark和Storm的區別

Storm的計算模型(實時)

  • Storm是針對每條數據的流式實時計算框架,因爲每條數據過來就直接處理,每條數據都會帶來大量的資源消耗(傳輸,通訊,校驗等)吞吐量不高
  • storm能夠動態調整並行度
  • Storm保證了更高的實時性,毫秒級延遲

Storm的計算模型

Spark Stream計算模型(準實時)

  • 經過設置時間間隔 batch interval 一個時間間隔內的數據做爲一個Batch收集起來給Spark Streaming Application處理(少了不少傳輸,校對開銷),保證了高吞吐量
  • 秒級延遲
  • 結合Spark生態圈能夠發揮很大的威力

Spark Stream計算模型

2、Spark Streaming和MapReduce的對比

Shuffle以及MapReduce的計算模型決定了MapReduce只適合對速度要求不敏感的離線批處理任務apache

  • Spark的多進程任務可能在同一個物理機器的內存上完成(Spark shuffle也會使用磁盤)
  • MapReduce死板的模型必須基於磁盤和大量的網絡傳輸
  • MapReduce的程度編寫複雜,Spark更容易上手,支持(Scale JAVA[8支持函數式編程] Python)
  • Spark 在缺乏調優時,會出現OOM(Out Of Memory)的問題,致使程序沒法執行,而MapReduce就算是慢也能執行

MapReduce流程

3、Spark SQL對比Hive

  • Spark SQL實際上不能徹底替代Hive,只是替代了Hive中的查詢引擎,針對Hive數據倉庫中的表進行SQL查詢
  • 因爲Hive查詢底層基於MapReduce決定了Hive的查詢慢
  • Hive中的一部分高級特性在Spark SQL 中未獲得支持
  • Spark SQL除了Hive還支持其餘數據源(json parquet jdbc等),同時支持直接針對HDFS執行SQL查詢

Hive架構

相關文章
相關標籤/搜索