如何成為一個大數據開發工程師?

如題所示,大數據大數據,個個都在喊 但究竟什麼是大數據開發,如何成為一個大數據開發工程師?請大神指路 PS 本人學JAVA


當我們在討論這個問題時,無非就是想尋求一種路徑的演示,能夠幫助對大數據開發工程師有意向的知友發現一些可以借鑒的經驗。

恰巧,100offer在前段時間接觸到Talking Data的研發副總裁閆志濤,並邀請他就大數據工程師如何實現技術成長進行Live分享。閆志濤就他從物理系本科到大數據工程師的成長曆程與我們進行分享,在此整理成回答,分享與各位知友,希望對一些有志於成為大數據開發工程師的知友有所啟發。

  • 當專業和興趣產生矛盾:為了興趣做努力

閆志濤的本科是在北大物理系完成的,在物理系的這段日子,閆志濤逐漸發現自己對物理沒有那麼感興趣。物理的長周期讓他缺乏一定的成就感來源。雖然的確作為一個比較傳統的專業它在後期會有一些挑戰性的工作,但是閆志濤顯然更加喜歡一些比較創新的專業,比如生物,比如計算機。

大學裡的計算機課程相對而言比較豐富,再加上一定的計算機基礎,閆志濤對計算機的研究之路就開始了。這些興趣轉化成動力,閆志濤在本科畢業考研的階段,選擇了計算機相關專業的研究生。

  • 初入職場工作 :以幫助他人為樂,收穫知識與人脈

早期的工作以積累為主,在工作過程中,閆志濤會下意識的鍛煉自己看源代碼的能力。由於工作性質的原因,他時常需要與客戶進行溝通,幫助客戶解決問題。通過不停地幫助別人解決問題,閆志濤成為當時公司整個中國區的問題解答專家;因為良好的口碑,他建立了自己的人脈,並且認識了現在公司的CEO。

這段積累的經歷,帶給知友最要的啟發點就是,要有責任心,要不設任何邊界,建立相互信任的關係,很多時候不要想短期回報和長期回報。同時還要不斷的持續學習,通過不斷地幫助別人解決問題,其實也是幫助自己解決問題。

  • 進入大數據創業公司:技能與節奏的把握

閆志濤的職業生涯的轉折在11年出現,當時他發現智能手機發微博、LBS的功能十分強大,對於當時在做架構師的閆志濤觸動很大。這些能夠標記地點的功能,讓他看到了背後數據的價值。正好,此時通過早期給客戶答疑解惑認識的CEO聯繫了閆志濤,邀請他去一同創業。

當時的閆志濤並不太懂大數據,雖然前一份架構師項目的工作也會和數據打一些交到,但是並沒有那麼大的數據量。新公司的入職,技術上反而沒有太多的障礙,長期實踐和鍛鍊出來的學習能力,讓閆志濤對新技術並沒有過多的擔心。新的技術都是新瓶裝舊酒,只要基礎掌握的比較牢固,看到新的技術理解它的原理就行,對於有興趣的東西,可以仔細看一下文檔;同時閆志濤還有良好的記錄和梳理的情況,通過更新自己的公眾號等方式,深入調研技術,不僅能夠幫助他更好了解體系,還能成為團隊未來運用的基礎。

與技術上的自信對比的是節奏的變化帶來的挑戰,在新公司的一個廣告追蹤的產品,CEO問什麼時候能夠完成,閆志濤反饋大概2個月左右,最後CEO排版要求3周完成。最後閆志濤帶著另外幾名工程師加班加點地按期完成了工作,這些挑戰讓閆志濤看到了所謂潛力都是可以不斷挖掘的。

總結起自己的成長經驗,閆志濤認為:

1.工作要有擔當和責任心以及良好的工作習慣;

2.工作態度上,做事情的態度要不設邊界,不要想著自己吃不吃虧,做得多提高的是自己的能力,同時如果得到別人的認可,路就會越走越寬;

3.做技術要深挖,年輕的時候不要老想著貪多,因為很多技術基本原理是一樣的,把一個技術吃透,做技術遷移能力就會很容易,就像挖井一樣,井挖的深淺是不一樣的。

4.做數據工程師要有良好的數據思維:除了一般的編碼、工程、架構、業務理解能力的考察外,數據工程師還會考察一些數據思維。即要求應試者在對於數據有一定的感覺和敏感度,對於需要收集哪些數據來進行支撐的能力比較看重。


希望這一個分享可以讓你有所收穫。更多大咖經驗分享、職場發展、工作規劃,歡迎閱讀我們的專欄和其他回答。

相關閱讀:

大數據工程師如何實現技術成長? | 知乎 Live 筆錄

非科班出身的程序員,該如何彌補技術差距?

另外,時逢程序員節日,100offer進行了一個比較有趣的提問,歡迎大家關注回答

程序員除了敲代碼,還有哪些隱藏的神技能?

還有一篇相關專欄,歡迎大家閱讀:1024程序員節,讓世界知道你的興趣


下面是StuQ 發布的大數據工程師技能圖譜(僅供參考)

大數據通用處理平台

1. Spark

2. Flink

3. Hadoop

分散式存儲

HDFS

資源調度

Yarn

Mesos

機器學習工具

Mahout

1. Spark Mlib

2. TensorFlow (Google )

3. Amazon Machine Learning

4. DMTK (微軟分散式機器學習工具)

數據分析/數據倉庫(SQL)

1. Pig

2. Hive

3. kylin

4. Spark SQL,

5. Spark DataFrame

6. Impala

7. Phoenix

8. ELK

8.1 ElasticSearch

8.2Logstash

8.3Kibana

消息隊列

1. Kafka(純日誌類,大吞吐量)

2. RocketMQ

3. ZeroMQ

4. ActiveMQ

5. RabbitMQ

流式計算

1. Storm/JStorm

2. Spark Streaming

3. Flink

日誌收集

Scribe

Flume

編程語言

1. Java

2. Python

3. R

4. Ruby

5. Scala

數據分析挖掘

MATLAB

SPSS

SAS

數據可視化

1. R

2. D3.js

3. ECharts

4. Excle

5. Python

機器學習

機器學習基礎

1. 聚類

2. 時間序列

3. 推薦系統

4. 回歸分析

5. 文本挖掘

6. 決策樹

7. 支持向量機

8. 貝葉斯分類

9. 神經網路

機器學習工具

1. Mahout

2. Spark Mlib

3. TensorFlow (Google 系)

4. Amazon Machine Learning

5. DMTK (微軟分散式機器學習工具)

演算法

一致性

1. paxos

2. raft

3. gossip

數據結構

1. 棧,隊列,鏈表

2. 散列表

3. 二叉樹,紅黑樹,B樹

4. 圖

常用演算法

1.排序

插入排序

桶排序

堆排序

2.快速排序

3,最大子數組

4.最長公共子序列

5.最小生成樹

最短路徑

6.矩陣的存儲和運算

雲計算

雲服務

1. SaaS

2. PaaS

3. IaaS

4. Openstack

5. Docker


1.這個問題不大清楚。大數據工程師有多種解釋,一種是用大數據的,就是data scientist這種,一種是開發大數據平台的,就是平台開發工程師,比如寫hadoop,hive的某個組件的工程師。

2.如果是走應用這個路線,需要的技能包括:sql,java,mapreduce job的編寫,一些比較簡單的腳本編寫,再加上一些數據分析領域的東西,比如統計,機器學習等等。

3.如果是走底層開發這個路線的,需要的技能基本上是比較硬的開發技能,很多都需要了解語言的高級特性,軟體開發模式呀,抽象呀,操作系統怎麼用,編譯啊,測試呀。這種開發學習曲線比較陡峭一點。


謝邀!

大數據目前籠統一點的崗位劃分是:數據科學家數據工程師數據分析師

從你的問題來看,你對自己的職業規劃其實相當明確,那就是偏技術方面的工程師。這個問題可大可小,但是範圍其實差不多已經確定。這是我從後台查閱了BAT數據工程師對於這個崗位要求的一些分析,希望對你有幫助。

數學及統計學相關的背景

BAT三家互聯網大公司來說,對於大數據工程師的要求都是希望是統計學和數學背景的碩士或博士學歷。沈志勇(來自百度)認為,缺乏理論背景的數據工作者,更容易進入一個技能上的危險區域(DangerZone)—一堆數字,按照不同的數據模型和演算法總能捯飭出一些結果來,但如果你不知道那代表什麼,就並不是真正有意義的結果,並且那樣的結果還容易誤導你。「只有具備一定的理論知識,才能理解模型、復用模型甚至創新模型,來解決實際問題。」沈志勇說。

計算機編碼能力

實際開發能力和大規模的數據處理能力是作為大數據工程師的一些必備要素。「因為許多數據的價值來自於挖掘的過程,你必須親自動手才能發現金子的價值。」鄭立峰(來自騰訊)說。

舉例來說,現在人們在社交網路上所產生的許多記錄都是非結構化的數據,如何從這些毫無頭緒的文字、語音、圖像甚至視頻中攫取有意義的信息就需要大數據工程師親自挖掘。即使在某些團隊中,大數據工程師的職責以商業分析為主,但也要熟悉計算機處理大數據的方式。

對特定應用領域或行業的知識

在顏莉萍(來自萬寶瑞華管理)看來,大數據工程師這個角色很重要的一點是,不能脫離市場,因為大數據只有和特定領域的應用結合起來才能產生價值。所以,在某個或多個垂直行業的經歷能為應聘者積累對行業的認知,對於之後成為大數據工程師有很大幫助,因此這也是應聘這個崗位時較有說服力的加分項。

「他不能只是懂得數據,還要有商業頭腦,不論對零售、醫藥、遊戲還是旅遊等行業,能就其中某些領域有一定的理解,最好還是與公司的業務方向一致的,」就此薛貴榮(來自阿里)還打了個比方,「過去我們說一些奢侈品店員勢利,看人一眼就知道買得起買不起,但這群人恰恰是有敏銳度的,我們認為他們是這個行業的專家。又比如對醫療行業了解的人,他在考慮醫療保險業務時,不僅會和人們醫院看病的記錄相關,也會考慮飲食數據,這些都是基於對該領域的了解。」

所以,你想成為一名數據開發工程師除了過硬的計算機編碼能力,還是需要具備一些其它方面的知識的。當然,現在崗位越來越細分,假如你的計算機能力在某一方面是佼佼者,也能夠在大數據領域找到不錯的工作。

關注大數據的朋友歡迎加我們微信:大數據二三事 ID:dashuju234 有需要加學習群的朋友可以通過公眾號加我私人號拉群。


看描述估計樓主想走架構方面路線...那就自己先開始玩玩hadoop、hive、spark什麼的...

ok,關鍵來了。先假設大家對技術的掌握和自我提升的速度和慾望都是遠遠超過實際需求的,那我覺得相對於技術本身:

如何合理地提供最適合企業,公司現階段的大數據架構解決方案更為重要。

但似乎這個和大數據本身沒太大關係,非要扯上關係,我也只能皮毛地說說幾個我自己作為直接用戶的pain point:

1. 第一個就是如何和legacy之前的遠古資料庫做交互,做備份,做存儲。這絕對不是個小話題,project動不動就是大數目搞個幾年....

2. 如何提供新的架構思維可以解決將來可能面臨的數據交換方案。我知道spark在這方面做得不錯,但是效率好像不怎麼盡如人意...

其它等別人補充吧,這塊我不是太熟悉。


大數據技術可以簡要的理解為在海量的數據資源中提取到有價值的部分加以分析和處理,之後逐漸顯現為公司創造的利益。舉個栗子,電商平台,通過收集用戶的購買記錄和瀏覽記錄,加以分析和處理,然後主動向用戶推薦感興趣的產品。

需要掌握的專業技術:

堅實的Java技術作為基礎支持,之後學習:Hadoop,大數據存儲,大數據架構設計,大數據實時計算,大數據數據採集,大數據商業實戰等。

技術人員就業方向:大數據系統研發人才,大數據應用開發人才和大數據分析人才。


蟹妖。

答主男,剛從高三狗的生活中解脫出來。一年多前,一次偶然的機會,我得到了浙江省全省高中生的個人基本信息資料庫(含照片),雖然也就幾十萬,算是迷你級別的大數據吧。當時我就覺得,自己可以用這些數據做很多事情,比如各種分析balabala

我認為,一個優秀的大數據工程師,並不需要多麼大量的數據,而是需要善於發掘數據中微妙的規律與聯繫,鄙人才疏學淺,當時也不知道怎麼利用好這些數據,就選擇了一條極裝逼且極作死的路……

被抓之後,在看守所里想了很多。我明明可以利用這些數據來提高自己的數據分析修養,為早已規劃好的IT職業生涯鋪路,然而我卻因為一念之差而無奈身陷囹圄,這顯然不是我期望的結果。

亡羊補牢,為時不晚,懸崖勒馬,回頭是岸。珍惜自由,遠離灰色的「大數據」,一個優秀的大數據工程師至少應該具備這樣的基本職業操守,否則就會淪為被不法分子利用的工具。


廈門大學林子雨教授的課程非常好,很適合入門,理論加實際,可以看一下!還有幾個非常不錯的實驗!


看到很多問大數據的問題,天善學院裡面有一套 Hadoop 入門及其基礎學習【連載更新中】 人民日報的大數據專家錄製的課程,免費的,我自己看了一下挺不錯的。,感興趣的可以學習一下。推薦給大家。


linux hadoop hive hbase spark


大數據開發工程師,實際上就是做數據相關由上至下的一系列工作。細分的話要分位很多個崗位。先佔個坑,晚上有時間我寫點東西看看能不能幫到你。

為了避嫌放了個外網隨便搜到的淘寶海淘數據架構圖。就不放狼廠的架構圖了。

個人理解數據架構層次是不變的。只是裡面用的到工具和產品不一樣罷了。

從數據源-&>數據產品 中間要做的事情就是大數據開發工程師要做的事情。

我個人理解工程方向可以分為 計算,存儲,傳輸 三個方向。

鑒於不同公司使用的技術,工具不同,建議你學習開源的技術。不要直接就看BAT開源出去的大數據工具。下面也介紹一些比較典型的開源工具和使用場景。我這邊主要關注工程方向,如果是策略方向的可以看看其他人的介紹。

存儲層:HDFS(分散式存儲系統),mysql

計算層: mapreduce,yarn,Mesos,spark

傳輸層:直接用到了數據傳輸相關技術和工具,可以參考kafka(實時訂閱),flume(實時傳輸),sqoop(異構存儲之間數據傳輸)

補充個數據分析:hive,pig,impala,spark sql等封裝的查詢引擎,一般數據分析產品都會用到類似的工具。

至於docker之類的工具個人覺得是虛擬化和雲服務的範圍就不在這討論了。

語言方面:java是個不錯的入門選擇,實際工作後,大數據開發工程師用的語言比較雜。c++,java,python,scala等都會接觸到。


根據個人接觸到的大數據項目,簡單來說如下:

大數據開發運維工程師(非數據分析挖掘)需要掌握的技能:

  1. 了解各種常用集群的搭建及性能調優

Hadoop集群,storm集群,spark集群

其實會hadoop的搭建,其它就很容易了

這裡有時會涉及硬體管理或網路管理,具體看項目

這裡需要到的技能是:對Linux系統的常用操作,包括對shell腳本語言的開發使用, 硬體管理(磁碟,內存,CPU等),網路

2. 學會集群的各類組件的原理和使用及配置

這塊內容比較多也比較雜,一般來說常用的組件有Hive, Yarn, Hdfs, Hbase, Zookeeper等

能夠理解和使用Mapreduce演算法框架

如果是做實時處理需要掌握Flume, Kafka, Redis等的使用

3. 會使用至少兩種主流開發語言

包括 Java,Scala,Python,Java的話至少要掌握Java基礎,J2ee一般可不考慮(具體看公司招聘需求)

數據分析挖掘工程師:

技能:傳統SQL, HiveQL開發, Scala(對應Spark), R語言,Shell, 基礎Linux操作,有的還需要一到兩種主流開發語言(以上不一定要求都懂,具體看項目需求)

要會使用分析工具,包括spss等

要懂常用機器學習演算法的適用場景及使用方法,包括聚類分析,邏輯回歸等等

以上是我之前接觸到的在大數據項目中會使用到的技術和工具,

不得不說,以上任何一個技術點單拎出來都能寫一本書 。。。

而且大數據生態圈組件非常多,我們只是使用到了其中一部分,同時大數據相關技術更新也很快,

總體來說,Java或者Python程序員轉大數據相對要容易些。


對於已經離開校園的同學來說,學習無非就是兩條路。

自學還是參加相關的培訓班要看個人的情況具體分析的,如果自制力和理解能力強的話可以自學。我以前也自學過,覺得看看企業的招聘信息就知道該掌握些什麼了,但學起來總是很亂。

有條件的話還是建議能抽出一定的時間參加培訓班,如果正在上班的話推薦你看看光環大數據的課程,他們的大數據實戰轉型班一般都是在周末上課,不影響正常上班,而且大家在一起學習的話還有氛圍,學起來也快多了。


大數據源於美國,你當然要從美國課程學起,並且系統學最好。我當年學PPT安卓開發等在淘寶閑魚上買了不少價值不菲的課程,不知道現在還有沒有,推薦你試試!


求大數據架構師


廈大林子雨網站教程、還有他的教材,都還不錯。可以看看。



推薦閱讀:

複製Ctrl+C經常失效,無法粘貼,是怎麼回事?
IT運維怎麼轉開發呢?
為什麼美國程序員工資普遍很高?
如何成為傑出的程序員或軟體工程師?
國內有什麼互聯網產品是工程師主導的?

TAG:互聯網 | IT工程師 | 程序員 | 職業發展 | 大數據 |