Spark


MapReduce's shortcomings
盡管Hadoop是當今大數(shù)據(jù)革命的基礎(chǔ),并且得到了積極的使用和維護,但它仍然存在缺點,它們主要與MapReduce組件有關(guān)。 MapReduce作業(yè)結(jié)果需要存儲在HDFS中才能被其他作業(yè)使用。 出于這個原因,MapReduce在迭代算法中本身就很糟糕。
此外,許多類型的問題都不容易適應(yīng)MapReduce的兩步范式,并且將每個問題分解為一系列這兩個操作可能很困難。
Spark集群是一組互連的進程,通常在不同的機器上以分布式方式運行。
Spark運行的主要集群類型是YARN,Mesos和Spark獨立。
另外兩個運行時選項,本地模式local mode和本地集群模式local cluster mode,盡管設(shè)置Spark的最簡單,最快捷的方法主要用于測試目的。 local mode是在單個計算機上運行的偽集群(pseudo-cluster),本地集群模式是Spark獨立集群(spark standalone cluster),也僅限于單個計算機。
描述適用于所有Spark集群類型的Spark運行時體系結(jié)構(gòu)的常見元素。
例如,驅(qū)動程序(driver)和執(zhí)行程序(executor process)進程以及Spark上下文(spark context)和調(diào)度程序(scheduker objects)對象對所有Spark運行時模式都是通用的。
作業(yè)(jobs scheduling)和資源調(diào)度(resource scheduling)在所有集群類型上的功能也類似,Spark Web UI的用法和配置也用于監(jiān)視Spark作業(yè)的執(zhí)行。(monitor the exexution of spark's jobs)

executor和driver進程的物理位置取決于集群類型及其配置。 例如,其中一些進程可以共享一臺物理機器,或者它們都可以運行在不同的物理機器上。 上圖僅顯示了集群部署模式中的邏輯組件。
CLIENT-PROCESS COMPONENT
client process啟動驅(qū)動程序(driver program)。 client process可以是用于運行應(yīng)用程序的spark-submit腳本,spark-shell腳本或使用Spark API的自定義應(yīng)用程序。
client process為Spark應(yīng)用程序準備class path和所有configuration選項。 它還將應(yīng)用程序參數(shù)(如果有)傳遞給在driver中運行的應(yīng)用程序。
THE DRIVER COMPONENT
driver program 安排并見識spark application的執(zhí)行,每個Spark應(yīng)用程序總有一個driver,driver和其子組件(spark context and scheduler)主要負責
- 從cluster managers 請求cpu資源和內(nèi)存
- 將應(yīng)用程序按邏輯分解為階段(stages)和任務(wù)(tasks)
- 將tasks發(fā)送給executor
- 收集結(jié)果
cluster-deploy mode
spark-cluster-deploy.png
在cluster-deploy模式下,driver進程在集群中作為單獨的JVM進程運行,并且管理集群資源(主要是JVM堆內(nèi)存)。
client-deploy mode
spark-client-deploy.png
在client-deploy模式下,driver在客戶端的JVM進程中運行,并與集群管理的執(zhí)行程序進行通信。
THE EXECUTORS
executor是jvm進程,接受來自driver的tasks,執(zhí)行這tasks,并將結(jié)果返回給driver
上兩張圖的示例driver只使用兩個executor,可以更多,這里只是示例
每個executor有多個任務(wù)槽,用于并行執(zhí)行tasks,可以將任務(wù)槽的數(shù)量設(shè)置為cpu內(nèi)核數(shù)量的2~3倍,task實現(xiàn)為線程,不必與機器上的物理CPU內(nèi)核數(shù)相對應(yīng)
CREATION OF THE SPARK CONTEXT
一旦driver啟動,它將啟動并配置SparkContext實例,運行spark-shell時,shell就是driver,shell的上下文已經(jīng)預(yù)先配置并可用作sc變量,通過
