Spark基礎 ① 快--基於記憶體的運算 ② 易用--支持java,python和Scala的API,shell互動式運用,還支持超過80種高級演算法 ③ 通用--spark提供了統一的解決方案,spark用於批處理,互動式查詢spark sql, 實時流處理spark streaming,機器學習s ...
Spark基礎
- Spark是一種快速.通用.可擴展的大數據分析引擎,是基於記憶體計算的大數據並行計算框架,提高在大數據環境下數據處理的實時性,同時保證了高容錯性和高可伸縮性.
- 為什麼要學習spark--中間結果輸出
- Spark特點
① 快--基於記憶體的運算
② 易用--支持java,python和Scala的API,shell互動式運用,還支持超過80種高級演算法
③ 通用--spark提供了統一的解決方案,spark用於批處理,互動式查詢spark sql, 實時流處理spark streaming,機器學習spark MLlib和圖計算Graphx
④ 相容性--方便與其他產品融合--不需要數據遷移就可以使用spark的強大處理功能,Spark也可以不依賴於第三方的資源管理和調度器,它實現了Standalone作為其內置的資源管理和調度框架.Spark還提供了在EC2上部署Standalone的Spark集群的工具。
- Spark HA高可用部署
(1) Spark Standalone集群是Master-Slaves架構的集群,存在master單點故障問題
① 基於文件系統的單點回覆---開發測試環境
② 基於zookeeper的standby Masters---生產模式
- Spark角色介紹
(1) Master-Slaves模型,master是集群中含有master繼承的節點,slave是集群中含有worker進程的節點
① Application:基於spark的應用程式,包含了driver程式和集群上的executor
② Driver Program:運行main函數並且創建SparkContext的程式
③ Cluter Manager:指的是在集群上獲取資源的外部服務--有三種類型
1) Standalon:spark源生的資源管理,由master負責資源的分配
2) Apache Mesos:與MR相容性良好的一種資源調度框架
3) Hadoop Yarn:主要是指Yarn中的ResourceManager
④ Worker Node:集群中任何可以運行Application代碼的節點,在Standalone模式中指的是通過slave文件配置的Worker節點,在Spark on Yarn模式下就是NoteManager節點
⑤ Executor:是在一個worker node上為某應用啟動的一個進程,該進程負責運行任務,並且負責將數據存在記憶體或 者磁碟上。每個應用都有各自獨立的executor。
⑥ Task :被送到某個executor上的工作單元。
- Scala代碼
(1) sc.textFile("file:///root///words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
sc:Spark-Shell中已經預設將SparkContext類初始化為對象sc。用戶代碼如果需要用到,則直接應用sc即可。
textFile:讀取數據文件
flatMap:對文件中的每一行數據進行壓平切分,這裡按照空格分隔。
map:對出現的每一個單詞記為1(word,1)
reduceByKey:對相同的單詞出現的次數進行累加
collect:觸發任務執行,收集結果數據。