摘要:Spark 儘可能減小中間結果寫入磁盤,儘可能減少不必要的Sort/Shuffle 反覆用到的數據進行Cache 對於DAG進行高度的優化、劃分不同的Stage ,使用延遲計算技術。Spark 將數據緩存在分佈式內存中。

Spark簡介

什麼是Spark?

Spark 是基於內存計算的通用大規模數據處理框架

Spark已經融入了Hadoop生態系統,可支持的作業類型和應用場景比MapReduce更爲廣泛,並且具備了MapReduce所有的高容錯性和高伸縮性特點。

spark理論和RDD算子

爲什麼會誕生Spark

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

Mapreduce 缺點

1、 延遲高: 不適合交互式SQL分析

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

3、 流式數據處理: 統計網站的PV、UV數據

Spark

一站式解決:

離線批處理

流式計算

在線實時分析

Spark爲何快

MapReduce會將中間結果輸出到本地磁盤:例如Shuffle過程Map的中間結果

spark理論和RDD算子

有多個MapReduce任務串聯時,依賴HDFS存儲中間結果的輸出對磁盤的IO操作太頻繁

例如:hive

spark理論和RDD算子

Spark 儘可能減小中間結果寫入磁盤,儘可能減少不必要的Sort/Shuffle 反覆用到的數據進行Cache 對於DAG進行高度的優化、劃分不同的Stage ,使用延遲計算技術。

spark理論和RDD算子

彈性分佈式數據集RDD

Spark 將數據緩存在分佈式內存中

如何實現?rdd

Spark的核心

分佈式內存抽象

提供一個高度受限的共享內存模型

邏輯上集中但是物理上是存在在集羣的多臺機器上

RDD屬性和特點

只讀

通過HDFS或者其它持久化系統創建RDD

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

RDD 上保存着前後的之間的依賴關係

Partition

基本組成單位,RDD在邏輯上按照Partition分塊

分佈在各個節點上

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

RDD中保存如何計算每一個分區的函數

容錯

失敗自動重建

如果發生部分分區數據丟失,可以通過依賴關係重新計算

Spark編程模型

1、 對於RDD有四種類型的算子

Create:

SparkContext.textFile()

SparkContext.parallelize()

Transformation

作用於一個或者多個RDD,輸出轉換後的RDD

例如:map,filter,groupby

Action:

會觸發Spark提交作業,並將結果返回Diver Program

例如:reduce,countByKey

Cache:

cache 緩存

persist持久化

惰性運算 遇到Action時纔會真正的執行

相關文章