国产一级簧片-国产一极毛片-国产一国产a一级毛片-国产一国产一有一级毛片-91三级视频-91大学生视频

藍鷗旗下品牌:鷗課學院
全國咨詢電話:13152008057
您的位置: 首頁 > 技術文章 > 【原創】Spark Standalong模式運行原理剖析

【原創】Spark Standalong模式運行原理剖析

2017-06-16 藍鷗
6157人 瀏覽:

  一、概述

  Apache Spark是一種快速和通用的集群計算系統。它提供Java,Scala,Python和R中的高級API,以及支持一般執行圖的優化引擎。它還支持一組豐富的更高級別的工具,包括Spark SQL用于SQL和結構化數據的處理,MLlib機器學習,GraphX用于圖形處理和Spark Streaming。

  Spark除了在Mesos或YARN群集管理器上運行,它還提供了一種簡單的獨立部署模式Standalone模式。接下來我們就以下面的WordCount代碼為例剖析Spark Standalone模式的運行原理。理解并掌握Spark Standalone模式的運行原理對后期進一步學習Spark相關技術有很大的幫助,同時也是Spark開發工程師崗位面試經常被提問的地方。

  WordCount代碼如下:

1.jpg

  Standalone運行模式原理概要如下圖所示:

2.png

  二、Standalong模式運式原理剖析之天龍八“步”

  1、第一步:

  通過spark-submit指令將打好的Spark jar包提交到Spark集群中運行。先從Driver進程開始運行,Driver中包含了我們所編寫的代碼。

  首先執行代碼中的前兩行代碼,

  //創建SparkConf對象  

  val conf = new SparkConf().setAppName("WordCount")  

  //創建SparkContext對象  

  val sc = new SparkContext(conf)

  這兩行代碼分別創建了SparkConf和SparkContext對象,在創建SparkContext對象的過程中,Spark會去做兩件很重要的事,就是創建DAGScheduler和TaskScheduler這兩個對象。然后,TaskScheduler會通過一個后臺進程負責與Master進行注冊通信,告訴Master有一個新的Application應用程序要運行,需要Master管理分配調度集群的資源。

  2、第二步:

  Master接收到TaskScheduler的注冊請求之后,會通過資源調度算法對集群資源進行調度,并且與Worker進行通信,請求Worker啟動相應的Executor。

  3、第三步:

  Worker接收到Master的請求之后,會在本節點中啟動Executor。因為集群中有多個Worker節點,那么也意味著會啟動多個Executor。一個Application對應著Worker中的一個Executor。

  4、第四步:

  Executor啟動完成之后,會向Driver中的TaskScheduler進行反注冊,反注冊的目的就是讓Driver知道新提交的Application應用將由哪些Executor負責執行。

  5、第五步:

  Executor向Driver中的TaskScheduler反注冊完成之后,就意味著SparkContext的初始化過程已經完成,接下來去執行SparkContext下面的代碼。

  //從linux或者HDFS中獲取數據

  val lines = sc.textFile("hdfs://tgmaster:9000/in/resws")

  //進行單詞統計計數

  val result = lines.flatMap(_.split(" ")).map((_, 1))

  //將計算結果保存到HDFS中

  result.saveAsTextFile("hdfs://tgmaster:9000/out/res3")

  sc.stop()

  6、第六步:

  在SparkContext下面的代碼中,創建了初始RDD,并對初始RDD進行了Transformation類型的算子操作,但是系統只是記錄下了這些操作行為,這些操作行并沒有真正的被執行,直到遇到Action類型的算子,觸發提交job之后,Action類型的算子之前所有的Transformation類型的算子才會被執行。job會被提交給DAGScheduler,DAGScheduler根據stage劃分算法將job劃分為多個stage(階段),并將其封裝成TaskSet(任務集合),然后將TaskSet提交給TaskScheduler。

  7、第七步:

  TaskScheduler根據task分配算法,將TaskSet中的每一個小task分配給Executor去執行。

  8、第八步:

  Executor接受到task任務之后,通過taskrunner來封裝一個task,并從線程池中取出相應的一個線程來執行task。

  task線程針對RDD partition分區中的數據進行指定的算子操作,這些算子操作包括Transformation和Action類型的操作。

  補充說明:

  1、taskrunner(任務運行器),會對我們編寫代碼進行復制、反序列化操作,進行執行task任務。

  2、task分為兩大類:ShuffleMapTask和ResultTask。最后一個stage階段中的task稱為ResultTask,在這之前所有的Task稱為ShuffleMapTask。

  1. 廣告1
  2. 廣告2
  3. 廣告3
  4. 廣告4
主站蜘蛛池模板: 自偷自偷自亚洲永久 | 爽爽窝窝午夜精品一区二区 | 69欧美另类xxxxx高清 | 免费一级毛片私人影院a行 免费一级毛片无毒不卡 | 波多野吉衣 免费一区 | 中文字幕成人免费高清在线视频 | 欧美大片欧美毛片大片 | 亚洲欧美日韩国产一区二区精品 | 国产三级做爰在线观看视频 | 亚洲社区在线观看 | 先锋影音xfyy5566男人资源 | 国产亚洲综合久久 | 日本www色视频成人免费网站 | 国产成人综合日韩精品无 | 久久综合免费 | 99精品国产高清一区二区三区香蕉 | 亚洲精品人成网在线播放影院 | 亚洲美女一级片 | 国产在线高清不卡免费播放 | 中文字幕一区二区在线观看 | 国产高清视频免费 | 一区二区三区高清在线 | 国产在线观看一区精品 | 欧美大片国产在线永久播放 | 精品国产视频在线观看 | 精品久久久久中文字幕日本 | 一个人免费观看日本www视频 | 亚洲欧美视频一区二区三区 | 亚洲免费小视频 | 国产一在线精品一区在线观看 | 国产三级三级三级三级 | 久草网首页 | 综合刺激网 | 91视频综合网 | 全国最大色成免费网站 | 欧美黄a | 午夜一级毛片免费视频 | 久草福利资源 | 99精品免费在线观看 | 亚洲视频中文 | 欧美无极品 |