扣丁學堂大數據培訓簡述如何高效的閱讀hadoop源代碼

本篇文章扣丁學堂大數據培訓小編給讀者們分享一下如何高效的閱讀hadoop源代碼,對大數據開發感興趣的小夥伴就隨小編來了解一下,但願對小夥伴們有所幫助。node

首先,必需要說,對於互聯網工程師而言,無論hadoop源代碼質量怎麼樣,是好仍是差,咱們都不得不看,別無選擇,由於hadoop已逐漸成爲大數據代名詞,成爲互聯網公司的基礎設施和軟件,和傳統的操做系統同樣基礎而又重要。另外,有人會問,對於只是使用hadoop的人,有沒有必要學習hadoop源代碼?這個取決於你我的的興趣,追求和工做內容。linux

通常而言,hadoop職位分別內核開發工程師(修改hadoop源代碼,打patch,加feature等),hadoop運維工程師(遇到hadoop服務問題,好比namenode掛了,主備切換失敗,能夠採起相應的措施快速解決),hadoop應用開發工程師(在hadoop基礎上寫一些app,好比寫HQL生成報表,寫一些數據挖掘算法等),對於前兩個崗位,若是你是一個有追求的工程師的話,須要好好看源代碼,尤爲是運維工程師,不能僅僅依賴於搜索引擎和各類雜七雜八的文檔,由於hadoop的不少東西,好比參數配置(hadoop中有幾百個配置參數),跟hadoop版本相關,而hadoop版本迭代和發佈頻繁,不少文檔和論壇裏的帖子已經失效而沒法及時更新,所以,一味的依賴這種二手資料,只會讓你浪費更多時間。 這時候,最好的方式是查看源代碼,找到相關的類,看一下怎麼實現的,問題能夠立刻解決。你能夠把hadoop源代碼當作一本巨大的參考手冊,遇到問題,就翻到可以給你帶來答案的「頁」中。算法

hadoop源代碼:apache

理解了相關背景後,接下來聊聊hadoop源代碼質量。編程

Hadoop源代碼質量絕對是開源軟件中的佼佼者,從代碼規範,到代碼組織,再到代碼實現技巧。這一點,能夠與各類雜七雜八的公司本身開發的軟件做對比(提一點,即便是很是有名的公司,掛在本身名下的開源軟件代碼質量也不高,好比facebook的presto,好比linkedin的azkaban等,提升代碼質量和發動更多人關注這些軟件,最好的方式是加入apache基金會,成爲它的頂級項目),很容易得知。hadoop專門的基金會組織管理和運營,有一整套完善的項目管理流程。能夠這麼說,若是你把hadoop源代碼學到精通,那麼學習其餘開源軟件,尤爲是分佈式系統,絕對是小case,另外,對你本身從頭寫一個分佈式系統也有巨大幫助。微信

hadoop源代碼中包含着不少有價值的,能夠借鑑和學習的寶貴經驗,好比:app

(1)若是本身實現一個高效的RPC框架(hadoop本身實現了一個RPC框架,這個框架由HDFS,MAPREDUCE,YARN和HBASE公用)框架

(2)如何對單點的服務實現leader election(包括HDFS,YARN,HBase等都存在單點故障問題,均採用zookeeper實現了準備切換)運維

(3)如何實現一個分佈式存儲系統和分佈式計算引擎分佈式

(4)如何設計一個極簡且抽象度高的編程API(記得MapReduce剛剛發佈時,不少公司對外公佈說,本身公司內部早就有了相似於mapreduce的框架,一直在用。但mapreduce成熟以後,全部公司都棄掉了本身的框架,轉而採用hadoop mapreduce,主要緣由是他們的框架抽象度不高,使用起來比較麻煩。雖然如今你們使用mapreduce以爲這玩意很是簡單,可是這是高度抽象後去繁留簡的結果,若是你本身作一個分佈式計算框架,能設計出這麼精簡的編程模型和編程API嗎)。

hadoop現狀:

須要注意的是,hadoop從第一個原型開始,到如今已經有多年。目前hadoop代碼龐大,學習起來愈來愈困難,這個跟linux內核發展史差很少。因爲hadoop源代碼是不少人貢獻的,裏面多多少少存在代碼冗餘,且個別功能點的實現比較使人費解。此外,一些hadoop公司的的出現,好比cloudera,hortonworks(已經上市),使得hadoop更新頻率愈來愈快,這些公司的絕大部分工程師天天的任務就是爲hadoop貢獻代碼,所有貢獻給社區,這推動了hadoop快速發展,但同時使得hadoop學習成本愈來愈大,不少中小型公司沒法找到合適的技術人員,不得不反過來向這些hadoop公司求助,給他們交比較昂貴的諮詢費用。

如今每一行hadoop源代碼的提交均要通過不少人的review,從代碼規範到實現方式上,都會有不少人在jira(Hadoop YARN - ASF JIRA)上提出各類意見,估計要改上好幾遍纔可能被merge到主幹上,整個流程很低效,可是這樣可以使hadoop源代碼保持很高的水準。

想要了解更多關於大數據方面內容的小夥伴,請關注扣丁學堂大數據培訓官網、微信等平臺,扣丁學堂IT職業在線學習教育有專業的大數據講師爲您指導,此外扣丁學堂老師精心推出的大數據視頻教程定能讓你快速掌握大數據從入門到精通開發實戰技能。

相關文章
相關標籤/搜索