如何高效閱讀 Spark 和 Hadoop 這類大型開源項目源代碼?有什麼工具可以藉助?
01-13
我也答一下這個題目吧,我自己看過HDFS以及HDFS Raid的源碼,其他的偶爾也看一下。個人感覺大致以下一些步驟吧:1. 看官方網站的描述,知道項目的定位、功能、常見用例。
2. 搜集文檔,與項目相關的論文、整體架構文檔、某些重要feature的文檔等,如果你願意像 @vczh所說的那樣email項目主要contributors要一些文檔的話,也可以。另外,知名的hadoop和spark的技術博客一定不要錯過,比如Yahoo!、Cloudera、Hortonworks、Databricks等的官方博客。對於不明白的feature,可以考慮先去StackOverflow上找找相關信息,給自己普及一下基礎知識。
3. 下載項目源碼,看一下源碼的layout,了解相關功能在哪個目錄下。使用有效地IDE開始分析。4. 如果已有別人的源碼分析,搞過來看看。比如HDFS、MR的分析已經有書存在了。5. 搭建一個單機的系統,run起來,看看日誌,打開debug模式跟蹤一下。6. 自己整理分析筆記之類的,輸出有助於更好的思考。
ps:建議1,2先行。3,4,5可能需要交叉進行。-------------------------------------------------------------以上公司名字可能拼寫錯誤,大概能知道是那個就行。歡迎大家補充,我也很希望學習到高效的項目分析、源碼分析的方法。關於spark代碼的閱讀 可以看我的這個回答想研讀下spark的源碼,怎麼搭閱讀和調試的環境呢? - 郭眾鑫的回答
也可以直接看我的日誌Windows + IDEA + SBT 打造Spark源碼閱讀環境-guozhongxin"s blog
email開發者們,跟他們要暗地裡藏起來的開發文檔
看0.1或者0.0.1版本.
不要直接讀hadoop的源代碼,他文檔缺失的厲害,很累。正確的其實是去讀mapr的源代碼,文檔全面,mapr就是hadoop的一個fork,更好理解的
先架上服務,搞清楚大概有哪些業務,腦子裡有個big pic,然後調試代碼,對於整個workflow有映像,再細看數據結構,然後再看各個業務的演算法,最後思考如果有什麼可以改進的地方,嘗試自己添加些feature來驗證自己有沒有掌握。
Source Insight 體驗應該還不錯,可以試試。
看Java代碼最好的工具應該是intellij idea 了,community 版免費而且品質也很高
推薦閱讀:
※第四範式的人工智慧平台 Prophet 有可能替代 Spark 么?
※Spark SQL 和 Shark 在架構上有哪些區別?將來會合併嗎?
※hadoop 和spark如何系統的學習?
※MapReduce過程中,如果Map之後每個Key對應Value的數量不平衡會不會影響效率?