Spark理論分析

2021-09-14 05:34:25 字數 1527 閱讀 2527

什麼是spark?

spark 是基於記憶體計算的通用大規模資料處理框架

spark已經融入了hadoop生態系統,可支援的作業型別和應用場景比mapreduce更為廣泛,並且具備了mapreduce所有的高容錯性和高伸縮性特點。

並不是所有的問題都可以簡單的分解成map和reduce兩步模型處理

mapreduce 缺點

延遲高: 不適合互動式sql分析

迭代計算力不從心:斐波那契數列

spark

一站式解決:

離線批處理

流式計算

mapreduce會將中間結果輸出到本地磁碟:例如shuffle過程map的中間結果

有多個mapreduce任務串聯時,依賴hdfs儲存中間結果的輸出對磁碟的io操作太頻繁

例如:hive

spark 盡可能減小中間結果寫入磁碟,盡可能減少不必要的sort/shuffle  反覆用到的資料進行cache 對於dag進行高度的優化、劃分不同的stage ,使用延遲計算技術。

spark 將資料快取在分布式記憶體中

如何實現?rdd

spark的核心

分布式記憶體抽象

提供乙個高度受限的共享記憶體模型

邏輯上集中但是物理上是存在在集群的多台機器上

唯讀通過hdfs或者其它持久化系統建立rdd

通過transformation將父rdd轉化得到新的rdd

rdd 上儲存著前後的之間的依賴關係

partition

基本組成單位,rdd在邏輯上按照partition分塊

分布在各個節點上

分片數量決定平行計算的粒度

rdd中儲存如何計算每乙個分割槽的函式

容錯失敗自動重建

如果發生部分分割槽資料丟失,可以通過依賴關係重新計算

對於rdd有四種型別的運算元

create:

sparkcontext.textfile()

sparkcontext.parallelize()

transformation

作用於乙個或者多個rdd,輸出轉換後的rdd

例如:map,filter,groupby

action:

會觸發spark提交作業,並將結果返回diver program

例如:reduce,countbykey

cache:

cache 快取

persist持久化

惰性運算  遇到action時才會真正的執行

Spark理論學習

彈性分布式資料集 rdd是由多個partition組成 最小單位是partition 與讀取的block是一一對應的.有多少個block就有多少個partion.運算元就是函式 作用再rdd的partition上的.對彈性的理解 某個rdd損壞了,可以進行恢復.他們直接有依賴關係 分割槽器是作用在k...

排隊理論分析

先上結論 當消費方佇列足夠長時,如果生產能力大於消費能力,那麼在某一時刻消費方必定會對外表現出雪潰了的狀況,即所有請求都失敗。假設有兩個系統p producer 和c consumer p是生產方,c是消費方,p throughput producer throughput 為p的生產能力,c th...

Spark原始碼分析 Spark整體架構

術語 描述使用者編寫的程式。driver端的sparkcontext sparkconf和執行在executors上使用者編寫的業務邏輯 即map reduce reducebykey等 driver 執行使用者編寫應用程式的main 方法並建立sparkcontext worker 具體執行應用程...