Spark大數據開發技術簡介

Spark大數據開發技術簡介

  • 輕量級的內存集羣計算平臺

歷史沿革

  • Apache Spark是一個圍繞速度、易用性和複雜分析構建的大數據處理框架
  • 最初在2009年由加州大學伯克利分校的AMPLab開發,並於2010年成爲Apache的開源項目之一,與Hadoop和Storm等其他大數據和MapReduce技術相比,Spark有如下優勢:
    • Spark提供了一個全面、統一的框架用於管理各種有着不同性質(文本數據、圖表數據等)的數據集和數據源(批量數據或實時的流數據)的大數據處理的需求
    • 官方資料介紹Spark可以將Hadoop集羣中的應用在內存中的運行速度提升100倍,甚至能夠將應用在磁盤上的運行速度提升10倍

Spark的優點

傳統MapReduce的不足

  • 在整個過程中,中間結果會藉助磁盤傳遞,因此大量的Map-Reduced作業都受限於IO。
    在這裏插入圖片描述

對比

Spark Hadoop Storm
處理模型 Batch + Stream Batch Stream
實時性 較快
容錯性 一般 較好
實現語言 Scala Java Java + Clojure
存儲介質 內存 + 磁盤 磁盤 內存
生態環境 較好 較差
適用場景 機器學習 離線數據分析 實時消息流

Apache Spark堆棧中的不同組件

基本原理

  • Spark Core
    包含Spark的基本功能;尤其是定義RDD的API、操作以及這兩者上的動作。其他Spark的庫都是構建在RDD和Spark Core之上的

  • Spark SQL
    提供通過Apache Hive的SQL變體Hive查詢語言(HiveQL)與Spark進行交互的API。每個數據庫表被當做一個RDD,Spark SQL查詢被轉換爲Spark操作。

  • Spark Streaming
    對實時數據流進行處理和控制。Spark Streaming允許程序能夠像普通RDD一樣處理實時數據

  • Mllib
    一個常用機器學習算法庫,算法被實現爲對RDD的Spark操作。這個庫包含可擴展的學習算法,比如分類、迴歸等需要對大量數據集進行迭代的操作。

  • GraphX
    控制圖、並行圖操作和計算的一組算法和工具的集合。GraphX擴展了RDD API,包含控制圖、創建子圖、訪問路徑上所有頂點的操作

架構組成

  • Cluster Manager
    在standalone模式中即爲Master主節點,控制整個集羣,監控worker。在YARN模式中爲資源管理器

  • Worker節點
    從節點,負責控制計算節點,啓動Executor或者Driver。

部署和體系結構

Spark運行模式

  • 本地模式(Local Mode)
    該模式被稱爲Local[N]模式,是用單機的多個線程來模擬Spark分佈式計算,直接運行在本地,便於調試,通常用來驗證開發出來的應用程序邏輯上有沒有問題。
    例子:(在spark安裝目錄的examples\jars下運行)
spark-submit --class org.apache.spark.examples.SparkPi --master local spark-examples*.jar 10
  • 獨立集羣運行模式(Standalone)
    Standalone模式使用Spark自帶的資源調度框架
    採用Master/Slaves的典型架構,選用ZooKeeper來實現Master的HA

當使用spark-submit工具提交Job或者在Eclipse、IDEA等開發平臺上使用: new SparkConf
.setManager (“spark://master:7077”) 方式運行Spark任務時,Driver是運行在本地Client端上的

框架結構如下:

  • Spark on Yarn
    在這裏插入圖片描述

頁面

在這裏插入圖片描述

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