Spark 介紹及安裝教程

1. Spark 的由來

1.1 Hadoop 的歷史

   2003,2004 Google 2 篇論文

   2011 年發佈 1.0 版本
   2012 年發佈穩定版
在這裏插入圖片描述
 MR 的缺點:

   mr 基於數據集的計算,所以面向數據。

  1. 基本運算規則:從存儲介質中獲取(採集)數據,然後進行計算,最後將結果存儲到介質中,所以主要應用於一次性計算,不適合數據挖掘和機器學習這樣迭代計算和圖形挖掘計算。
  2. MR 基於文件存儲介質的操作,所以性能非常的慢。
  3. MR 和 hadoop 緊密耦合一起,無法動態替換。

   2013 年 10月發佈 2.X 版本(Yarn)

在這裏插入圖片描述

1.2 Spark 歷史

   2013 年 6 月發佈
   Spark 基於 hadoop1.X 架構思想,採用自己的方式改善 Hadoop1.X 中的問題。
   Spark 計算基於內存(多任務) ,並且基於 Scala 語言開發,所以天生適合迭代計算。
在這裏插入圖片描述

2. Spark 介紹

2.1 Spark 的定義

  Spark 是一種基於內存的快速、通用、可擴展的大數據分析引擎。

2.2 Spark 的內置模塊

在這裏插入圖片描述

  1. Spark Core
    實現了 Spark的基本功能,包括任務調度、內存管理、錯誤恢復、與存儲系統交互等模塊。Spark Core 中還包括對彈性分佈數據集(Resilent Distributed DataSet,簡稱 RDD)的 API 定義。
  2. Spark SQL
    是 Spark 用來操作結構化數據的程序包。通過 Spark SQL,我們可以使用 SQL 或者 Apache Hive 版本的 SQL 方言(HQL)來查詢數據。Spark SQL 支持多種數據源,比如 Hive 表、Parquet 以及 JSON 等。
  3. Spark Streaming
    是 Spark 提供的對實時數據進行流式計算的組件。提供了用來操作數據流的 API,並且與 Spark Core 中的 RDD API 高度對應。
  4. Spark Mlib
    提供常見的機器學習(ML)功能的程序庫。包括分類、迴歸、聚類、協同過濾等,還提供了模型評估、數據導入等額外支持功能。
  5. 集羣管理器
    Spark 設計可以高效地在一個計算節點到數千個計算節點之間伸縮計算。爲了實現這樣的要求,同時獲得最大靈活性,Spark 支持在各種集羣管理器(Cluster Manager)上運行,包括 Hadoop YARN、Apache Mesos,以及 Spark 自帶的一個簡易調度器,叫作獨立調度器。

2.3 Spark 的特點


  1. 與 Hadoop 的 MapReduce 相比,Spark 基於內存的運算要快 100 倍以上,基於硬盤的運算也要快 10 倍以上。Spark 實現了高效的 DAG 執行引擎,可以通過基於內存來高效處理數據流。計算的中間結果是存在於內存中的。
  2. 易用
    Spark 支持 Java、Python 和 Scala 的 API,還支持超過 80 種高級算法,使用戶可以快速構建不同的應用。而且 Spark 支持交互式的 Python 和 Scala 的 Shell,可以方便地在這些 Shell 中使用 Spark 集羣來驗證解決問題的方法。
  3. 通用
    Spark 提供了統一的解決方案。Spark 可以用於批處理、交互式查詢(Spark SQL)、實時流處理(Spark Streaming)、機器學習(Spark Mlib)和圖計算(GraphX)。這些不同類型的處理都可以在同一應用中無縫使用。減少了開發和維護的人力成本和部署平臺的物力成本。
  4. 兼容性
    Spark 可以非常方便地與其他的開源產品進行融合。比如,Spark 可以使用 Hadoop YARN 和 Apache Mesos 作爲它的資源管理和調度器,並且可以處理所有 Hadoop 支持的數據,包括 HDFS、HBase 等。這對於已經部署 Hadoop 集羣的用戶特別重要,因爲不需要做任何數據遷移就可以使用 Spark 的強大處理能力。

2.4 Spark 的重要角色

2.4.1 Driver(驅動器)

   Spark 的驅動器是執行開發程序中 main 方法的進程。它負責開發人員編寫的用來創建 SparkContent、創建 RDD,以及進行 RDD 的轉化操作和行動操作代碼的執行。當啓動 Spark shell 的時候,系統後臺自啓動了一個 Spark 驅動程序,就是在 Spark shell 中預加載了一個叫作 sc 的 SparkContent 對象。如果驅動器程序終止,那麼 Spark 應用也結束了。

Driver 主要負責:

  1. 把用戶程序轉爲作業(JOB)。
  2. 跟蹤 Executor 的運行狀況。
  3. 爲執行器節點調度任務。
  4. UI 展示應用運行狀態。

2.4.2 Executor(執行器)

   Spark Executor 是一個工作進程,負責在 Spark 作業中運行任務,任務之間相互獨立。Spark 應用啓動時,Executor 節點被同時啓動,並且始終伴隨着整個 Spark 應用的生命週期而存在。如果有 Executor 節點發生了故障或崩潰,Spark 應用也可以繼續進行,因爲會將出錯節點上的任務調度到其他 Executor 節點上繼續運行。

Executor 主要負責:

  1. 負責運行組成 Spark 應用的任務,並將結果返回個驅動器進程。
  2. 通過自身的塊管理器(Block Manager)爲用戶程序中要求緩存的 RDD 提供內存式存儲。RDD 是直接緩存在 Executor 進程內的,因此任務可以在運行時充分利用緩存數據加速運算。

3. Spark 安裝

3.1 下載地址

  1. 官網下載地址

    Spark 官網

  2. 文檔查看地址

    Spark 官方文檔

3.2 安裝教程

  1. 通過 Xftp 將安裝包上傳到 Linux 系統上。
  2. 解壓 Spark 安裝包到指定已有目錄。
tar -zxvf spark-2.3.1-bin-hadoop2.7.tgz -C /opt/module
  1. 重命名。
mv spark-2.3.1-bin-hadoop2.7/ spark
  1. 在 spark 安裝目錄下啓動 spark-shell 查看是否安裝成功。
bin/spark-shell

成功頁面:
在這裏插入圖片描述

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