Spark中的一些基本概念和模型

####Aplication Application和Hadoop MapReduce中的相似,指用戶編寫的Spark應用程序。包含了一個driver program和集羣中多個executor。 ####Driver 運行Application的main()函數並建立SparkContext。建立SparkContext是爲了準備Spark應用程序的運行環境,SparkContext負責與Cluster Manager通訊,進行資源的申請、任務的分配和監控等。當application運行完成後,Driver負責將SparkContext關閉。一般SparkContext表明Driver。 ####Executor 某Application運行在worker上的一個進程,該進程負責運行某些Task,而且負責將數據存在內存或者磁盤上。一個Application擁有着一批各自獨立的Executor。在Spark on Yarn模式下,其進程名稱爲CoarseGrainedExecutor Backend,相似於Hadoop MapReduce中的YarnChild。一個CoarseGrainedExecutor Backend進程有且只有一個executor對象,它負責將Task包裝成taskRunner,並從線程池中抽取出一個空閒線程運行Task。這樣每一個CoarseGrainedExecutor Backend弄並行運行Task的數量就取決於分配給他的cpu個數了。 ####Cluster Manager 在集羣上獲取資源的外部服務緩存

  • Standalone : Spark原生的資源管理。由master負責資源的分配
  • Apache Mesos : 與Apache MapReduce兼容較好的資源調度
  • Hadoop Yarn : Yarn中的ResourceManager

####Worker 集羣中任何能夠運行Application代碼的節點,相似與Yarn中NodeManager節點。在Standalone模式中,指的是在slaves中配置的節點;在Spark on Yarn模式中指的是NodeManger節點。 ####Task 被送到某個Execuotr上的工做單元,與Hadoop MapReduce中的MapTask和ReduceTask概念同樣,是運行application的基本單元。多個task組成一個stage,task的調度和管理由TaskScheduler負責 ####Job 由多個task組成的並行計算,每每由action操做觸發。一個application運行時,可能會產生多個job。 ####Stage 每一個job會分紅不少組task,做爲一個TaskSet,就叫作Stage。Stage的劃分和調度由下面的DAGScheduler負責。Stage有非最終的Stage(shuffle map stage)和最終的Stage(result stage)兩種。Stage的邊界就在shuffle的地方。 ####RDD Resilient Distributed Datasets,彈性分佈式數據集。Spark的基本計算單元,能夠經過一系列算子進行操做(transfermation和action)。RDD是Spark的核心,它表示已被分區的、被序列化的、不可變的、有容錯機制的,而且能夠並行操做的數據集合。存儲級別能夠是內存或磁盤,在spark.storage.StroageLevel屬性配置。 ####共享變量 Spark提供兩種共享變量app

  • 廣播變量:可緩存到各個節點
  • 累加變量:只支持加法運算

####寬依賴 也叫ShuffleDependency,指多個子RDD的分片會依賴同一個父RDD分片或者說同一個父RDD的分片都有多個子RDD的分片使用。寬依賴須要計算好全部父RDD對應分區的數據,而後在節點節點之間進行shuffle。 ####窄依賴 也叫narrow dependency,指某個具體的RDD其分區partition a最多被子RDD中的一個分區parttition b依賴。 ####DAGScheduler 根據job構建基於stage的DAG,並提交stage給taskScheduler。其劃分stage的依據是RDD的依賴關係。 ####TashScheduler 將task提交給worker運行。Executor運行的任務就是在此時進行分配的。分佈式

相關文章
相關標籤/搜索