大數據平台開發人員的核心競爭力是什麼?
做大數據平台開發一般對演算法要求不高,但是這些大的框架,每一個都像大的黑盒子,如:spark、hadoop、hive、kafka。我最近在研究kafka,但是僅僅是在會用,會選型的階段。我覺得只要英語ok,完全沒什麼門檻。
想問的問題是:如果想在這個方向上走得更遠,應該怎麼做,我覺得把源碼都擼一遍好像非常不現實,剛入行半年,我scala也不熟悉,有點迷茫,想問問3-5年的從業人員你們怎麼做的?
1.測試,測試,測試,寫code之前想好怎麼測試,分散式的測試是個非常麻煩的問題。
2.硬抗,kafka的複雜度其實還好,這裡面有很多比kafka複雜很多,要習慣一個月讀不懂一大坨code,等到一個半月的時候還是要抗下來。
3.抽象,想想這些人為什麼怎麼寫,如果你可以批判他,不妨大膽批判他。謝邀。
如果你現在就是想對一些比較有名的開源項目加深了解的話,這麼幾個方式可以推薦給你:
1. 看Web文檔:這個我相信可能你已經做過了,但是文檔有一個缺點,就是它只會把一個最終的結果拿給你看,而不讓你看到中間的設計討論過程。就像以前有人評價高斯,說他的論文只會給你看一個最終非常漂亮的結果,但是中間的過程都被他小心翼翼的擦掉了,不留任何痕迹。拿我自己來說,寫Kafka文檔的時候基本都是字斟句酌的,考慮用戶在使用的時候會有什麼問題,但是不會有太多「我們是如何想到要這樣設計的」。
2. 看Wiki網頁:大多數開源項目都有自己的Wiki pages,其實以前很多的討論,被推翻的那些設計方案,介面的修改,都在裡面有存檔。比如:
Kafka Detailed Consumer Coordinator Design
如果你對Kafka了解的話,你就知道這個設計並不完全是最終在source code裡面呈現的,後來又經過一些修改,比如:
Kafka Client-side Assignment Proposal
看過這些Wiki pages你就會對整個設計流程有一個大概了解。
3. 看JavaDocs:以上都是大概了解,具體到每一個class的設計,最好當然是看源代碼,但是比較花時間,而自己實現原型也太慢。其實還有一個方法就是看Javadocs。好的開源項目的Javadocs應該是寫的是很好的,否則不可能被廣泛使用。這裡包括每一個function的用處,如何與其他class做對接等等。
4. 用起來!這是我個人覺得最快的學習方法,因為只有你真正上手用了以後你才會對整個系統,不僅僅是開發方面,還有操作方面有了一個自己的體會。此外就是,不懂就問:)絕大多數開源項目都是有mailing list的,你用的時候碰到exception了可以問,沒有看到expected results也可以問,甚至如果你自己有一個use case,你希望知道該怎麼deploy這個系統達到你的目標都可以問。社區裡面的大多數人都是很友善樂於助人的。多謝你的邀請,我說說自己的看法吧。第一步:對相關開源框架做一下基本了解,可以實現選型。第二步:對自己負責的模塊或者自己感興趣的,可以「正確」使用.第三步:對自己負責的模塊或者自己感興趣的,可以對其實現框架,進行詳細的了解,最好可以實現自己可以畫其框架圖.第四步:如果興趣特別濃厚可以仔細看其詳細實現.但上面都是建立在這些開源有使用場景下,不然學了也就忘了,也不可能深入了解.
手機打字,暫時就說這麼多.
推薦閱讀: