<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    SPARK架構與流程

    Spark的整體流程為:Client 提交應用,Master找到一個Worker啟動Driver,Driver向Master或者資源管理器申請資源,之后將應用轉化為RDD Graph,再由DAGScheduler將RDD Graph轉化為Stage的有向無環圖提交給TaskScheduler,由TaskScheduler提交任務給Executor執行。在任務執行的過程中,其他組件協同工作,確保整個應用順利執行。

    Spark架構采用了分布式計算中的Master-Slave模型。Master是對應集群中的含有Master進程的節點(ClusterManager),Slave是集群中含有Worker進程的節點。Master作為整個集群的控制器,負責整個集群的正常運行;Worker相當于是計算節點,接收主節點命令與進行狀態匯報;Executor負責任務的執行;Client作為用戶的客戶端負責提交應用,Driver負責控制一個應用的執行,如圖下圖:



                                                                                     Spark 框架圖

     

    Spark集群部署后,需要在主節點和從節點分別啟動Master進程和Worker進程,對整個集群進行控制。在一個Spark應用的執行過程中,Driver和Worker是兩個重要角色。Driver 程序是應用邏輯執行的起點,負責作業的調度,即Task任務的分發,而多個Worker用來管理計算節點和創建Executor并行處理任務。在執行階段,Driver會將Task和Task所依賴的file和jar序列化后傳遞給對應的Worker機器,同時Executor對相應數據分區的任務進行處理。

     

    Spark的架構中的基本組件介紹:

    ClusterManager:在Standalone模式中即為Master(主節點),控制整個集群,監控Worker。在YARN模式中為資源管理器。

    Worker:從節點,負責控制計算節點,啟動Executor或Driver。在YARN模式中為NodeManager,負責計算節點的控制。

    Driver:運行Application的main()函數并創建SparkContext。

    Executor:執行器,在worker node上執行任務的組件、用于啟動線程池運行任務。每個Application擁有獨立的一組Executors。

    SparkContext:整個應用的上下文,控制應用的生命周期。

    RDD:Spark的基本計算單元,一組RDD可形成執行的有向無環圖RDD Graph。

    DAG Scheduler:實現將Spark作業分解成一到多個Stage,每個Stage根據RDD的Partition個數決定Task的個數,然后生成相應的Task set放到TaskScheduler中。

    TaskScheduler:將任務(Task)分發給Executor執行。

    Stage:一個Spark作業一般包含一到多個Stage。

    Task:一個Stage包含一到多個Task,通過多個Task實現并行運行的功能。

    Transformations:轉換(Transformations) (如:map, filter, groupBy, join等),Transformations操作是Lazy的,也就是說從一個RDD轉換生成另一個RDD的操作不是馬上執行,Spark在遇到Transformations操作時只會記錄需要這樣的操作,并不會去執行,需要等到有Actions操作的時候才會真正啟動計算過程進行計算。

    Actions:操作(Actions) (如:count, collect, save等),Actions操作會返回結果或把RDD數據寫到存儲系統中。Actions是觸發Spark啟動計算的動因。

    SparkEnv:線程級別的上下文,存儲運行時的重要組件的引用。

    SparkEnv內創建并包含如下一些重要組件的引用。

    MapOutPutTracker:負責Shuffle元信息的存儲。

    BroadcastManager:負責廣播變量的控制與元信息的存儲。

    BlockManager:負責存儲管理、創建和查找塊。

    MetricsSystem:監控運行時性能指標信息。

    SparkConf:負責存儲配置信息。

     



                                                                           Spark運行邏輯圖

     

    在Spark應用中,整個執行流程在邏輯上會形成有向無環圖(DAG)。Action算子觸發之后,將所有累積的算子形成一個有向無環圖,然后由調度器調度該圖上的任務進行運算。Spark的調度方式與MapReduce有所不同。Spark根據RDD之間不同的依賴關系切分形成不同的階段(Stage),一個階段包含一系列函數執行流水線。圖中的A、B、C、D、E、F分別代表不同的RDD,RDD內的方框代表分區。數據從HDFS輸入Spark,形成RDD A和RDD C,RDD C上執行map操作,轉換為RDD D, RDD B和 RDD E執行join操作,轉換為F,而在B和E連接轉化為F的過程中又會執行Shuffle,最后RDD F 通過函數saveAsSequenceFile輸出并保存到HDFS或 Hbase中

    posted on 2015-06-18 13:17 paulwong 閱讀(512) 評論(0)  編輯  收藏 所屬分類: SPARK


    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲熟妇无码一区二区三区导航 | 乱人伦中文视频在线观看免费| 亚洲成AV人片在WWW色猫咪| 亚洲精品第一国产综合亚AV| 拨牐拨牐x8免费| 亚洲乱码在线卡一卡二卡新区 | 亚洲国产中文在线视频| 日本高清高色视频免费| 亚洲国产精品成人久久| 亚洲免费视频网站| 亚洲成AV人片久久| 无码中文在线二区免费| 亚洲精品中文字幕| 亚洲乱码日产精品a级毛片久久| 亚洲AV无码国产精品麻豆天美 | 久久精品视频免费播放| 亚洲av不卡一区二区三区 | 免费在线观看一区| 亚洲精品国产自在久久| 国产精品免费大片一区二区| 亚洲精品无码午夜福利中文字幕 | 亚洲明星合成图综合区在线| 成人午夜免费福利视频| 亚洲中文字幕无码av| 国产hs免费高清在线观看| 日韩一级片免费观看| 亚洲AV无码专区国产乱码电影 | 亚洲日本乱码卡2卡3卡新区| 日韩视频在线免费观看| 一级免费黄色大片| 亚洲精品欧洲精品| 成人免费午夜视频| 国产99视频精品免费视频76| 精品亚洲成a人片在线观看| 免费在线看v网址| 污污的视频在线免费观看| 亚洲爆乳无码一区二区三区| 成人黄软件网18免费下载成人黄18免费视频| 亚洲精品自在在线观看| 1000部拍拍拍18勿入免费视频软件| 亚洲av无码成人精品区|