大數據跨界,從這裡開始

文·blogchong

首先,如題,這篇依然是寫給那些從其他領域跨界到大數據領域的朋友的,當然,初入大數據領域,或者對大數據領域有所興趣的朋友,也可一觀。

想起要寫這個話題,已經很久了,直到最近私密群建立起來,才發現這個話題應該是更急切需要被討論一下的。

雖然我對於大數據培訓市場一直不算太感冒,但是,如果說對於那些想要跨界進入大數據領域的朋友來說,不可否認,全面的培訓是最快的方式,最少比自學來的快、更系統。

但我一直對於大部分培訓課程體系的設計不敢苟同,這是重點。

這兩年來,鑒於種種原因,也幫不少初入門或者說初入大數據培訓機構的跨界朋友參考過培訓課程。

基本上課程套路都一樣一樣的:

首先基本的語言基礎來一套,接著是hadoop、mapreduce、hive、hbase、spark、flume、kafka、mahout給來一套,再接著上一系列的演算法課程,最後來點套路的所謂項目實戰。

三四個月的課程,好幾萬的投入,然後就上崗開幹了,細微的區別的在於可能不同課程的課時設置不同,但基本上都得來一個如上全家桶套餐。

先不說其他的,三四個月,得把這個整個「全家桶」給咽下去,還得消化了,簡直了。。。

而在實際的工作中,你能用上其中一到兩種算是正常的,能用上三四種的算是少見的,能碰過過半的說明你可以升級為數據架構師了。

那麼,這樣子培訓的意義在哪呢?不求精而求廣?

關鍵是很多人培訓完了,依然一臉懵逼,感覺自己不知道能幹啥,不知道要幹啥,又或者說不知道企業到底需要什麼人,而自己到底適不適合。

好了,吐槽完畢,正文來了。

我個人認為,給初入大數據領域或者跨界進入大數據領域的朋友灌輸大數據相關的知識,第一件事不是說各種組件框架生態相關的東西,也不是各種編程語言基礎。

而是,了解清除以下幾個問題:

1 大數據領域到底包含了哪些東西,解決了哪些問題?

2 自己的實際基礎是什麼,如何結合自己的基礎以及興趣愛好,在整個大數據領域鏈路中,找到最好的切入點。

只有解決了上面兩個問題,才能給自己最精確的定位,找准方向深入下去。

一個人的精力是有限的,在短短的幾個月時間內,你不可能把所有的東西都學的精通,哪怕連熟練都難做到,僅僅是皮毛而已。

所以,有的放矢,把有限的時間放到該定位的地方上去。

第一個問題,大數據領域的範圍。

現在一說起大數據,簡單起來就是一個詞,但其實這個方向已經可以形成一個技術領域了,包含了方方面面的技術點,也提供了各種不同的技術崗位。

所以,不同的崗位,對應的需求,工作內容都是不同的。

我們可以根據數據從下到上,從無到有,到產生價值整個數據業務流程來拆解,並且與此同時,來看看每個環節我們需要的技術儲備以及能做的事有哪些。

數據的幾大基本業務流程:

收集 -> 傳輸 -> 轉換/清洗 ->存儲 -> 再加工 -> 挖掘/統計 -> 上層應用輸出

總的來說,可以分以下幾個大塊。

第一環:數據的收集

在收集階段,我們來看看數據主要有哪幾種存在方式:

1 第三方開放數據集

2 業務數據

3 服務日誌

4 行為上報數據

首先針對於第三方開放數據,目前爬取第三方開放數據的形式已經逐漸被認可,並且將會越來越多的人以及企業從互聯網開放數據集中獲取原始數據。

所以,針對於開放數據的獲取,爬蟲已經可以單獨形成一個體系了,包括不同的爬蟲框架,以及近年來對於分散式爬蟲的技術需求等,在語言方面主要還是python以及java為主,輔助其他相關腳本知識。

如果數據是業務數據,那麼通常在傳統的路子中,業務數據一般存儲在傳統的資料庫中,那麼,對於傳統資料庫相關的技術知識不可避免的需要有所了解,最起碼簡單的資料庫操作得會吧。

其次,我們需要對數據進行統一化處理,又不可避免的涉及到數據的遷移,即從傳統數據存儲介質中遷移到諸如hadoop生態中,那麼涉及的遷移框架諸如sqoop之類的,又是不能不懂一些。

在語言以及基礎要求上,對SQL相關的知識需要補充,以及linux操作,簡單的java需要掌握。

如果數據是記錄在服務日誌中,那麼,我們需要對linux很熟悉,各種腳本的使用,日誌文件的各種操作,熟悉各種sed、awk工具等,如果體量大,我們還需要把這些日誌文件丟到分散式框架中進行處理、清洗,諸如mr,spark中等。

所以,對於這種數據的處理,我們需要掌握的一方面是linux的熟悉操作、另一方面是一些諸如離線數據處理框架的使用,語言方面還是以java、腳本類語言為主。

最後,如果是數據上報的形式,你需要對整個數據上報的流程熟悉,怎麼進行埋點、怎麼收集上報的數據,上報過來怎麼進行傳輸接受落地,這裡就不多說,最終這種上報過來的數據反倒相對規整。

再來看第二環:數據的傳輸

數據的傳輸到底在什麼時候會涉及到呢?

諸如上面說到的數據上報,在大數據模式下,通常上報過來的數據我們都不會馬上進行落地的,因為涉及到不同部分其效率不一樣,在峰值波動的情況下,直接落地十有八九都會導致系統宕機。

所以,數據的傳輸在大數據領域中有著不可替代的左右,會出現在各種系統耦合之間,一方面用作數據的傳輸,另一方面用作數據的緩衝、系統解耦。

在hadoop生態中,最有名的莫過於kafka與flume的組合搭配了,收集數據,並進行數據傳輸,此外還有不少類似的消息隊列存在,諸如ActiveMQ、阿里的RocketMQ等等。

在這裡,我們需要理解的就是,為什麼要引入這麼一層組件,因為在過去的數據處理模式中,因為數據量的緣故,這一層相對次要。

第三環:數據的存儲

Hadoop生態中最最核心的存儲組件莫過於HDFS了,這是支撐hadoop能夠做大批量數據處理的基礎支撐,便捷而強悍的橫向擴展能力。

除此之外,還有各種基於此之上不同形式的數據存儲方式,諸如hive、HBase、甚至ES、Solr勉強都算,以及不可忽略的傳統類型的SQL存儲方式。

我們需要理解的是,不同的存儲方式應對於實際的應用場景是不同的,HDFS作為最基礎的分散式文件系統,我們就不多說。

諸如,Hive其更作用更多用於類傳統式的SQL查詢操作,其對於效應效率要求並不高,但對於數據規模的支撐性良好;而HBase則更偏向於即席查詢,要求有更高的響應效率,但對於查詢的複雜性支持上則相對較弱。

而我們說諸如ES、Solr都也勉強算是一種數據存儲的組織方式,其實也是有一定道理的,因為他們本身也支持這種分散式的數據存儲,只不過他們是為了應對於自己框架的檢索需求而設計的數據存儲組織。

此外,還有例如Redis,也算是目前大數據生態中不可缺少的數據存儲方式之一,基於內容,應對於高效的數據存儲與讀取,在很多的實際應用場景中都用的到。

第四環:數據的再加工

其實這一層主要要說就是基於Hadoop的MR框架以及Spark,當然,也有其他的一些分散式數據處理框架。

大規模的數據清洗轉換、再加工,都離不開分散式處理框架的支持。

我們需要對雜亂的數據進行標準化、對殘缺的數據進行補全、對原始的數據進行深度加工提取高級屬性等等。

簡單的,我們可以通過一些處理腳本來做,但針對於大規模的數據量級,我們依然需要依賴MR或者spark這種框架來處理。

而針對於一些實時的場景,我們也不可避免的需要掌握諸如storm以及spark streaming之類的實時框架。

所以,在這一環,我們不止需要了解不同的大數據處理框架,我們還需要在基於框架的基礎上,做數據應用開發,進行數據處理。

通常,在這個環節中,我們需要對於Linux比較熟練,最起碼能夠熟練的操作伺服器,操作不同的框架系統,其次,我們在此基礎上做應用開發,腳本以及java語言是必須精通的,如果使用spark等框架,對於scala還是有一定要求的。

最後一環:數據應用價值輸出

前面我們做了很多事,包括數據的收集、傳輸、處理、存儲等等,但這些都是手段,都不是我們的目的。

我們的目的是讓數據產生價值,這也是企業做大數據的核心目的。

我們可以用數據來做什麼:

1 基於統計分析、數據預測,做數據化運營、決策,提升效率、效果,這是最常見的應用場景。

2 做推薦,在主體之外產生衍生價值,提升單位價值轉換。

3 畫像體系,至於說畫像能做什麼,只要能做的准,能做的事可多了。

4 基於數據化、智能化的搜索。

5 實現業務的數據化、自動化、智能化。

6 ...

在這一環中,包括的東西太多太多,包括大數據培訓市場中主流方向:數據分析師,基本屬於偏業務分析的路子。

還有那些培訓的演算法之類的,也是為這一環服務的(但是,單純了解演算法是什麼,個人認為是沒啥卵用的)。

我們先來分析一下關於大數據分析這個方向。

我一直不認同很多大數據培訓機構一直玩命給跨界的朋友培訓python、R,認為那就是數據分析師的最最核心的技能了。

其實不然,在大數據模式下,諸如R這種工具其實本身的局限性已經很大了,我們需要更多能夠容納全量數據分析挖掘的工具,而不是抽樣。

哪怕是你把Hive用的很溜,對於統計分析的理論,以及對於業務的理解能力很強,我認為可以完爆那些傳統分析工具用的溜的人,最起碼在這個領域中,這種需求會更多。

所以,假設大數據培訓機構想要培訓數據分析師,盡量還是往大數據模式下的數據分析路子去走,及時培訓R之類的工具,可以結合Hadoop-R、Spark-R之類的來做培訓,而Hive這種工具更是不可缺少的,此外,對於統計原理之類的理論知識也需要進行額外的補充。

最後,對於演算法來說,單純的培訓演算法其實沒啥卵用,一方面本身演算法這東西基礎要求略高,單純的從培訓的角度來說,了解一個演算法是什麼是次要的,更重要的是要貫穿實際的業務場景與演算法模型的映射,以及各種分散式機器學習庫的使用,這就夠了。

單純的去研究演算法,別扯了,太不切實際,學完了妥妥的還是一臉懵逼,如果不把實際業務場景結合起來。

解決第二個問題,如何做選擇。

其實如果你對第一個問題,整個流程有足夠熟悉的情況下,這事就好辦多了。

清楚每個節點需要哪些技術儲備,這個節點到底負責哪些事務,在整個數據生態中起到什麼樣的地位。

結合自己已有的基礎儲備,去衡量如果自己想要涉足某一個節點,需要額外補充多少的知識才能支撐的起工作需求。

然後,進行選擇,然後有所偏重的去理順自己的技術結構,額外去深入掌握相關的技術。

最起碼你要知道,你在學習spark,你要知道spark在整個數據生態中、實際的業務中,是做什麼的,是不是可替代的。

所以,當你看到招聘網站上各種大數據相關的JD時,諸如:大數據開發工程師、大數據工程師、hadoop工程師、數據開發工程師、數據分析師、大數據分析師、數據挖掘工程師、演算法工程師、ETL工程師等等。

你需要能夠做出分辨,這些崗位到底是屬於什麼定位,是偏平台搭建、是偏數據架構、是偏數據處理、是偏業務分析、是偏數據業務挖掘、是偏演算法研究等等,結合自己掌握的技術點,才能做更好的選擇。

當然,其中的門門道道很多,一篇也說不清楚,但這篇文章的主要目的是說,我們需要對於大局有所了解,知道是什麼,想要獲得什麼,知道將要幹什麼。

而不是悶頭把「Hadoop全家桶」來一套,要知道,技術框架這東西是很容易被替代的,尤其是大數據領域,相關技術迭代太快,所以我們還是需要結合實際的業務來理解大數據,以及掌握快速學習的能力,這才是正道。

關於選擇方向這裡,做一點補充,針對於哪些跨界想進入數據挖掘或者演算法領域的朋友。

個人認為如果你想進入大數據領域從事數據挖掘相關的工作,最好建議有以下兩種基礎最好,有其一即可:

1 有良好的演算法理論基礎,通常是需要相對較好學歷以及對口的在校研究方向。

2 在大數據處理領域有足夠的數據處理經驗,對業務場景足夠清楚,對分散式框架和工具能夠熟練使用。

對於前者,工程化能力可能相對較弱,但可以專註於演算法研究;對於後者,則可以偏重業務,注重如何將實際的業務問題轉換為演算法模型問題。

兩者側重點不同,一個明確模型,研究是模型更加契合業務的問題,研究的是如何提升已知問題的精準問題;另一個是如何將未知業務映射成已知的演算法數學模型,需要對業務足夠了解、敏感,並且能夠進行工程化。

關於這兩者的區別,有時間再開單章說道了,這裡就不過多細說。總之,對於普通跨界的來說,建議不要選擇這種門檻略高的細分方向,因為後續你的找工作風險略高。

最最後,關於大數據培訓的出路,個人建議選擇的時候盡量選擇能夠讓你獲得實習或者正式工作機會的機構,因為跨界的第一份工作算是個跳板,很重要,也少有選擇,所以需要把握住機會,如果有機會留下來,甭管他是不是外包、實習是不是有工資拿。

這只是一個跳板而已,此後,天高任鳥飛,海闊憑魚躍,靠自己了,培訓機構只是讓你有入門的機會而已,所以要把握住。

所以,培訓機構最大的好處是讓你有機會進入這個領域,真正的累積需要入門之後在實際的工作中自己把握機會多學習!

最後,發現個人私密群除了能省事(省自己的事,省群友的事),還能衍生不少值得探討的話題,都是與群友一起討論聊天時衍生出來的,比如:

1 關於小公司要不要涉及大數據的話題

話題原文:我經常聽一些產品這樣說,運用大數據的公司pv要達到100萬。

2 關於大數據與人力資源的結合的話題

話題原文:目前大數據在廣告、電商,甚至是金融方面都已經有不少的落地點,這兩年大數據開始與人力資源市場開始嘗試結合。

下次,打算就這兩個話題選個一個說道說道了,或者有其他話題可以討論的,也可以留言。

相關擴展閱讀:

《寫給想要跨界、初入大數據領域,以及想了解數據業務模式的朋友》

《2017年,這兩個大數據崗位一定會火》

《你們是不是真的缺大數據工程師? 》

《大數據職位畫像-看看你是不是白混了賊多年!》

最後,廣告Time(不想看的盆友可以直接關閉啦):

那就是,我的個人乾貨私密群正式開啟招募啦(其實是年前幾天開始的,現在已經有群友二十幾號人了),群名「【數據蟲巢】乾貨私密群」。

啟動私密群招募的原因:

一直以來很多都有不少剛入行或者想跨界大數據的朋友通過各種渠道,包括公眾號、微信、簡書等找到我諮詢相關問題。人少時還能應付過來,但隨著人越來越多,我的個人精力有限,而且很多問題都是重複性的。

所以,趁著2017年伊始,正式招募私密群,共性問題一起分享,也有助於幫助大伙兒快速掌握自己要了解的信息。

先來個個人的正式介紹吧:

黃崇遠,花名博客蟲,「數據蟲巢」個人品牌所有者(官網數據蟲巢 - 提供專業的大數據解決方案、公眾號、簡書、博客),近6年的大數據行業經驗,線下組織過大數據技術沙龍,線上授過大數據課,目前於深圳任職於一B輪創業公司大數據主管。

這個群適合哪些朋友:

剛入門大數據領域,想跨界大數據領域;職場有疑問的童鞋;想要做企業大數據諮詢的朋友。

這個群你能收穫什麼:

更有深度的問題諮詢答案,各種行業建議觀點,工作經驗看法分享,第一手公眾號文章,以及不定期會邀請同行朋友來做技術分享(當然也包括我自己),以及線下的交流活動。

如何入群:

留言加我微信,給我發99元的紅包(我不會不好意思收你紅包的,因為我感覺你會覺得值得的),然後私密我備註,我拉你入群,有效期是2018年1月,到期後你可以選擇續費,也可以選擇離開,目前是這個價,保證不降價,但不保證不提價,中途不予退款(想清楚再入)。

所以,考慮清楚你是不是真的要加入,考慮清楚了再做決定!

2017年,我相信大數據領域會有更多機會,當然也會更有挑戰,加油!


推薦閱讀:

利用R語言繪製世界航班路線圖
如何對抗「大數據殺熟」?
38套大數據,雲計算,架構,數據分析師,人工智慧,機器學習,深度學習,項目實戰視頻教程?
利用大數據促進可持續發展
千萬不要錯過!ICLR-2018精品論文解析

TAG:互聯網 | 大數據 | 數據挖掘 |