Spark簡介
Spark是基於內存計算的大數據並行計算框架,可用於構建大型的、低延遲的數據分析應用程序。git
主要特色
- 運行速度快:DAG(Directed Acyclic Graph,有向無環圖)執行引擎
- 容易使用:多語言編程支持;提供簡潔的API;Spark shell實時交互式編程反饋
- 通用性:技術棧完整,包括SQL查詢、流式計算、機器學習和圖算法組件
- 運行模式多樣:可運行在Hadoop、獨立的集羣模式、雲環境中,並可訪問HDFS、Cassandra、HBase、Hive等多種數據源
對比Hadoop
Hadoop的MapReduce計算模型延遲太高,磁盤IO開銷大,沒法勝任實時快速計算的需求,於是只適用於離線批處理的應用場景。
相比於MapReduce,Spark主要具備以下優勢:github
- Spark的計算模式也屬於MapReduce,但不侷限於Map和Reduce操做,還提供了多種數據集操做類型,編程模型比MapReduce更靈活;
- Spark提供了內存計算,中間結果直接放到內存中,帶來了更高的迭代運算效率,減小了IO開銷;
- Spark基於DAG的任務調度執行機制,要優於MapReduce的迭代執行機制。
但Spark並不能徹底替代Hadoop,主要用於替代Hadoop中的MapReduce計算模型。
Hadoop可使用廉價的、異構的機器來作分佈式存儲與計算,而Spark對內存與CPU有必定的要求。
Spark能夠藉助於YARN實現資源調度管理,藉助於HDFS實現分佈式存儲。算法
Spark生態系統
在實際應用中,大數據處理主要包括如下三個類型:shell
- 複雜的批量數據處理:時間跨度一般在數十分鐘到數小時之間;--- Hadoop MapReduce
- 基於歷史數據的交互式查詢:時間跨度一般在數十秒到數分鐘之間;--- Impala、Hive
- 基於實時數據流的數據處理:時間跨度一般在數百毫秒到數秒之間。--- 流計算框架Storm
Spark知足不一樣應用場景:apache
- Spark能夠部署在資源管理器YARN之上,同時支持批處理、交互式查詢和流數據處理。
- Spark生態系統兼容Hadoop生態系統,現有Hadoop應用程序能夠容易地遷移到Spark系統中。
Spark生態系統主要組件