運維必知 | 從底層到應用,入門大資料必備技能彙總!

Linux雲端計算資料自學發表於2018-12-28

640?


概述:謹以此文獻給對資料有熱情,想長期從事此行業的年輕人,希望對你們有所啟發,並快速調整思路和方向,讓自己的職業生涯有更好的發展。 根據資料應用的不同階段,我將從資料底層到最後應用,來談談那些資料人的必備技能。



1、大資料平臺

640?wx_fmt=gif


目前很火,資料來源頭,各種炫酷新技術,搭建Hadoop、Hive、Spark、Kylin、Druid、Beam~,前提是你要懂Java,很多平臺都是用Java開發的。


目前很多企業都把資料採集下來了,對於傳統的業務資料,用傳統的資料是完全夠用的,可是對於使用者行為和點選行為這些資料或者很多非結構化的資料,文字、影像和文字類的,由於資料量太大,很多公司都不知道怎麼進行儲存。


這裡面要解決的是實時、近實時和離線的大資料框架如何搭建,各資料流之間如何耦合和解耦,如何進行容災、平臺穩定、可用是需要重點考慮的。

640?


我的感覺是:最近兩三年中,這塊人才還是很稀缺的,因為大資料概念炒作的這麼厲害,很多企業都被忽悠說,我們也來開始進入大資料行業吧。進入的前提之一就是需要把資料儲存下來,特別是很多使用者行為方面的資料,對於業務的提升比較明顯的,如果你能很好的刻畫使用者,那麼對你的產品設計、市場營銷、開發市場都是有幫助的。現階段,很多公司都要做第一步:儲存更多的資料。這也是這塊人員流動性比較高的原因,都被高薪挖走了。


和傳統的SQL不同的是,針對大資料量的非結構式資料,我們所想的就是:用最廉價的成本儲存資料同時能夠達到容災、擴充套件性高、高效能、跨域,從目前來看,分散式已經被證明是個很好的一個方式。


另外,雲端會是個很好的方向,不是每個公司都養得起這麼多這麼貴的大資料平臺開發人員和運維人員OPS,從事這個行業的我們要有很好的危機意識,及時貢獻出自己的價值,積極主動的學習新技術、否則就可能被淘汰了。


此外,花點錢把資料託管給雲服務提供商是對於創業公司或者一些傳統的企業來說是個很好的思路,這樣能夠最快速的確定資料對你的價值是什麼,而不用採購這麼多的伺服器、僱傭這麼多的運維人員和網站開發人員。


說了以上這些,主要是想給未來會從事這塊的人或者想儲存資料的公司一點方向。我自己不做這塊,體會不深,大家看看就行。


這塊工作最被吐槽的一點就是:Hive速度好慢,SQL查詢好慢,叢集怎麼又掛掉了,hadoop版本升級後,怎麼資料跑出來不對了等等。


因此,在這個領域內工作,需要有強大的攻堅能力,並且還需要有快速定位和解決bug的能力,因為有很多工具都是開源的。因為是開源的,所以你們懂得,各種坑爹,甚至出現無法向下相容的情況,所以需要強大的Java開發能力。


如果想在這塊做的很好,還需要有整個系統架構的設計能力、比較的強的抗壓能力和解決問題的能力、資源收集的能力,可以打入開源社群,這樣就可以隨時follow最新的潮流和技術。

2、資料倉儲-ETL

640?wx_fmt=gif


確實做倉庫的人很辛苦,單單Oncall就會讓人望而卻步。有很多資料庫工程師,晚上睡覺的時候經常被Oncall電話吵醒,因為資料流程出問題,需要第一時間去排查,是哪個資料來源出問題,並且要立即解決,否則整個資料流程都會受到影響。


如果資料流程受到了影響,你就可能會被大領導一言不合叫到辦公室說:我要的資料怎麼還沒有準備好,我的業務報表今天怎麼沒有發出來。


通過上面這個情景,我們可以知道:這是個很重要的崗位,因為資料流程很重要,決定了資料從源頭雜亂無章的狀況,通過ETL之後變成了整齊的資料,這些整齊一致性的資料可以讓你很方便地把各業務的統計結果計算出來,並且能夠統一口徑。要不然就會變成有幾個部門,就有幾種統計結果,到時候A部門說業務增長了5%,B部門說業務漲了10%,OMG,到底信誰。


至少在以下幾點上,我覺得資料倉儲人員應該要做好:

  • a、資料字典的完整性,用的人都希望能夠清晰的知道這個欄位的邏輯是什麼。欄位要保持很好的一致性,不要同樣一個欄位在不同表裡有不同的定義。

  • b、核心流程的穩定性,不要讓每天訂單主表能夠使用的時間很不穩定,有的時候很早,有的時候要中午才出來,如果不穩定就會導致使用資料的人對你很沒有信心。

  • c、倉庫版本迭代不要過於頻繁,要保持不同版本之間的相容性。不要做好了倉庫1.0,很快就把原來的推倒重來,變成了2.0。在資料倉儲中需要考慮到延續性,主表的變動不要太頻繁,否則使用的人會非常痛苦,好不容易才用習慣了1.0的表結構,沒辦法這麼快進行切換。簡單地說,要能向下相容。

  • d、保持各業務邏輯的統一性,不要出現同樣的業務邏輯,同一個組別的人統計出來的結果不同。原因在於共同的邏輯沒有落地成通用的東西,所以導致每個人寫法不同。這點其實需要特別注意。


針對以上,這個崗位的技能要求是:不要成為僅僅會寫SQL的人,現在工具都很發達,如果你的技能很單一的話,那麼可替代指數是非常高的,並且你自身也沒有什麼成就感。這裡並不是說會寫SQL的人很low,只是說應該多學一些技能,否則會很危險。


倉庫人員應該要常常思考,如何進行架構設計是最合理的,你要考慮是否需要欄位冗餘、行儲存還是列儲存、欄位如何擴充套件最有效,熱資料和冷資料如何拆分等,所以需要有架構思維。


技能上,除了SQL熟練之外,還需要知道如何寫Transform,MapReduce,因為有很多業務邏輯用SQL實現起來非常複雜,但是如果你會其他指令碼語言,那麼就能給你提供便利,讓你的效率提升很多。另外好的倉庫人員需要寫Java或者Scala,通過寫UDTF或者UDAF來提升你的效率是很有必要的。


資料倉儲人員也應該常常考慮自動化和工具化方面的事情,需要很好的工具或者模組的抽象能力,動手實現自動化的工具來提高整個組織效能。針對經常碰到的資料傾斜問題,需要很快定位問題並進行優化。


說完了資料儲存這塊,接下來是資料應用的幾個關鍵職位,在此之前,我想說資料應用的一個最關鍵的前提是:資料質量、資料質量、資料質量!!在每次闡述你的觀點、分析結論或者用演算法的時候,都需要先檢查,源頭資料正確性,否則任何結論都是偽命題。


3、資料視覺化

640?wx_fmt=gif


這是個很炫的工作,最好是能懂點前端,比如js。資料視覺化人員需要有很好的分析思維,不能為了炫技而忽視對業務的幫助程度。因為我對這個崗位客串的不多,所以沒有特別深入的感悟,不過我覺得這個崗位需要有分析的能力,才能把視覺化做好。


另外一方面來說,做資料應用的人都應該懂點資料視覺化,要知道觀點表達的素材順序是:圖片>表格>文字,一個能夠用圖片來闡述的機會千萬別用文字來描述,因為這樣更易於讓別人理解。要知道,給大領導講解事情的時候,需要把大領導設想成是個“資料白痴”,這樣才能把一件事情說的比較生動。


4、資料分析師

640?wx_fmt=gif


現在對資料分析的需求是很大的,因為大家都想著說:資料有了,但是能做些什麼呢?這就需要有資料分析師,對資料進行分析和挖掘,然後做資料應用。


對資料分析師吐槽最多的是:你分析出來的不就是正常的業務邏輯嗎,還需要你分析什麼?或者是你分析的結論不對,跟我們的業務邏輯不符合。特別是:ABTest的結果和當初設定的預期不相符合的時候,分析師會常常被拉過去說:分析一下,為什麼我的AB實驗結果不顯著,裡面肯定有原因的。


很多時候,寶寶的心裡苦啊,你說這個轉化率下降了,從資料上可以看出哪個細分渠道下降了,至於為什麼客戶不下單,我們得去使用者去,很多時候,資料上也體現不出來為什麼,只能告訴你現狀是什麼。


如果你一直在寫分析報告,給結論中,持續周而復始,沒有直接在業務中體現成績的時候,資料分析師們該醒醒了,你該想想這個是你要的崗位嗎?


對於資料分析師的定位:個人認為,成為優秀的資料分析師是非常難的,現在市面上也沒有多少優秀的分析師。資料分析師的技能要求,除了會資料分析、提煉結論、洞察資料背後的原因之外,還需要了解業務,懂演算法。只有這樣,當面對一個業務問題時,資料分析師們才可以針對問題抽絲剝繭,層層遞進去解決問題,再根據定位的問題進行策略的應對,比如是先做上策略進行測試還是應用演算法進行優化,用演算法用在哪個場景上,能不能用演算法來解決問題。


一個優秀的資料分析師,是個精通業務和演算法的全能資料科學家,不是那個只會聽從業務的需求而進行拉資料、做報表、只做分析的閒雜人等。我們都說分析要給出結論,優秀分析師的結論就是一個能解決問題的一攬子策略和應對措施,同時很多需求是分析師去主動發現並通過資料來挖掘出來的。


從上述描述中,可以看到對資料分析師的要求是:會寫sql拉資料,精通業務、會資料洞察、精通演算法,主動性強,要求還是很高的。


如果你一直只是忙於應付日常分析需求,熱衷於寫華麗的報告,那麼你要記得,你很危險,因為會有一堆人在那裡質疑你存在的價值,特別是小公司。因為資料人員的薪資是個不小的支出。


大部分不落地的分析都是偽分析,有一些探索性的可行性研究可以不考慮落地,但是其他的特定業務需求的分析都需要考慮落地,然後通過實踐來反推你的作用,如此反覆,才能慢慢的給你價值的肯定,同時提升你的分析技能,也只有這樣才能證明你作為分析師、資料落地者的價值。


5、資料探勘/演算法

640?wx_fmt=gif


這塊的話,經過這三年的摸爬滾打,感觸蠻多的。體會比較深的吐槽主要有以下幾點:

一個規則搞定了,還用什麼演算法。

你的準確率怎麼這麼低?!

你的準確率可以到99%嗎?

你的推薦有價值嗎?你不推薦客人也會下那個產品的訂單的。

幫我做個大資料預測他想要什麼?


很多時候,不同的場景對準確率的要求是不同的,所以在一定合理的場景下和業務進行據理力爭是必要,不要害怕讓業務吐槽,更多的時候管理好他們的預期。


有些場景下,推薦的價值在於『長期復購率』,所以不要每次都盯著ABTest的轉化率來說事,讓客人的費力度降低也是很有前途和前景的。一個智慧的產品會讓客人用起來愛不釋手,雖然在這一次的轉化中沒有明顯的差別,但是觀察長期復購率才能體現價值。特別是要區分:高頻和低頻產品。頻次比較低的產品就特別難體現出短期價值。


對於這個崗位的技能要求來說,沒有要求你一定要從零開始實現所有的演算法,現在有很多現成的演算法包進行呼叫。最基本的要求是,你要知道每個場景會用到哪個演算法,比如分類場景,常用的分類演算法就有LR/RF/Xgboost/ET等等,此外,你還要知道每個演算法的有效優化引數是什麼、模型效果不好的時候怎麼優化。還需要有演算法的實現能力,語言方面可以用Scala/python/R/Java等。我們常說:工具不重要,重要的是你玩工具,不是工具玩你。


另外針對有監督式學習演算法,演算法工程師最好有很好的業務sense,這樣在feature設計的時候才能更有針對性,設計的feature才有可能有很好的先驗性。


6、深度學習(NLP,CNN,語音識別)

640?wx_fmt=gif


這塊我沒具體商用過,只是動手實踐過。個人感覺商業化是重點吧,特別是大家都在觀望說你的chatbot很有用啊,可是siri做了這麼久,最後反響也一般。


現在客服機器人又很火,大家又在一通吐槽說,這個上下文理解的太差了,機器人的語義識別做的怎麼這麼差。誰做誰知道,對於中文的語義識別,難度比國外的難多了,因為中文的一種否定說法有太多種變體,你不知道我們會說哪種。


另外,常常有人吐槽說,你這個CNN這麼複雜,我線上需要滿足100ms內返回,搞的這麼複雜,實時呼叫怎麼整,肯定來不及了,最後只能考慮offline預測了。常常說這話的人,是不會自己寫底層程式碼的,很多時候我覺得:不是你沒有解決問題的辦法,而是你沒有去思考怎麼解決問題,心智決定了你的產出。


整體來說,這塊對個人的綜合素質要求是很高的。如果你只是想簡單利用現成的Model,提取中間層的特徵,然後再套用其他的機器學習模型進行預測的話,倒也能很好的解決一些現實中的公司應用,比如yelp的圖片分類。


不過,嚴格來說,這個不算是做深度學習的人,因為真正玩DL的人,是需要自己動手建模型,調引數,改symbol的,所以他們的程式設計能力是很強的,這點上,我一直都高山仰止。特別是一些創業公司,對於這個崗位的程式設計能力要求很高。如果你面試創業公司後沒有下文了那就表示:你很優秀,但是不一定適合我們公司,因為我們要找的程式設計能力很強的人。


這塊我不專業,所以就點到為止,不說太多。個人認為,在這塊上需要有比較強的演算法改造和優化能力,儘量的提高演算法預測的速度,同時不斷的提高演算法的外延性提高精度,目前整個行業也都是朝著好的方向在發展。如果有很多人看到這塊行業開出來的高工資,記得和招聘上的要求核對一下,自己哪塊技能需要補充。這樣你才能成為人中之鳳。


對於未來,一片光明,對於未來,甚是期待,對於未來,一切可能。

總結

640?wx_fmt=gif

以上說了這麼多,嘮叨了這麼多,其實核心就是:如何用資料創造價值,如果你沒有用資料創造價值的能力,那麼就只能等著被資料淹沒,被資料拍死在職場上,早早到達職業的天花板。


體現資料價值的層面上,越往資料應用層靠攏,對資料產生價值的要求就越高,從事這塊領域的人要常常自省是否有好的商業Sense,畢竟在工業界,沒人關心你是否比傳統的baseline提高了一個百分點,他們關心的是你提高了一個百分點之後,對公司的價值是什麼。


而越往底層那塊,倒也沒有強制要求和業績繫結在一起,更多的是從流程上進行約定,對於這塊的價值體現,主要從技術層面上的創新為主,你如果解決了現存架構的問題,那麼你就可以成為一個大牛,所以多學學程式設計吧,別太約束自己,故步自封。

作者:巴山老爹

來源:https://www.evget.com/article/2017/5/18/26264.html


雲端計算免費課程火熱開講中,5天運維經典課程免費學,會雲端計算的運維人才到底需要掌握哪些技術,未來前景發展怎麼樣?跟隨行業大咖一起剖根究底,點選文末“閱讀原文”長按下方二維碼即可報名免費課程抓住今年最後一次免費學習的機會,逆襲2019~~

640?wx_fmt=png

PS:記得查收小編送你的免費大禮包呦~

福利 | 一萬多套PPT模板等你免費來拿!無條件領取!

免費送 | 1000多套簡歷模板免費拿,附贈簡歷製作教程!

免費領 | 《Shell指令碼 100例》電子書免費拿,運維必備乾貨~

640?640

▼▼點選【閱讀原文】,5天運維免費課程,開講在即!

相關文章