Spark 從零到開發(一)初識

Apache Spark](https://spark.apache.org/)是一個圍繞速度、易用性和複雜分析構建的大數據處理框架。最初在2009年由加州大學伯克利分校的AMPLab開發,並於2010年成爲Apache的開源項目之一。

Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生態系統,以彌補MapReduce的不足。

1. 特性

參考:http://spark.apache.org/

  1. Spark可以將Hadoop集羣中的應用在內存中的運行速度提升100倍,甚至能夠將應用在磁盤上的運行速度提升10倍。
  1. Spark讓開發者可以快速的用Java、Scala或Python編寫程序。它本身自帶了一個超過80個高階操作符集合。而且還可以用它在shell中以交互式地查詢數據。
  1. 除了Map和Reduce操作之外,它還支持SQL查詢,流數據,機器學習和圖表數據處理。開發者可以在一個數據管道用例中單獨使用某一能力或者將這些能力結合在一起使用。
  1. 到處運行,可以跑在Hadoop、k8s或者單機、雲服務,可以接受各種不同的數據。

2. 內置庫

2.1 Spark SQL

Spark SQL是Apache Spark用於處理結構化數據的模塊。

特性
  1. 將SQL查詢與Spark程序無縫混合。
results = spark.sql(
  "SELECT * FROM people")
names = results.map(lambda p: p.name)
  1. 以相同方式連接到任何數據源。
spark.read.json("s3n://...")
  .registerTempTable("json")
results = spark.sql(
  """SELECT * 
     FROM people
     JOIN json ...""")
  1. 在現有倉庫上運行SQL或HiveQL查詢。
  2. 通過JDBC或ODBC連接。
  3. Spark SQL包括基於成本的優化器,列式存儲和代碼生成,以快速進行查詢。同時,它使用Spark引擎擴展到數千個節點和多小時查詢,該引擎提供完整的中間查詢容錯。不要擔心使用不同的引擎來獲取歷史數據。

2.2 Spark Streaming

Spark Streaming可以輕鬆構建可擴展的容錯流應用程序。

特性
  1. 使用方便。通過API構建應用程序。
  2. 容錯(開箱即用)。可以恢復之前的工作和操作狀態。
  3. 將流式傳輸與批量和交互式查詢相結合。

Spark Streaming可以從HDFSFlumeKafkaTwitterZeroMQ讀取數據 。在生產中,Spark Streaming使用ZooKeeperHDFS實現高可用性。

2.3 Spark MLlib

MLlib是Apache Spark的可擴展機器學習庫。

特性
  1. 使用方便。可用於Java,Scala,Python和R.
  2. 高質量算法,比MapReduce快100倍。
  3. 隨處運行,在Hadoop,Apache Mesos,Kubernetes,獨立或雲端,可以針對不同的數據源。

MLlib包含許多算法和實用程序。

ML算法包括:

分類:邏輯迴歸,樸素貝葉斯,......

迴歸:廣義線性迴歸,生存迴歸,......

決策樹,隨機森林和梯度提升樹

建議:交替最小二乘法(ALS)

聚類:K均值,高斯混合(GMM),......

主題建模:潛在Dirichlet分配(LDA)

頻繁項目集,關聯規則和順序模式挖掘

ML工作流程工具包括:

特徵轉換:標準化,規範化,散列,......

ML管道施工

模型評估和超參數調整

ML持久性:保存和加載模型和管道

其他工具包括

分佈式線性代數:SVD,PCA,......

統計:彙總統計,假設檢驗,......

2.4 Spark GraphX

GraphX是Apache Spark用於圖形和圖形並行計算的API。

特性
  1. 靈活性:無縫地使用圖形和集合。有效地使用RDD 轉換連接圖形,以及使用Pregel API編寫自定義迭代圖算法。

  2. 速度:與最快的專業圖形處理系統相比具有可比性。

  3. 圖形算法。
    除了高度靈活的API之外,GraphX還提供了各種圖形算法,其中許多都是用戶提供。知名的算法有:
    網頁排名
    連接組件
    標籤傳播
    SVD ++
    強大的連接組件
    三角計數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章