轉自博客:http://www.tuicool.com/articles/FVBJBjN算法
Spark1.0.0生態圈一覽shell
Spark生態圈,也就是BDAS(伯克利數據分析棧),是伯克利APMLab實驗室精心打造的,力圖在算法(Algorithms)、機器(Machines)、人(People)之間經過大規模集成,來展示大數據應用的一個平臺,其核心引擎就是Spark,其計算基礎是彈性分佈式數據集,也就是RDD。經過Spark生態圈,AMPLab運用大數據、雲計算、通訊等各類資源,以及各類靈活的技術方案,對海量不透明的數據進行甄別並轉化爲有用的信息,以供人們更好的理解世界。Spark生態圈已經涉及到機器學習、數據挖掘、數據庫、信息檢索、天然語言處理和語音識別等多個領域。數據庫
隨着spark的日趨完善,spark以其優異的性能正逐漸成爲下一個業界和學術界的開源大數據處理平臺。隨着spark1.0.0的發佈和spark生態圈的不斷擴大,能夠預見在從此的一段時間內,Spark將愈來愈火熱。下面咱們來看看最近的Spark1.0.0生態圈,也就是BDAS(伯克利數據分析棧),對Spark生態圈作一簡單的介紹。編程
以下圖所示,Spark生態圈以Spark爲核心引擎,以HDFS、S3、techyon爲持久層讀寫原生數據,以Mesos、YARN和自身攜帶的 Standalone做爲資源管理器調度job,來完成spark應用程序的計算;而這些spark應用程序能夠來源於不一樣的組件,如Spark的批處理應用、SparkStreaming的實時處理應用、Spark SQL的即席查詢、BlinkDB的權衡查詢、MLlib或MLbase的機器學習、GraphX的圖處理、來自SparkR的數學計算等等。更多的新信息請參看伯克利APMLab實驗室的項目進展 https://amplab.cs.berkeley.edu/projects/ 或者 Spark峯會信息 http://spark-summit.org/ 。網絡
1:生態圈簡介多線程
A:Spark 閉包
Spark是一個快速的通用大規模數據處理系統,和Hadoop MapRedeuce相比:架構
Spark大數據平臺之因此能日漸紅火,得益於Spark內核架構的優秀:併發
B:SparkStreaming 框架
SparkStreaming是一個對實時數據流進行高通量、容錯處理的流式處理系統,能夠對多種數據源(如Kdfka、Flume、Twitter、 Zero和TCP 套接字)進行相似map、reduce、join、window等複雜操做,並將結果保存到外部文件系統、數據庫或應用到實時儀表盤。
SparkStreaming流式處理系統特色有:
C:Spark SQL
Spark SQL是一個即席查詢系統,其前身是shark,不過代碼幾乎都重寫了,但利用了shark的最好部份內容。Spark SQL能夠經過SQL表達式、HiveQL或者Scala DSL在Spark上執行查詢。目前Spark SQL仍是一個alpha版本。
Spark SQL的特色:
D:BlinkDB
BlinkDB是一個頗有意思的交互式查詢系統,就像一個蹺蹺板,用戶須要在查詢精度和查詢時間上作一權衡;若是用戶想更快地獲取查詢結果,那麼將犧牲查詢結果的精度;一樣的,用戶若是想獲取更高精度的查詢結果,就須要犧牲查詢響應時間。用戶能夠在查詢的時候定義一個失誤邊界。
BlinkDB的設計核心思想:
E:MLbase/MLlib
MLlib是Spark實現一些常見的機器學習算法和實用程序,包括分類,迴歸,聚類,協同過濾,降維,以及底層優化。
MLbase經過邊界定義,力圖將MLbase打形成一個機器學習平臺,讓機器學習的門檻更低,讓一些可能並不瞭解機器學習的用戶也能方便地使用MLbase這個工具來處理本身的數據,MLbase定義了四個邊界:
F:GraphX
GraphX是基於Spark的圖處理和圖並行計算API。GraphX定義了一個新的概念:彈性分佈式屬性圖,一個每一個頂點和邊都帶有屬性的定向多重圖;並引入了三種核心RDD:Vertices、Edges、Triplets;還開放了一組基本操做(如subgraph, joinVertices, and mapReduceTriplets),而且在不斷的擴展圖形算法和圖形構建工具來簡化圖分析工做。
G:SparkR
SparkR是AMPLab發佈的一個R開發包,使得R擺脫單機運行的命運,能夠做爲Spark的job運行在集羣上,極大得擴展了R的數據處理能力。
Spark的幾個特性:
2:生態圈的應用
Spark生態圈以Spark爲核心、以RDD爲基礎,打造了一個基於內存計算的大數據平臺,爲人們提供了all-in-one的數據處理方案。人們能夠根據不一樣的場景使用spark生態圈的多個產品來解決應用,而不是使用多個隔離的系統來知足場景需求。下面是幾個典型的例子:
A:場景1:歷史數據和實時數據分析查詢
經過spark進行歷史數據分析、spark Streaming進行實時數據分析,最後經過spark SQL或BlinkDB給用戶交互查詢。
B:場景2:欺詐檢測、異常行爲的發現
經過spark進行歷史數據分析,用MLlib創建數據模型,對Spark Streaming實時數據進行評估,檢測並發現異常數據。
C:場景3:社交網絡洞察
經過Spark和GraphX計算社交關係,給出建議