官术网_书友最值得收藏!

1.3 Spark 2.2源碼閱讀環境搭建及源碼閱讀體驗

對于Spark的應用,僅僅會使用其API來編程只能達到初級(助理)工程師或中級(熟練)工程師的水平,而學會調優則可以讓你進階為高級工程師。那么,怎么成為頂尖的工程師呢?源碼!源碼毫無保留地展示了Spark巧妙的實現原理和嚴謹的工作流程,同時也可能暴露出了Spark的缺陷;它不僅可以讓我們深入地理解我們之前寫過的代碼的每一行的背后隱藏了什么,也可以讓我們進一步改造Spark來更加完美地配合我們的業務。下面簡單介紹一下源碼閱讀環境的搭建。

Spark源碼是使用Scala語言編寫的,這是一個基于JVM的語言,與Java有很多類似之處,在決定讀源碼之前需先學會Scala。

首先,準備好配置了Scala 2.11和Maven的集成開發環境(這里以IntelliJ IDEA為例),然后到Spark官網(http://spark.apache.org/downloads.html)下載并解壓源碼,如圖1-10所示。

Spark源碼安裝包解壓之后,打開IDEA,單擊Import Project,如圖1-11所示選擇Maven方式,然后單擊Next按鈕。

出現圖1-12,勾選自動導入Maven項目,自動下載Source和Documentation,在右下角的Environment settings里面選擇要使用的Maven和Maven配置文件。接著單擊Next按鈕。

圖1-10 Spark官網下載示意圖

圖1-11 Maven的方式導入源碼

圖1-12 Maven選項示意圖

然后選擇要加載的profile,根據自己的需要勾選,然后一直單擊Next按鈕,直到出現Finish。IEDA打開后會引入源碼并解析pom文件開始下載源碼需要的Jar包(建議Maven配置文件的倉庫選擇比較快的鏡像,否則會下載很長時間)。

最后把每個源碼目錄下面的/src/main/里的scala文件夾選中,在右鍵選項里選擇Mark Directory as : Sources Root,如圖1-13所示。

圖1-13 Mark Sources Root示意圖

如果在編寫程序的時候隨時查看源碼,可以新建一個應用程序,創建完SparkSession之后,按住Ctrl并單擊SparkSession,在右上角單擊attachsources,選中源碼目錄即可把源碼關聯進來。

搭建好源碼環境后,可根據我們使用Spark的步驟閱讀源碼。

首先,使用start-all.sh啟動集群。在sbin目錄下可以找到這個腳本,打開后會看到start-master.sh和start-salves.sh兩個腳本,前者會引導我們進入Master類(在IDEA中雙擊Shift,輸入Master,打開Master.scala),Master繼承自RpcEndpoint,所以直接看其onStart方法即可,接著跟蹤代碼就可以明白Master的啟動流程。在start-salves.sh腳本里最終會引導我們進入Worker類,同樣可以直接看其onStart方法。

啟動完集群之后,接著提交任務。在bin目錄下有一個spark-submit文件用來提交程序,這個文件會引導我們進入SparkSubmit類,我們可以直接看它伴生類里的main方法,然后可跟著代碼一步一步閱讀。

這里有幾個重點:資源分配(Master里的schedule方法)、DAGScheduler、TaskScheduler、ScheduleBackend以及Shuffle等。

主站蜘蛛池模板: 九寨沟县| 中宁县| 衡山县| 郁南县| 嵩明县| 绥德县| 精河县| 泾阳县| 仁化县| 汶川县| 广饶县| 蛟河市| 阿拉善右旗| 邵阳市| 郎溪县| 枣强县| 施甸县| 怀化市| 西乌珠穆沁旗| 馆陶县| 德江县| 辽阳县| 乌兰县| 灵山县| 盐源县| 阜新市| 资源县| 景泰县| 陆川县| 房产| 保康县| 易门县| 香港 | 钟山县| 高青县| 金昌市| 中超| 怀仁县| 乌鲁木齐市| 齐齐哈尔市| 桃源县|