Spark編程模型(一):SparkContext的作用

    開發人員根據自己的需求,在main函數中調用Spark提供的數據操縱接口,利用集羣來對數據執行並操作。Spark爲開發人員提供了兩類抽象接口。第一類抽象接口是彈性分佈式數據集RDD,其是對數據集的抽象封裝,開發人員可以通過RDD提供的開發接口來訪問和操縱數據集合,而無需瞭解數據的存儲介質(內存或磁盤)、文件系統(本地文件系統、HDFS或Tachyon)、存儲結點(本地或遠程結點)等諸多實現細節;第二類抽象是共享變量(Shared Variables),通常情況下,一個應用程序在運行的時候會被分成分佈在不同執行節點之上的多個任務,從而提供運算的速度,每個任務都會有一份獨立的程序變量拷貝,彼此之間互不干擾,然而在某些情況下任務之間需要相互共享變量。Apache Spark提供了兩類共享變量,分別是廣播變量(Broadcast Variable)和累加器(Accumulators)

    2.1 SparkContext的創建

    SparkContext的創建過程首先要加載配置文件,然後創建SparkEnv,TaskScheduler,DAGScheduler

        2.1.1 加載配置文件SparkConf

        SparkConf在初始化時,首先選擇相關的配置參數,包含master、appName、sparkHome、jars、environment等信息,然後通過構造方法傳遞給SparkContext。這裏的構造函數有多種表達形式,當SparkContext獲取了全部相關的本地信息時開始下一步操作。

        2.1.2 創建SparkEnv

        創建SparkConf後就需要創建SparkEnv,這裏麪包括了很多Spark執行時的重要組件,包括MapOutputTracker、ShuffleFetcher、BlockManager等,這裏是通過SparkEnv類伴生對象SparkEnv Object內的createDriverEnv方法實現的。

        2.1.3 創建TaskScheduler

        創建SparkEnv後,就需要創建SparkContext中調度執行方面的變量TaskScheduler。

        TaskScheduler是依據Spark的執行模式進行初始化的。

        2.1.4 創建DAGScheduler

        創建TaskScheduler對象後,再將TaskScheduler對象傳至DAGScheduler,進而用來創建DAGScheduler。創建DAGScheduler後再調用其start()方法將其啓動。以上4點是整個SparkContext的創建過程,這其中包含了很多重要的步驟,從這個過程中能理解Spark的初始啓動情況。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章