(轉)park1.0.0生態圈一覽

 

轉自博客: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爲核心引擎,以HDFSS3techyon爲持久層讀寫原生數據MesosYARN和自身攜帶的 Standalone做爲資源管理器調度job,來完成spark應用程序的計算;而這些spark應用程序能夠來源於不一樣的組件,如Spark的批處理應用、SparkStreaming的實時處理應用、Spark SQL的即席查詢、BlinkDB的權衡查詢、MLlibMLbase的機器學習、GraphX的圖處理、來自SparkR的數學計算等等。更多的新信息請參看伯克利APMLab實驗室的項目進展 https://amplab.cs.berkeley.edu/projects/  或者 Spark峯會信息 http://spark-summit.org/ 網絡

 

1:生態圈簡介多線程

ASpark 閉包

      Spark是一個快速的通用大規模數據處理系統,和Hadoop MapRedeuce相比:架構

  • 更好的容錯性和內存計算
  • 高速,在內存中運算100倍速度於MapReduce
  • 易用,相同的應用程序代碼量要比MapReduce2-5
  • 提供了豐富的API
  • 支持互動和迭代程序

    Spark大數據平臺之因此能日漸紅火,得益於Spark內核架構的優秀:併發

  • 提供了支持DAG圖的分佈式並行計算框架,減小屢次計算之間中間結果IO開銷
  • 提供Cache機制來支持屢次迭代計算或者數據共享,減小IO開銷
  • RDD之間維護了血統關係,一旦RDD fail掉了,能經過父RDD自動重建,保證了容錯性
  • 移動計算而非移動數據,RDD Partition能夠就近讀取分佈式文件系統中的數據塊到各個節點內存中進行計算
  • 使用多線程池模型來減小task啓動開稍
  • shuffle過程當中避免沒必要要的sort操做
  • 採用容錯的、高可伸縮性的akka做爲通信框架

BSparkStreaming 框架

      SparkStreaming是一個對實時數據流進行高通量、容錯處理的流式處理系統,能夠對多種數據源(如KdfkaFlumeTwitter ZeroTCP 套接字)進行相似mapreducejoinwindow等複雜操做,並將結果保存到外部文件系統、數據庫或應用到實時儀表盤。

      SparkStreaming流式處理系統特色有:

  • 將流式計算分解成一系列短小的批處理做業
  • 將失敗或者執行較慢的任務在其它節點上並行執行
  • 較強的容錯能力(基於RDD繼承關係Lineage)
  • 使用和RDD同樣的語義

CSpark SQL

      Spark SQL是一個即席查詢系統,其前身是shark,不過代碼幾乎都重寫了,但利用了shark的最好部份內容。Spark SQL能夠經過SQL表達式、HiveQL或者Scala DSLSpark上執行查詢。目前Spark SQL仍是一個alpha版本。

      Spark SQL的特色:

  • 引入了新的RDD類型SchemaRDD,能夠象傳統數據庫定義表同樣來定義SchemaRDDSchemaRDD由定義了列數據類型的行對象構成。
  • SchemaRDD能夠從RDD轉換過來,也能夠從Parquet文件讀入,也可使用HiveQLHive中獲取。
  • 在應用程序中能夠混合使用不一樣來源的數據,如能夠未來自HiveQL的數據和來自SQL的數據進行join操做。
  • 內嵌catalyst優化器對用戶查詢語句進行自動優化

   

DBlinkDB

      BlinkDB是一個頗有意思的交互式查詢系統,就像一個蹺蹺板,用戶須要在查詢精度和查詢時間上作一權衡;若是用戶想更快地獲取查詢結果,那麼將犧牲查詢結果的精度;一樣的,用戶若是想獲取更高精度的查詢結果,就須要犧牲查詢響應時間。用戶能夠在查詢的時候定義一個失誤邊界。

      BlinkDB的設計核心思想:

  • 經過採樣,創建並維護一組多維度樣本
  • 查詢進來時,選擇合適的樣原本運行查詢

EMLbase/MLlib

      MLlibSpark實現一些常見的機器學習算法和實用程序,包括分類,迴歸,聚類,協同過濾,降維,以及底層優化。

      MLbase經過邊界定義,力圖將MLbase打形成一個機器學習平臺,讓機器學習的門檻更低,讓一些可能並不瞭解機器學習的用戶也能方便地使用MLbase這個工具來處理本身的數據,MLbase定義了四個邊界:

  • ML Optimizer 優化器會選擇最適合的、已經實現好了的機器學習算法和相關參數
  • MLI 是一個進行特徵抽取和高級ML編程抽象的算法實現的API或平臺
  • MLlib 基於Spark的底層分佈式機器學習庫,能夠不斷的擴充算法
  • MLRuntime 基於Spark計算框架,將Spark的分佈式計算應用到機器學習領域。

   

FGraphX

      GraphX是基於Spark的圖處理和圖並行計算APIGraphX定義了一個新的概念:彈性分佈式屬性圖,一個每一個頂點和邊都帶有屬性的定向多重圖;並引入了三種核心RDDVerticesEdgesTriplets;還開放了一組基本操做(如subgraph, joinVertices, and mapReduceTriplets),而且在不斷的擴展圖形算法和圖形構建工具來簡化圖分析工做。

   

GSparkR

      SparkRAMPLab發佈的一個R開發包,使得R擺脫單機運行的命運,能夠做爲Sparkjob運行在集羣上,極大得擴展了R的數據處理能力。

      Spark的幾個特性:

  • 提供了Spark中彈性分佈式數據集(RDD)的API,用戶能夠在集羣上經過R shell交互性的運行Spark job
  • 支持序化閉包功能,能夠將用戶定義函數中所引用到的變量自動序化發送到集羣中其餘的機器上。
  • SparkR還能夠很容易地調用R開發包,只須要在集羣上執行操做前用includePackage讀取R開發包就能夠了,固然集羣上要安裝R開發包。

   

2:生態圈的應用

      Spark生態圈以Spark爲核心、以RDD爲基礎,打造了一個基於內存計算的大數據平臺,爲人們提供了all-in-one的數據處理方案。人們能夠根據不一樣的場景使用spark生態圈的多個產品來解決應用,而不是使用多個隔離的系統來知足場景需求。下面是幾個典型的例子:

A:場景1:歷史數據和實時數據分析查詢

經過spark進行歷史數據分析、spark Streaming進行實時數據分析,最後經過spark SQLBlinkDB給用戶交互查詢。

   

B:場景2:欺詐檢測、異常行爲的發現

經過spark進行歷史數據分析,用MLlib創建數據模型,對Spark Streaming實時數據進行評估,檢測並發現異常數據。

   

C:場景3:社交網絡洞察

經過SparkGraphX計算社交關係,給出建議

相關文章
相關標籤/搜索