- Spark大數據商業實戰三部曲:內核解密|商業案例|性能調優
- 王家林
- 918字
- 2019-12-12 17:29:51
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等。
- Machine Learning for Cybersecurity Cookbook
- WOW!Illustrator CS6完全自學寶典
- Cloud Analytics with Microsoft Azure
- 快學Flash動畫百例
- 讓每張照片都成為佳作的Photoshop后期技法
- 工業控制系統測試與評價技術
- 愛犯錯的智能體
- Grome Terrain Modeling with Ogre3D,UDK,and Unity3D
- 菜鳥起飛系統安裝與重裝
- Dreamweaver CS6中文版多功能教材
- 從零開始學PHP
- Visual Studio 2010 (C#) Windows數據庫項目開發
- MATLAB-Simulink系統仿真超級學習手冊
- 中國戰略性新興產業研究與發展·數控系統
- Kubernetes on AWS