什么是Spark
-
大數據計算框架
-
離線批處理
-
大數據體系架構圖(Spark)
-
Spark包含了大數據領域常見的各種計算框架:比如Spark Core用於離線計算,Spark SQL用於交互式查詢,Spark Streaming用於實時流式計算,Spark MLib用於機器學習,Spark GraphX用於圖計算
-
Spark主要用於大數據的計算,而Hadoop以后主要用於大數據的存儲(比如HDFS、Hive、HBase)等,,以及資源調度(Yarn)
-
Spark+hadoop的組合是大數據領域最熱門的組合,也是最有前景的組合
-
Spark與MapReduce計算過程,Spark基於內存進行計算,所以速度更快
-
Spark整體架構圖
Spark的特點
- 速度快:基於內存進行計算(當然也有部分計算基於磁盤,比如shuffle)
- 容易上手開發:Spark的基於RDD的計算模型,比Hadoop的基於Map-Reduce的計算模型要更加易於理解,更加易於上手開發,實現各種復雜功能,比如二次排序,topn等復雜操作時,更加便捷
- 超強的通用性:Spark提供了多種計算組件
- 集成Hadoop:Spark與Hadoop進行了高度的繼承,完成double win
- 極高的活躍度
Hive架構
- Spark SQL實際上不能完全替代Hive,以為Hive是一種基於HDFS的數據倉庫,並且提供了基於SQL模型的,針對存儲了大數據的數據倉庫,進行分布式交互查詢的查詢引擎
- 嚴格來講,Spark SQL能夠替代的,是Hive的查詢引擎,而不是Hive本身,Spark本身是不提供存儲的,自然不能替代Hive作為數據倉庫的這個功能
- Hive的查詢引擎,基於MapReduce,必須經過shuffle過程走磁盤,因此速度是非常緩慢的。Spark基於內存,因此速度達到Hive查詢引擎的數倍以上
- Spark SQL相較Hive的另一個特點,就是支持大量不同的數據源,包括Hive、json、parquet、jdbc等等。此外,Spark SQL由於身處Spark技術堆棧內,也是基於RDD來工作,因此可以與Spark其他組件無縫整合使用。比如Spark SQL支持可以直接針對hdfs文件執行sql語句