十年大數據專家用10小時就講完了Spark,共2.2G,附Spark技術文檔

前言

SPARK是一種安全的、經正式定義的編程語言。

Spark圍繞的核心概念,是彈性分佈式數據集(RDD),一個有容錯機制,可以被並行操作的集合。目前有兩種類型的RDD: 並行集合(Parrallelized Collections),接收一個已經存在的Scala集合,在它上面運行各種併發計算; Hadoop數據集(Hadoop DataSets),在一個文件的每條記錄上,運行各種函數。只要文件系統是Hdfs,或者hadoop支持的任意存儲系統。這兩種RDD都可以通過相同的方式進行操作。

Spark特性

Spark通過在數據處理過程中成本更低的洗牌(Shuffle)方式,將MapReduce提升到一個更高的層次。利用內存數據存儲和接近實時的處理能力,Spark比其他的大數據處理技術的性能要快很多倍。

Spark還支持大數據查詢的延遲計算,這可以幫助優化大數據處理流程中的處理步驟。Spark還提供高級的API以提升開發者的生產力,除此之外還為大數據解決方案提供一致的體系架構模型。

Spark將中間結果保存在內存中而不是將其寫入磁盤,當需要多次處理同一數據集時,這一點特別實用。Spark的設計初衷就是既可以在內存中又可以在磁盤上工作的執行引擎。當內存中的數據不適用時,Spark操作符就會執行外部操作。Spark可以用於處理大於集群內存容量總和的數據集。

Spark會嘗試在內存中存儲儘可能多的數據然後將其寫入磁盤。它可以將某個數據集的一部分存入內存而剩餘部分存入磁盤。開發者需要根據數據和用例評估對內存的需求。Spark的性能優勢得益於這種內存中的數據存儲。

Spark的其他特性包括:

  • 支持比Map和Reduce更多的函數。
  • 優化任意操作算子圖(operator graphs)。
  • 可以幫助優化整體數據處理流程的大數據查詢的延遲計算。
  • 提供簡明、一致的Scala,Java和Python API。
  • 提供交互式Scala和Python Shell。目前暫不支持Java。

Spark是用Scala程序設計語言編寫而成,運行於Java虛擬機(JVM)環境之上。目前支持如下程序設計語言編寫Spark應用:

  • Scala
  • Java
  • Python
  • Clojure
  • R

Spark生態系統

除了Spark核心API之外,Spark生態系統中還包括其他附加庫,可以在大數據分析和機器學習領域提供更多的能力。

這些庫包括:

  • Spark Streaming:Spark Streaming基於微批量方式的計算和處理,可以用於處理實時的流數據。它使用DStream,簡單來說就是一個彈性分佈式數據集(RDD)系列,處理實時數據。
  • Spark SQL:Spark SQL可以通過JDBC API將Spark數據集暴露出去,而且還可以用傳統的BI和可視化工具在Spark數據上執行類似SQL的查詢。用戶還可以用Spark SQL對不同格式的數據(如JSON,Parquet以及數據庫等)執行ETL,將其轉化,然後暴露給特定的查詢。
  • Spark MLlib:MLlib是一個可擴展的Spark機器學習庫,由通用的學習算法和工具組成,包括二元分類、線性迴歸、聚類、協同過濾、梯度下降以及底層優化原語。
  • Spark GraphX:GraphX是用於圖計算和並行圖計算的新的(alpha)Spark API。通過引入彈性分佈式屬性圖(Resilient Distributed Property Graph),一種頂點和邊都帶有屬性的有向多重圖,擴展了Spark RDD。為了支持圖計算,GraphX暴露了一個基礎操作符集合(如subgraph,joinVertices和aggregateMessages)和一個經過優化的Pregel API變體。此外,GraphX還包括一個持續增長的用於簡化圖分析任務的圖算法和構建器集合。

除了這些庫以外,還有一些其他的庫,如BlinkDB和Tachyon。

BlinkDB是一個近似查詢引擎,用於在海量數據上執行交互式SQL查詢。BlinkDB可以通過犧牲數據精度來提升查詢響應時間。通過在數據樣本上執行查詢並展示包含有意義的錯誤線註解的結果,操作大數據集合。

Tachyon是一個以內存為中心的分佈式文件系統,能夠提供內存級別速度的跨集群框架(如Spark和MapReduce)的可信文件共享。它將工作集文件緩存在內存中,從而避免到磁盤中加載需要經常讀取的數據集。通過這一機制,不同的作業/查詢和框架可以以內存級的速度訪問緩存的文件。此外,還有一些用於與其他產品集成的適配器,如Cassandra(Spark Cassandra 連接器)和R(SparkR)。Cassandra Connector可用於訪問存儲在Cassandra數據庫中的數據並在這些數據上執行數據分析。

下圖展示了在Spark生態系統中,這些不同的庫之間的相互關聯。

Spark的體系架構

Spark體系架構包括如下三個主要組件:

  • 數據存儲
  • API
  • 管理框架

接下來讓我們詳細瞭解一下這些組件。

數據存儲:

Spark用HDFS文件系統存儲數據。它可用於存儲任何兼容於Hadoop的數據源,包括HDFS,HBase,Cassandra等。

API:

利用API,應用開發者可以用標準的API接口創建基於Spark的應用。Spark提供Scala,Java和Python三種程序設計語言的API。

Spark學習路線

spark-core、複習hadoop生態、梳理術語、hadoopRDD 源碼分析

spark-core、wordcount案例源碼分析、圖解

spark-core、集合操作API、pvuv分析、RDD源碼分析

spark-core、聚合計算API、combineByKey、分區調優

spark-core、二次排序、分組取TopN、算子綜合應用

spark-core、集群框架圖解、角色功能介紹、官網學習 、搭建

spark-core、history服務、standaloneHA、資源調度參數

spark-core、基於yarn的集群搭建、配置、資源調度參數、優化jars

spark-core-源碼、RpcEnv、standaloneMaster啟動分析

spark-core-源碼、Worker啟動、sparksubmit提交、Driver啟動

spark-core-源碼、Application註冊、Executor資源申請

spark-core-源碼、sparkContext、DAGScheduler、stage劃分

spark-core-源碼、TaskScheduler、Executor運行Task、SparkEnv

spark-core-源碼、MemoryManager、BlockManager

spark-core-源碼、Dependency、SortShuffleManager

spark-core-源碼、SortShuffleWriter、內存緩衝區buffer

spark-core-源碼、SortShuffleWriter、內存緩衝區buffer

spark-core-源碼、UnsafeShuffleWriter、Tungsten、Unsafe、堆外

spark-core-源碼、ShuffleReader、Tracker、Scheduler完整調度

spark-core-源碼、RDD持久化、檢查點、廣播變量、累加器

spark-core-源碼、RDD持久化、檢查點、廣播變量、累加器

spark-sql、大數據中的SQL組成原理

spark-sql、datafram到dataset開發

spark-sql、整合hive的metastore搭建企業級數倉1

spark-sql、整合hive的metastore搭建企業級數倉2

spark-sql、複雜sql、函數、自定義函數、開窗over函數、OLAP

spark-sql-源碼、sql解析、dataset到rdd的執行計劃

spark-sql-源碼、antlr4的sql解析、AST語法樹的邏輯到物理轉換

spark-sql-源碼、邏輯計劃、優化器、物理計劃、轉換RDD

spark-streaming、流式計算之微批計算原理及standalone

spark-streaming、api、ha、檢查點、窗口等機制

spark-streaming、整合MQ-kafka開發

spark-streaming、源碼分析、流式微批任務的調度原理

spark思維導圖

十年大數據專家用10小時就講完了Spark,共2.2G,附Spark技術文檔

Spark2.2G學習視頻

十年大數據專家用10小時就講完了Spark,共2.2G,附Spark技術文檔


十年大數據專家用10小時就講完了Spark,共2.2G,附Spark技術文檔

另外還有SparkPDF技術文檔贈送

十年大數據專家用10小時就講完了Spark,共2.2G,附Spark技術文檔

需要Spark學習路線、2.2G學習視頻和PDF技術文檔的小夥伴,就可以轉發此文讓更多的人受益,並且關注一下小編因為還會持續分享,最後私信小編“文檔”來進行獲取吧!


分享到:


相關文章: