spark提交任務的流程


  1.spark提交流程

  sparkContext其實是與一個集群建立一個鏈接,當你停掉它之后
  就會和集群斷開鏈接,則屬於這個資源的Excutor就會釋放掉了,Driver
  向Master申請資源,Master會向work分配資源,則會在wordCount里面會
  構建Rdd,則它會會構建DAG,DAG又叫有向無環圖,則有向無環圖一旦觸發Action
  的時候,這個時候就會提交任務,此時,這些任務就不會經過Master,如果經過Master
  則Master的壓力會很大,其實Excutor一旦啟動了,它就會向Driver建立連接,Excutor
  它可能存在多個機器上面,則Driver不知道Excutor在哪里,但是Excutor知道Driver
  在哪里(通過Mastre來知道的),則此時Excutor會和Driver進行rpc通信,則此時Driver則會
  提交計算任務(以stage進行分開處理,其中stage里面是一個個並行的task),則
  提交的任務在Excutor里面執行,則在Excutor里面有這些任務的執行進度,則
  Excutor會向這個Master里面匯報進度,Driver就會知道它執行到了哪里,如果
  執行失敗,則Driver可能會執行重試,可能會例如,如果有10個項目,其中9個項目  
  都執行完了,但是有一個項目會很慢很慢,則此時Driver會在啟動一個項目,
  看這兩個項目,誰快就用誰,對於catch,則Excutor只會catch屬於它的的分區

 

  2.rdd緩存

    spark計算特別快的原因,就是在不同的操作中可以在內存中持久化或緩存
    多個數據集

  3.容量的大小

    關於容量大小,一般來說我們可以這樣的假設,2個字段,100萬條數據,50M,如果要說
    可以往后面一次計算

  4.關於內存分配

    在spark的計算過程中,如果我們的一台worker的內存是2g,但是我們可以給這個work

    啟動spark,我可以只給他分1個g的內存,就是說這個worker里面,不管在執行任何操作,

    都只用這1個g的內存

  5.checkpoint(檢查點)

    假如在進行rdd的計算的過程中,如果前面計算的結果之后,把這個結果保存在磁盤當中,

    但是磁盤燒了,則此時這個里面的數據就會消失,則此時我們就會從頭開始記性計算,

    但是這樣又有一些浪費,我們可以設置一個檢查點(checkpoint),把某些計算出來的結果

    存在一個地方,當磁盤損壞,我們就可以回退到這些檢查點當中,很想快照的意味

    (這個就一般作用於比較復雜的運用,當我們保存這個checkpoint的時候,他會主動的去尋找

    這個checkpoint里面保存的值)我們可以防止檢查點的公共存放目錄

    sc.setCheckpointDir("hdfs://192.168.109.136:9000/ck2016mypoint"),設置檢查點存放的地方
    則我們此時hdfs dfs -ls /,我們就可以發現這個檢查點存放的目錄

    

    val rdd = sc.textFile("hdfs://192.168.109.136:9000/wj/input19")
    rdd.checkpoint
    rdd.count(運行action)

    則此時回啟動兩個方法,第一個方法進行計算,另一個方法則把結果寫到checkpoint

    寫到指定的目錄(這個存放checkpoint的地方葯可用性高,所以我們采用hdfs),

    則此時把rdd的內容寫到checkpoint里面

  6.關於collect,cache,checkpoint的區別

    collect是一個Action類型的RDD,而cache則是,當我們xxx.cache,則這個xxx的rdd在進行

    Action的方法(collect),則會把這個RDD里面的內容緩存進內存,則當我們再一次進行計算的

    時候,則會從內存中進行讀取,而checkpoint這個值,這個是把這個rdd的值緩存進入一個公共

    的目錄(這個目錄要有高的可用性,即使內存中丟失,這個也不會丟失)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM