當前位置:
首頁 > 知識 > 數據工程師該如何入門?

數據工程師該如何入門?

前言

最近發現身邊有不少小夥伴想轉行做數據工程師,聊天的過程中發現大家對該如何入門有很多迷茫的地方,周末寫篇博客記錄一下。

哪些人適合繼續閱讀

數據工程師該如何入門?話題有點大,而且每個人的理解都很不一樣,因此我們會先限定一下會對這個話題感興趣的人群:

做了幾年其它軟體開發,發現大數據方向更有前景

在校的童鞋,畢業後想搞數據開發,但是學校沒相關課程

沒搞過軟體開發,對之前的工作沒信心想搞互聯網,發現大數據方向挺不錯

本文結構

前面已經限定了一個大致的話題範圍,下面介紹一下主要的文章結構:

數據工程師的日常工作,或者是什麼是數據工程師

數據工程師需要具備什麼技能

該怎麼學

0x01 數據工程師的技能樹

1. 什麼是數據工程師

數據工程師這個概念其實很模糊,不同的人和公司對它賦予的含義也區別很大,感興趣的可以看一下我前面的幾篇文章。在這裡,我們大概聊一下一般意義上的數據工程師在工作中會做什麼?

集群運維:安裝、測試、運維各種大數據組件

數據開發:細分一點的話會有ETL工程師、數據倉庫工程師等

數據系統開發:偏重Web系統開發,比如報表系統、推薦系統等

這裡面有很多內容其實是十分重合的,下面大致聊一下每一塊內容大致需要學什麼,以及側重點。

2. 集群運維

數據工程師,基本上是離不開集群搭建,比如hadoop、Spark、Kafka,不要指望有專門的運維幫你搞定,新組件的引入一般都要自己來動手的。

因此這就要求數據工程師了解各種大數據的組件。

由於要自己的安裝各種開源的組件,就要求數據工程師要具備的能力: Linux 。要對Linux比較熟悉,能各種自己折騰著玩。

由於現在的大數據生態系統基本上是 JVM 系的,因此在語言上,就不要猶豫了,JVM系的Java和Scala基本上跑不掉,Java基本上要學的很深,Scala就看情況了。

3. ETL

ETL 在大數據領域主要體現在各種數據流的處理。這一塊一方面體現在對一些組件的了解上,比如Sqoop、Flume、Kafka、Spark、MapReduce;另一方面就是編程語言的需要,Java、Shell和Sql是基本功。

4. 系統開發

我們大部分的價值最後都會由系統來體現,比如報表系統和推薦系統。因此就要求有一定的系統開發能力,最常用的就是 Java Web 這一套了,當然Python也是挺方便的。

需要注意的是,一般數據開發跑不掉的就是各種提數據的需求,很多是臨時和定製的需求,這種情況下, Sql 就跑不掉了,老老實實學一下Sql很必要。

0x02 如何入門

前面提到了一些數據工程師會用到的技能樹,如果希望了解更多,可以看一下《No.3 漫談數據開發工程師的技術廣度》。

下面給一個入門的建議,完全個人意見。

1. 了解行業情況

剛開始一定要了解清楚自己和行業的情況,很多人根本就分不清招聘信息中的大數據和數據挖掘的區別就說自己要轉行,其實是很不負責的。不要總是趕熱點,反正我就是經常被鄙視做什麼大數據開發太Low,做數據就要做數據挖掘,不然永遠都是水貨。

2. 選擇學習途徑

如果真是清楚自己明確地想轉數據開發了,要考慮一下自己的時間和精力,能拿出來多少時間,而且在學習的時候最好有人能多指點下,不然太容易走彎路了。

在選擇具體的學習途徑時,要慎重一點,有幾個選擇:

自學

報班

找人指點

別的不說了,報班是可以考慮的,不要全指望報個輔導班就能帶你上天,但是可以靠他幫你梳理思路。如果有專業從事這一行的人多幫幫的話,是最好的。不一定是技術好,主要是可溝通性強。

3. 學習路線

學習路線,下面是一個大致的建議:

第一階段

先具備一定的Linux和Java的基礎,不一定要特別深,先能玩起來,Linux的話能自己執行各種操作,Java能寫點小程序。這些事為搭建Hadoop環境做準備。

學習Hadoop,學會搭建單機版的Hadoop,然後是分散式的Hadoop,寫一些MR的程序。

接著學學Hadoop生態系統的其它大數據組件,比如Spark、Hive、Hbase,嘗試去搭建然後跑一些官網的Demo。

Linux、Java、各種組件都有一些基礎後,要有一些項目方面的實踐,這時候找一些成功案例,比如搜搜各種視頻教程中如何搞一個推薦系統,把自己學到的用起來。

第二階段

到這裡是一個基本的階段了,大致對數據開發有一些了解了。接著要有一些有意思內容可以選學。

數據倉庫體系:如何搞數據分層,數據倉庫體系該如何建設,可以有一些大致的了解。

用戶畫像和特徵工程:這一部分越早了解越好。

一些系統的實現思路:比如調度系統、元數據系統、推薦系統這些系統如何實現。

第三階段

下面要有一些細分的領域需要深入進行,看工作和興趣來選擇一些來深入進行

分散式理論:比如Gossip、DHT、Paxo這些構成了各種分散式系統的底層協議和演算法,還是要學一下的。

數據挖掘演算法:演算法是要學的,但是不一定純理論,在分散式環境中實現演算法,本身就是一個大的挑戰。

各種系統的源碼學習:比如Hadoop、Spark、Kafka的源碼,想深入搞大數據,源碼跑不掉。

0xFF 總結

我把數據工程師的概念縮小了一些,不包含機器學習和深度學習這些演算法方向的內容,因此整體是有局限的。不過可以做一些參考。然後還有一些參考的書籍和網上的資料暫時也沒時間整理。

希望這篇文章能提供一點點思路和參考,不至於特別盲目。有問題歡迎交流。

End.

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 36大數據 的精彩文章:

大數據早報:AI僅用一張照片就能完成3D面部建模-9.20
可以將數據中心用作雲端的災難恢復站點嗎?
小企業更需要大數據
你為何不使用Go語言呢?

TAG:36大數據 |