1. 程式人生 > 其它 >Spark學習(一)Spark初識

Spark學習(一)Spark初識

一、Spark 是什麼

Spark官網地址:https://spark.apache.org

Spark是一種基於記憶體的快速、通用、可擴充套件的大資料分析計算引擎。用來構建大型的、低延遲的資料分析應用程式。它擴充套件了廣泛使用的 MapReduce 計算模型。高效的支撐更多計算模式,包括互動式查詢和流處理。spark 的一個主要特點是能夠在記憶體中進行計算,及時依賴磁碟進行復雜的運算,Spark依然比MapReduce更加高效。

二、Spark 和 Hadoop 功能對比

Hadoop

  1. Hadoop 是由 java 語音編寫,在分散式伺服器叢集上儲存海量資料並執行分散式分析應用的開源框架;
  2. 作為 Hadoop 分散式檔案系統,HDFS 處於 Hadoop 生態圈的最下層,儲存所有的資料,支援著 Hadoop 的所有服務,它的理論基礎源於 Google 的 TheGoogleFileSystem 這篇論文,它是 GFS 的開源實現;
  3. MapReduce 是一種程式設計模型,Hadoop 根據 Google 的 MapReduce 論文將其實現,作為 Hadoop 的分散式計算模型,是 Hadoop 的核心,基於這個框架,分散式並行程式和編寫變得異常簡單,綜合了 HDFS 的分散式 儲存和 Map Reduce 的分散式計算,Hadoop 在處理海量資料時,效能橫向擴充套件變得非常容易;
  4. HBase 是對 Google 的 Big table的開源實現,但有和 Big table 存在許多不同之處,HBase 是一個基於 HDFS 的分散式資料庫,擅長實時的隨機讀寫超大規模資料集,他也是 Hadoop 非常重要的元件;

Spark

  1. Spark 是一種有 Scala 語音開發的快速、通用、可擴充套件的大資料分析引擎;
  2. Spark Core 中提供了 Spark 最基礎與最核心的功能;
  3. Spark SQL 是 Spark 用來操作結構化資料的元件,通過 Spark SQL,使用者可以使用 SQL 或者 Apache Hive 版本的 SQL 方言(HQL)來查詢資料;
  4. Spark Streaming 是 Spark 平臺針對實時資料進行流式計算的元件,提供了豐富的處理資料流的 API;
  5. Spark 同時還具有機器學習和圖計算等演算法程式庫

總結 Spark 和 Hadoop 的根本差異是多個作業之間的資料通訊問題:Spark 多個作業之間資料通訊是基於記憶體,Hadoop 是基於磁碟

三、Spark 特點

1、易於理解

Spark支援Java、Python和Scala的API,還支援超過80種高階演算法,使使用者可以根據自身情況快速構建不同的應用。而且Spark支援互動式的Python和Scala的shell,可以非常方便地在這些shell中使用Spark叢集來驗證解決問題的方法。

2、高效性

Spark 相比 Hadoop 的 MR 執行速度提高100倍。Apache Spark使用很先進的DAG(有向無環圖)排程程式,查詢優化程式和物理執行引擎,實現批量和流式資料的高效能。

3、可伸縮

Spark可以非常方便地與其他的開源產品進行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作為它的資源管理和排程器,器,並且可以處理所有Hadoop支援的資料,包括HDFS、HBase和Cassandra等。這對於已經部署Hadoop叢集的使用者特別重要,因為不需要做任何資料遷移就可以使用Spark的強大處理能力。Spark也可以不依賴於第三方的資源管理和排程器,它實現了Standalone作為其內建的資源管理和排程框架,這樣進一步降低了Spark的使用門檻,使得所有人都可以非常容易地部署和使用Spark。此外,Spark還提供了在EC2上部署Standalone的Spark叢集的工具。

4、通用性

Spark提供了統一的解決方案。Spark可以用於批處理、互動式查詢(Spark SQL)、實時流處理(Spark Streaming)、機器學習(Spark MLlib)和圖計算(GraphX)。這些不同型別的處理都可以在同一個應用中無縫使用。Spark統一的解決方案非常具有吸引力,畢竟任何公司都想用統一的平臺去處理遇到的問題,減少開發和維護的人力成本和部署平臺的物力成本。

四、Spark 組成

  1. Spark Core :提供了Spark 最基礎與最核心的功能,包括任務排程、記憶體管理、錯誤恢復、與儲存系統互動、RDD(resilient Distributed dataset) 彈性分散式資料定義等模組,RDD 表示分散式在多個節點上可以並行操作的元素集合,是 Spark 主要的程式設計抽象,Spark 提供了操作和建立這些集合的多個 API;Spark 其它的功能如:Spark SQL、Spark Streaming、GrapX\MLib 都是在 Spark Core 的基礎上進行擴充套件的;
  2. Spark SQL:是 Spark 用來操作結構化資料的元件,通過 Spark SQL使用者可以使用 SQL 或者 HQL 來查詢資料;
  3. Spark Streaming:是 Spark 提供的一對實時資料進行流式計算的元件;流失資料:生產環境伺服器的日誌或網路伺服器使用者使用者狀態變更組成的訊息佇列,
  4. MLib 機器學習的程式庫,提供了包括:分類,迴歸,據類,協同過濾等,還提供了模型評估,資料匯入等額外的支撐功能;;
  5. Spark GraphX 是 Spark 面向圖形計算提供的框架和演算法庫;

Spark 應用場景:批處理,迭代演算法,互動式查詢,流處理

關於 Spark 儲存的說明:Spark 可以讀取 HDFS 上的資料,也可以讀取支援 Hadoop 介面系統的資料 ,hive HBase 等;但是 Hadoop 並非 Spark 的必要條件,