網易大數據工程師學習之路分享

之所以忽然提筆,是因爲這段時間正好在業餘時間系統地學習Spark,整個學習思路讓我想起了大學期間學習《模擬電子電路》這門課的一些方法,個人覺得可以作爲一個學習模板來和大家一起交流分享(本文只談如何系統高效地學習一項技能或者一門課程,抱有突擊學習目的的請繞道)。

無論是學習Spark技術還是學習《模擬電子電路》課程,總結起來,大體都經歷了這麼幾個階段:

1. 初識(10%):系統地過一遍整個內容,《模電》就是大體聽一遍老師的課程,Spark就到處看看相關的資料,在測試環境寫一點測試代碼。這個過程不需要特別仔細,也不需要多麼深入的理解,只需要有個基本的概念瞭解即可。通常初識階段是沒有辦法建立起知識的體系結構的。

2. 搭建知識體系(20%):初步瞭解基本概念之後,需要再過一遍所有內容,這次同樣不需要關注細節,但是需要重點關注章節體系以及章節核心點:

【大數據開發學習資料領取方式】:加入大數據技術學習交流羣458345782,點擊加入羣聊,私信管理員即可免費領取

這門課程有哪些章節,比如Spark整體可以劃分爲Spark內核原理、Spark運帷優化、SparkSQL等幾大部分。其中Spark內核原理可以劃分爲RDD介紹、DAG介紹、Spark任務調度、Spark存儲管理系統、Spark資源管理系統等幾個模塊,Spark運維優化分爲Spark部署、Web UI等

進一步,需要針對每個模塊列出核心點,不需要多,每個章節只需要列出三四個核心點即可,比如Spark資源管理模塊需要關注靜態資源管理策略以及動態資源管理策略

這樣處理之後,厚厚的Spark書籍/《模電》就可以變成薄薄的幾頁紙,一頁紙對應一個具體模塊,記錄該模塊的核心點。猶記得當年考試前別的同學在拿着一本厚厚的模電書翻來翻去的時候,我就只需要拿着幾頁紙複習(而且單科成績全系前茅)。

第二步是整個方法論中的重中之重,建立知識體系結構,構建知識樹譜對知識的深入理解至關重要。只有擁有了全局的視野,你才知道現在自己學習了哪些,還有哪些沒學。就像蓋別墅,你需要首先畫圖紙,有個全局的設計,沒有人會今天想起來東邊蓋個花園,明天在西邊搞個游泳池。很多同學在學習一門技能的時候總是這裏看點資料,那裏學點優化方法,缺乏全局的視野,缺乏系統性,學到的東西永遠支離破碎。而此時的你,已經可以滔滔不絕、由淺及深地概括一本書了。下面兩圖是筆者學習Spark內核時爲自己列的一個提綱以及優化章節的部分核心點:

webp


webp

3.  深入探索(20%):知識體系建立起來之後,需要更加深入。此時可以丟掉課本,只需要對照着每個章節的核心點一個一個重點擊破,比如現在要深入學習Spark資源調度模塊中的動態資源調度,那就利用所有可以利用到的資源(google、官方博客、spark文檔、youtubo、jira、源碼等)檢索動態資源調度的相關信息,深入理解其工作原理。這樣一個一個擊破之後整個知識體系就更加豐滿。這個階段需要嚴苛的工匠精神,需要你搜集各種資料去了解,去思考why。至此,在理論層面你已經是所謂的”專家”了。這個階段有兩點建議:

(1) 經典內容檢索:這個階段拼的是各位的檢索能力和閱讀理解能力,在此強烈推薦技術人多關注國外技術大牛的博客以及官方博客、文檔,比如Spark可以關注的材料主要有:

官方文檔:http://spark.apache.org/docs/latest/index.html

官方博客:https://databricks.com/blog

Youtube視頻(比較多):https://www.youtube.com/watch?v=cs3_3LdCny8

國內大神:https://github.com/JerryLead/SparkInternals/tree/master/markdown

(2)畫圖整理:網絡上關於Spark的內容有很多很多,經典的內容更不少,一般遇到經典內容之後都會一口氣讀完,再加入書籤。然,久而久之,很多內容都會慢慢模糊,當你再想去查的時候已經不知道是哪個博客的內容了,相信很多人會有這樣的苦惱。針對這樣的問題,需要將一些自己體會非常深刻的內容記錄下來,建議使用畫圖工具,俗話說一圖勝千言,比如學習SparkSQL時爲了理解SQL的整個解析過程,筆者就簡單地將一個簡單的SQL的執行計劃通過幾張圖表示出來:


webp

4. 實踐探索(30%): 第三步完成之後,相信你已經可以就這項技能和別人談笑風生了,但也就僅此而已。一旦別人問你一個線上問題,相信你就會從滔滔不絕變得支支吾吾,因爲你缺少實踐。當然,只有在知識體系構建完成後的實踐纔是真正意義上的實踐。有理論依據作爲支撐,實踐纔有更多意義。實踐是一個遇坑填坑的過程,沒有遇到坑也不能稱爲實踐。因爲只有遇到問題,你纔會完整地將監控、日誌信息利用起來追蹤整個系統工作流程,你纔會真真切切地去想如何通過修改配置、修改源碼來進一步改造它。

這個階段,主要考察你解決問題的能力,一般來說通常就三板斧:監控、日誌和源碼。監控分爲硬件監控以及業務監控,兩者都需要看懂並會分析。日誌也有很多,比如業務日誌、GC日誌等,需要能力根據異常猜測問題原因並進行驗證。如果前者都失效,就只能分析源碼。問題分析是第一步,更重要的,你還要提出一個高效地解決方案,這個可能是領導/面試官更看重的

實踐探索不可能一撮而就,需要不斷的踩坑填坑,所以需要一顆大心臟。

5. 分享交流(20%): 上面四步都是你自己對知識的理解,你還需要看看同行是如何理解的。實踐結束之後一定記得需要以博客的形式系統完整的將這個模塊完完整整、成體系地、由淺及深地進行復盤整理、分享交流!這個階段可以讓你認識更多圈子裏的朋友,一起交流探討才能不寂寞

學習有無數種方法,適合自己的纔是最好的。本文只是筆者對學習方法的一點思考,分享出來一方面是爲了更好地完善自己,另一方面也是希望能夠給大家提供參考。當然,學習從來不是一件輕鬆的事情,但也從來不是一件艱難的事情。共勉。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章