Spark:算法
1、歷史網絡
一、誕生於2009年,加州大學伯克利分校RAD實驗室的一個研究項目,最初是基於Hadoop MapReduce的,發現MapReduce在迭代式計算和交互式上低效,引入內存存儲機器學習
二、2010年3月份Spark開源分佈式
三、2011年在AMP實驗室開發出高級組件,像Spark Streaming工具
四、2013年成爲Apache頂級項目oop
2、特色學習
一、快速的(Spark擴充了流行的MapReduce計算模型,Spark是基於內存的計算)測試
二、通用的(Spark的設計容納了其餘分佈式系統擁有的功能(下降維護成本),批處理(hadoop)、迭代式計算(機器學習)、交互查詢(hive)和流處理(storm))大數據
三、高度開放(Spark提供了Python、Java、Scala、SQL的API和豐富的內置庫,和其餘的大數據工具整合的很好,包括hadoop、kafka等)優化
3、緊密集成的優勢
Spark是緊密集成的,優化了Spark底層,基於Spark底層的組件,也獲得了相應的優化
緊密集成,節省了各個組件的使用時的部署、測試時間
向Spark增長新的組件時,其餘組件,可當即享用新組件的功能
4、組件
一、Spark Core
包含Spark基本功能,包含任務調度、內存管理、容錯機制等
內部定義了RDDs(彈性分佈式數據集)
提供了不少APIs來建立和操做RDDs
應用場景,爲其餘組件提供底層的服務
二、Spark SQL
是處理結構化數據的庫,像Hive Sql、MySQL同樣
應用場景,企業中用來作報表統計
三、Spark Streaming
是實時數據流處理組件,相似Storm
Spark Streaming提供API來操做實時流數據
應用場景,企業中用來從kafka接收數據作實時統計
四、Mlib
一個包含通用機器學習功能的包,Machine learning lib
包含分類、聚類、迴歸等,還包括模型評估,和數據導入
MLib提供的上面的這些方法,都支持集羣上的橫向擴展(以前機器學習大多用Python,缺點就是單機的,不能作集羣)
應用場景,機器學習
五、Graphx
是處理圖的庫(例如,社交網絡圖),並進行圖的並行運算
像Spark Streaming,Spark SQL同樣,它也繼承了RDD API
它提供了各類圖的操做,和經常使用的圖算法,例如PangRank算法
應用場景,圖計算
六、Cluster Managers
就是集羣管理,Spark自帶一個集羣管理的單獨調度器
常見的集羣管理包括Hadoop YARN、Apache Mesos