2019-05-06 15:39:24 3257瀏覽
本篇文章扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)小編給讀者們分享一下如何高效的閱讀hadoop源代碼,對大數(shù)據(jù)開發(fā)感興趣的小伙伴就隨小編來了解一下,希望對小伙伴們有所幫助。
首先,必須要說,對于互聯(lián)網(wǎng)工程師而言,不管hadoop源代碼質(zhì)量怎么樣,是好還是差,我們都不得不看,別無選擇,因為hadoop已逐漸成為大數(shù)據(jù)代名詞,成為互聯(lián)網(wǎng)公司的基礎(chǔ)設(shè)施和軟件,和傳統(tǒng)的操作系統(tǒng)一樣基礎(chǔ)而又重要。另外,有人會問,對于只是使用hadoop的人,有沒有必要學(xué)習(xí)hadoop源代碼?這個取決于你個人的興趣,追求和工作內(nèi)容。
一般而言,hadoop職位分別內(nèi)核開發(fā)工程師(修改hadoop源代碼,打patch,加feature等),hadoop運維工程師(遇到hadoop服務(wù)問題,比如namenode掛了,主備切換失敗,可以采取相應(yīng)的措施快速解決),hadoop應(yīng)用開發(fā)工程師(在hadoop基礎(chǔ)上寫一些app,比如寫HQL生成報表,寫一些數(shù)據(jù)挖掘算法等),對于前兩個崗位,如果你是一個有追求的工程師的話,需要好好看源代碼,尤其是運維工程師,不能僅僅依賴于搜索引擎和各種雜七雜八的文檔,因為hadoop的很多東西,比如參數(shù)配置(hadoop中有幾百個配置參數(shù)),跟hadoop版本相關(guān),而hadoop版本迭代和發(fā)布頻繁,很多文檔和論壇里的帖子已經(jīng)失效而無法及時更新,因此,一味的依賴這種二手資料,只會讓你浪費更多時間。 這時候,最好的方式是查看源代碼,找到相關(guān)的類,看一下怎么實現(xiàn)的,問題可以馬上解決。你可以把hadoop源代碼看成一本巨大的參考手冊,遇到問題,就翻到能夠給你帶來答案的“頁”中。
hadoop源代碼:
理解了相關(guān)背景后,接下來聊聊hadoop源代碼質(zhì)量。
Hadoop源代碼質(zhì)量絕對是開源軟件中的佼佼者,從代碼規(guī)范,到代碼組織,再到代碼實現(xiàn)技巧。這一點,可以與各種雜七雜八的公司自己開發(fā)的軟件作對比(提一點,即使是非常有名的公司,掛在自己名下的開源軟件代碼質(zhì)量也不高,比如facebook的presto,比如linkedin的azkaban等,提高代碼質(zhì)量和發(fā)動更多人關(guān)注這些軟件,最好的方式是加入apache基金會,成為它的頂級項目),很容易得知。hadoop專門的基金會組織管理和運營,有一整套完善的項目管理流程??梢赃@么說,如果你把hadoop源代碼學(xué)到精通,那么學(xué)習(xí)其他開源軟件,尤其是分布式系統(tǒng),絕對是小case,另外,對你自己從頭寫一個分布式系統(tǒng)也有巨大幫助。
hadoop源代碼中包含著很多有價值的,可以借鑒和學(xué)習(xí)的寶貴經(jīng)驗,比如:
(1)如果自己實現(xiàn)一個高效的RPC框架(hadoop自己實現(xiàn)了一個RPC框架,這個框架由HDFS,MAPREDUCE,YARN和HBASE公用)
(2)如何對單點的服務(wù)實現(xiàn)leader election(包括HDFS,YARN,HBase等都存在單點故障問題,均采用zookeeper實現(xiàn)了準(zhǔn)備切換)
(3)如何實現(xiàn)一個分布式存儲系統(tǒng)和分布式計算引擎
(4)如何設(shè)計一個極簡且抽象度高的編程API(記得MapReduce剛剛發(fā)布時,很多公司對外公布說,自己公司內(nèi)部早就有了類似于mapreduce的框架,一直在用。但mapreduce成熟之后,所有公司都棄掉了自己的框架,轉(zhuǎn)而采用hadoop mapreduce,主要原因是他們的框架抽象度不高,使用起來比較麻煩。雖然現(xiàn)在大家使用mapreduce覺得這玩意非常簡單,但是這是高度抽象后去繁留簡的結(jié)果,如果你自己做一個分布式計算框架,能設(shè)計出這么精簡的編程模型和編程API嗎)。
hadoop現(xiàn)狀:
需要注意的是,hadoop從第一個原型開始,到現(xiàn)在已經(jīng)有多年。目前hadoop代碼龐大,學(xué)習(xí)起來越來越困難,這個跟linux內(nèi)核發(fā)展史差不多。由于hadoop源代碼是很多人貢獻的,里面多多少少存在代碼冗余,且個別功能點的實現(xiàn)比較令人費解。此外,一些hadoop公司的的出現(xiàn),比如cloudera,hortonworks(已經(jīng)上市),使得hadoop更新頻率越來越快,這些公司的絕大部分工程師每天的任務(wù)就是為hadoop貢獻代碼,全部貢獻給社區(qū),這推進了hadoop快速發(fā)展,但同時使得hadoop學(xué)習(xí)成本越來越大,很多中小型公司無法找到合適的技術(shù)人員,不得不反過來向這些hadoop公司求助,給他們交比較昂貴的咨詢費用。
現(xiàn)在每一行hadoop源代碼的提交均要經(jīng)過很多人的review,從代碼規(guī)范到實現(xiàn)方式上,都會有很多人在jira(Hadoop YARN - ASF JIRA)上提出各種意見,估計要改上好幾遍才可能被merge到主干上,整個流程很低效,但是這樣可使hadoop源代碼保持很高的水準(zhǔn)。
想要了解更多關(guān)于大數(shù)據(jù)方面內(nèi)容的小伙伴,請關(guān)注扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育有專業(yè)的大數(shù)據(jù)講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的大數(shù)據(jù)視頻教程定能讓你快速掌握大數(shù)據(jù)從入門到精通開發(fā)實戰(zhàn)技能??鄱W(xué)堂大數(shù)據(jù)學(xué)習(xí)群:209080834。
【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】 【掃碼進入Python全棧開發(fā)免費公開課】
查看更多關(guān)于“大數(shù)據(jù)培訓(xùn)資訊”的相關(guān)文章>