Spark學習筆記0——簡單瞭解和技術架構

Spark學習筆記0——簡單瞭解和技術架構

筆記摘抄自 [美] Holden Karau 等著的《Spark快速大數據分析》sql

什麼是Spark

Spark 是一個用來實現快速而通用的集羣計算的平臺。編程

  • 擴展了普遍使用的MapReduce 計算模型
  • 可以在內存中進行計算
  • 一個統一的框架簡單而低耗地整合各類處理流程
  • 接口很是豐富

技術架構和軟件棧

Spark 的核心是一個對由不少計算任務組成的、運行在多個工做機器或者是一個計算集羣上的應用進行調度、分發以及監控的計算引擎服務器

Spark 項目還包含多個緊密集成的組件,這些組件關係密切而且能夠相互調用網絡

Spark軟件棧.jpg

各組件間密切結合的設計原理的優勢:架構

  • 軟件棧中全部的程序庫和高級組件均可以從下層的改進中獲益
  • 只須要一套軟件系統,運行整個軟件棧的代價變小了
  • 可以構建出無縫整合不一樣處理模型的應用(例如機器學習和數據分析同時進行)

Spark Core

  • Spark Core 實現了Spark 的基本功能,包含任務調度、內存管理、錯誤恢復、與存儲系統交互等模塊
  • Spark Core 中包含了對 RDD1 的 API 定義

Spark SQL

Spark 用來操做結構化數據的程序包框架

  • 可使用 SQL 和 Apache Hive 版本的SQL 方言(HQL)來查詢數據
  • 支持多種數據源(好比Hive 表、Parquet 以及JSON 等)
  • 支持開發者將SQL 和傳統的 RDD 編程的數據操做方式相結合,使用 Python、Java 或 Scala 在單個應用中同時使用 SQL 和複雜的數據分析

Spark Streaming

Spark Streaming 是Spark 提供的對實時數據進行流2式計算的組件機器學習

  • Spark Streaming 提供了用來操做數據流的API,而且與Spark Core 中的RDD API 高度對應
  • 從底層設計來看,Spark Streaming 支持與 Spark Core 同級別的容錯性、吞吐量以及可伸縮性

MLlib

一個提供常見的機器學習(ML)功能的程序庫分佈式

  • MLlib 提供了不少種機器學習算法
  • 提供了一些更底層的機器學習原語(包括一個通用的梯度降低優化算法)

P.s. 全部這些方法都被設計爲能夠在集羣上輕鬆伸縮的架構oop

GraphX

GraphX 是用來操做圖(好比社交網絡的朋友關係圖)的程序庫

  • 能夠進行並行的圖計算
  • 擴展了Spark 的RDD API,能用來建立一個頂點和邊都包含任意屬性的有向圖
  • 支持針對圖的各類操做以及一些經常使用圖算法

集羣管理器

  • Spark 支持在各類集羣管理器(cluster manager)上運行,包括Hadoop YARN、Apache Mesos
  • Spark 自帶的一個簡易調度器,叫做獨立調度器

受衆

  • 數據科學家——數據科學應用
  • 工程師——數據處理應用

起源和發展

Spark歷史.png



  1. 彈性分佈式數據集(resilient distributed dataset,簡稱RDD)。RDD 表示分佈在多個計算節點上能夠並行操做的元素集合,是Spark 主要的編程抽象。

  2. 例如網頁服務器日誌、消息隊列

相關文章
相關標籤/搜索