一、基本概念
- Spark是一個基於內存的分佈式批處理引擎
二、基本用途
- 數據處理: 快速處理數據,兼具容錯性與擴張性
- 迭代計算: 有效應對多步數據處理邏輯
- 數據挖掘: 在海量數據基礎上進行復雜的挖掘分析,支持多種數據挖掘和機器學習算法
三、適用場景
1.數據處理、ETL
2.迭代計算、數據重複利用
- 通話記錄分析
- …
3.機器學習
- 空氣質量預測和評價
- 自動判斷買家好/差評
- 客戶流失預測
- …
4.交互式分析
- 結合hive/hbase數據倉庫查詢
- …
5.流計算
- 頁面瀏覽/點擊分析
- 推薦系統
- 輿情分析
- …
四、對比優勢
1.運算效率高
- 基於內存計算,將中間結果存放內存;
- 基於DAG的任務調度執行機制,迭代運算效率更高
2.容錯性高
- 使用彈性分佈式數據集RDD,數據集部分丟失可重建
3.通用性強
- 支持多種數據集操作類型 大致分爲Transformations和Actions兩大類,而MapReduce只提供Map和Reduce操作
五、體系架構
六、部署模式
1.local模式
單機多線程模擬spark分佈式計算
- local 只啓動一個Executor。
- local[k]: 啓動K個Executor
- local[*]: 啓動跟CPU數目相同的Executor
2.standalone模式
- 分佈式部署集羣,自帶完整的服務,資源管理和任務監控是Spark自己監控,這個模式也是其他模式的基礎
3.yarn模式
- 分佈式部署集羣,資源管理和任務監控交給yarn管理
- 粗粒度資源分配方式,包括cluster和client運行方式
cluster:適合生產,driver運行在集羣子節點,具有容錯功能
client: 適合調試,driver運行在客戶端
4.mesos模式
- 運行在mesos資源管理器框架之上,由mesos負責資源管理,spark負責任務調度和計算
5.cloud模式
- 例如AWS的EC2,使用該模式很方便訪問Amazon的S3;Spark支持多種分佈式存儲系統,包括HDFS和S3