Learning Spark [1] - Spark的基礎(chǔ)概念

術(shù)語:

  • Application(應(yīng)用程序):用戶使用API所構(gòu)建的Spark程序,包含了Driver(驅(qū)動)和Executor(執(zhí)行單元)。
  • SparkSession(Spark時域):一個提供了使用Spark程序入口的實例。
  • Job(作業(yè)):由多個Task(進(jìn)程)組成平行計算,會為Spark操作生成一個結(jié)果(e.g. save(), collect())。
  • Stage(階層):每個Job都會分割為小份Task的集合,即為Stages。
  • Task(進(jìn)程):會直接送到Spark Executor的一個單位的work(工作)。
    以下為一些更詳細(xì)的概念

Spark Application and SparkSession

每個Spark Application的核心為Spark Driver,他會創(chuàng)建一個SparkSession(在Spark Shell中,Spark Driver直接創(chuàng)建了一個SparkSession)。創(chuàng)建了SparkSession后,我們就可以使用API對Spark進(jìn)行編程

Spark Jobs

Driver會把一個Application轉(zhuǎn)換為一個或多個Jobs,然后會把每個Job轉(zhuǎn)化為DAG(有向無環(huán)圖)。每一個DAG里的node(環(huán)節(jié)),皆會是一個或多個Stages。


Spark Stages

作為DAG中一個node,Stages可以是平行或者序列的。


Spark Task

每個Stage都由一個或者多個Task組成,所以會使每個Executor聯(lián)合起來;每個Task僅map(映射)一個Core和一塊數(shù)據(jù)。所以,一個16核Executor可以擁有16個或更多的Task,且平行運行!


Trasnformations, Actions, and Lazy Evaluation

Spark的運行類型可以分為兩種:Transformations和Actions。


Transformation將一個DataFrame轉(zhuǎn)化為另一個DataFrame且使原數(shù)據(jù)屬性為不可更改來保留原數(shù)據(jù)。例如select()和filter()將不會更改原數(shù)據(jù),則會將結(jié)果保存為新的DataFrame,然后輸出改DataFrame作為結(jié)果。
所有Transformations都是lazy evaluation(惰性計算)。他們的結(jié)果將不會直接得出,但是他們會被記錄為lineage(血統(tǒng))。血統(tǒng)會在后續(xù)的執(zhí)行中,去重新對Transformation進(jìn)行排序,組合,優(yōu)化到Stages,使執(zhí)行更加效率。在Action被觸及或數(shù)據(jù)被“觸碰”之前,Transformation的執(zhí)行都會被推遲,即為Spark的惰性計算策略。在以下的例子中,在filtered.count()前沒有任何發(fā)生。

strings = spark.read.text("../README.md")
filtered = strings.filter(strings.value.contains("Spark")) 
filtered.count()
# 20

惰性計算使查詢在執(zhí)行前可以大致的觀望數(shù)據(jù)的轉(zhuǎn)化鏈,與Lineage,以及原數(shù)據(jù)不可更改,共同為Spark提升了容錯率。

Narrow and Wide Transformations

任何只有單一輸出的Transformation即是Narrow Transformation。例如filter()和contains()。groupby()和orderby()則是Wide Transformation。


Spark UI

在Spark Web UI中,可以實時觀測:

  • 計劃的stages, tasks
  • RDD大小以及內(nèi)存占用的概況
  • 配置環(huán)境的信息
  • 執(zhí)行器的信息
  • 所有Spark SQL的查詢
  • ...
    在本地模式中,地址為http://localhost:4040

Reference
Learning Spark 2nd - Lightning Fast Big Data Analysis by Jules S. Damji, Brooke Wenig, Tathagata Das, and Denny Lee

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容