ApacheSpark
Apache Spark是一个開源叢集運算框架,頭先是由加州大學柏克萊分校 AMPLab 所開發。相對的是 Hadoop 的 MapReduce 會佇執行完工作了後共中介資料囥佇磁碟中,Spark 使用矣記持體內算技術,會當佇資料猶未寫入硬碟的時陣佇記憶體內分析運算是。Spark 佇記持體內執行程式的運算速度會當做甲比 Hadoop MapReduce 的運算速度欲上一百倍,就算是執行程式於硬碟時,Spark 嘛會當強欲十倍的速度。Spark 允准使用者將資料載入到密集記憶體,閣濟改對其進行查詢,誠適合用佇機器學習演算法。
使用 Spark 需要配合樹集管理員佮分散式儲存系統。Spark 支援獨立模式(在地 Spark 密集)、 Hadoop YARN 抑是 Apache Mesos 的樹集管理。佇分散式儲存方面,Spark 會當和 Alluxio、HDFS、Cassandra、OpenStack Swift 和 Amazon S 三等介面配搭。Spark 嘛支援偽分散式(pseudo-distributed)本地的模式,毋過通常只用佇開發或者是測試的時以本機檔案系統取代分散式儲存系統。佇按呢的情況下,Spark 干焦佇一台機器頂懸使用逐个 CPU 核心執行程式。
佇二空一四年有超過四百六十五个貢獻者投入 Spark 開發,予伊成做 Apache 軟體基金會佮巨量的資料濟濟開源專案當中上上成活跳的專案。
歷史
Spark 佇二空空九年由 Matei Zaharia 佇加州大學柏克萊分校 AMPLab 開創,二空一空年透過 BSD 授權條款開源釋出。二空一三年,該專案被捐贈予 Apache 軟體基金會並切換授權條款至 Apache 二孵空。。 二空一四年二月,Spark 成做 Apache 的頂級的專案。二空一四年十一月,Databricks 團隊使用 Spark 重新整理資料排序世界記錄。
專案構成愛素
Spark 專案包括下列幾項 :
Spark 核心佮彈性分散式資料集(RDDs)
Spark 核心是規个專案的基礎,提供了分散式的任務調度,排程佮基本的 I/O 功能。毋過其基礎的程式抽象會叫做彈性分散式資料集(RDDs), 是一个會當並列操作、有容毋著機制的資料集合。RDDs 會當透過參照外部儲存系統的資料集建立(比如講:共享檔案系統、HDFS、HBase 抑是按怎 Hadoop 資料格式的資料來源)。 抑是通過其實這馬有 RDDs 的轉換所來建立(比如講:map、filter、reduce、join 等咧)。
RDD 抽象化是經由一个以 Scala、Java、Python 整合著無 API 所呈現,簡化了編程複雜性,應用程式操縱 RDDs 的方法類似操縱本地端的資料集合。
以 RDD 為中心的函數式編程的一个典型範例是以下 Scala 程式,伊計算一組文字檔案中出現的所有單詞的頻率並列印上捷看的單詞。彼每一个 map、flatMap(map 的變體)和 reduceByKey 攏採用掩名函式對單個數據項(抑是一對項)執行簡單操作,並應用參數將 RDD 轉換做新的 RDD。
Spark SQL
Spark SQL 佇咧 Spark 核心帶出一種名做 SchemaRDD 的資料抽象化概念,提供結構化佮半結構化資料相關的支援。Spark SQL 提供著領域特定的語言,會用得 Scala、Java 抑是 Python 來操縱 SchemaRDDs。伊閣支援使用使用命令列介面和 ODBC/JDBC 侍服器操作 SQL 語言。佇咧 Spark 一孵三版本,SchemaRDD 予人重號名做 DataFrame。
Spark Streaming
Spark Streaming 充分利用 Spark 核心的快速排程能力來執行串流分析。伊揣小批次的資料並著之執行 RDD 轉換。這種設計使串流分析會當佇仝一个 ia̋n-jín 內使用仝一組做兩批的分析編寫來編寫的應用程式碼。
MLlib
MLlib 是 Spark 上分散式機器學習框殼。Spark 散式記持體式的架構比 Hadoop 磁碟式的 Apache Mahout 欲上十倍,擴充性甚至比 Vowpal Wabbit 愛好。MLlib 會當使用真濟捷看的機器學習佮統計演算法,簡化大規模機器學習時間,其中包括講:
- 匯總統計、相關性、分層抽樣、假使檢定、隨機數據生成
- 分類佮回歸:支持向量機、回歸、線性回歸、邏輯回歸、決策樹、樸素貝葉斯
- 協同過濾:ALS
- 分群:k-平均演算法
- 維度約減:奇異值分解(SVD), 主成分析(PCA)
- 特徵提佮轉換:TF-IDF、Word 二 Vec、StandardScaler
- 最佳化:隨機梯降法(SGD)、 L-BFGS
GraphX
GraphX 是 Spark 上的分散式圖形處理框殼。伊提供一組 API,會當用過表達圖表計算並會當類比 Pregel 抽象化。GraphX 閣對這種抽象化提供優化運行。
GraphX 頭先為加州大學柏克萊分校 AMPLab 和 Databricks 的研究專案,尾仔寄付予 Spark 專案。
特色
- Java、Scala、Python 和 R APIs。
- 會當擴展至超過八千个結點。
- 會當佇記持體內快取資料集以進行互動式的資料分析。
- Scala 抑是 Python 中的互動式命令列介面會當降低橫向擴展資料探索的反應時間。
- Spark Streaming 著即時的資料串流的處理具有可能擴充性、懸吞吐量、可容毋著性等特點。
- Spark SQL 支援結構化佮關聯式查詢處理(SQL)。
- MLlib 機器學習演算法佮 Graphx 圖形處理演算法的高階函式庫。
參考資料
外部連結
- 官方網站(英文)
- Spark SQL
- Spark Streaming
- MLlib 機器學習
- GraphX 圖形處理
