写给初学者,一文搞懂大数据学习、岗位、面试及简历
最近有公眾號讀者私聊我時發(fā)現(xiàn)有不少應(yīng)屆生和初學(xué)者,他們在大數(shù)據(jù)怎么學(xué),以及大數(shù)據(jù)怎么面試,簡歷怎么寫等方面有很大的困擾,今天我們就來談?wù)勱P(guān)于大數(shù)據(jù)的一些事。
寫在前面:每個人的學(xué)習方法可能不一樣,只有找到適合自己的才是最好的,以下這些只是我在學(xué)習大數(shù)據(jù)時的一些總結(jié)及經(jīng)驗,有不全面的地方還請各位大佬多包涵,互相學(xué)習,共同進步,非常感謝!
我之前在知乎回答過類似的問題,有人問大數(shù)據(jù)工程師的日常工作內(nèi)容是干嘛?,我當時看到之后就隨意回答了下,先說了下大數(shù)據(jù)日常干嘛,然后又說了下怎么準備大數(shù)據(jù)的面試,怎么學(xué)大數(shù)據(jù)等等,沒想到反響還挺好,截圖了部分評論:
今天走心回答一波,把知乎回答的內(nèi)容再整理下。
1. 大數(shù)據(jù)學(xué)習
大數(shù)據(jù)怎么學(xué),該學(xué)哪些東西,不需要學(xué)哪些東西,是大家問的最多的一個問題,也有不少同學(xué)問培訓(xùn)機構(gòu)講的框架太多了,是否都要掌握,接下來我們逐個解析。
從 2008 年 Hadoop 成為 Apache 頂級項目開始,大數(shù)據(jù)迎來了體系化的快速發(fā)展,到如今已經(jīng)走過十幾個年頭,這些年里大數(shù)據(jù)框架層出不窮,可以用“亂花漸欲迷人眼”形容,框架這么多,應(yīng)該怎么學(xué)?
我們可以思考下整個大數(shù)據(jù)的流程是什么,從數(shù)據(jù)采集->數(shù)據(jù)存儲->數(shù)據(jù)處理->數(shù)據(jù)應(yīng)用,再加一個任務(wù)調(diào)度。每個流程都有很多對應(yīng)的大數(shù)據(jù)框架,我們學(xué)習其中一兩個比較重要,也就是企業(yè)用的較多的框架即可。
數(shù)據(jù)采集:就是把數(shù)據(jù)從其他平臺采集到我們大數(shù)據(jù)平臺,只是負責采集數(shù)據(jù),所以對這個流程的框架要求是會用即可,日志采集工具如Flume,大數(shù)據(jù)平臺與傳統(tǒng)的數(shù)據(jù)庫(mysql、postgresql...)間進行數(shù)據(jù)的傳遞工具如Sqoop,我們會用即可,這種工具上手也很快,沒有太復(fù)雜的功能。
數(shù)據(jù)存儲:數(shù)據(jù)存儲就比較重要了,大數(shù)據(jù)如此流行,和大規(guī)模分布式數(shù)據(jù)存儲快速發(fā)展有很大關(guān)系,當然數(shù)據(jù)存儲的框架也比較多,不同的框架,功能不太一樣,首先第一個:Hadoop HDFS,分布式文件系統(tǒng),HDFS的誕生,解決了海量數(shù)據(jù)的存儲問題, 但是一個優(yōu)秀的數(shù)據(jù)存儲系統(tǒng)需要同時考慮數(shù)據(jù)存儲和訪問兩方面的問題,比如你希望能夠?qū)?shù)據(jù)進行隨機訪問,這是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫所擅長的,但卻不是分布式文件系統(tǒng)所擅長的,那么有沒有一種存儲方案能夠同時兼具分布式文件系統(tǒng)和關(guān)系型數(shù)據(jù)庫的優(yōu)點,基于這種需求,就產(chǎn)生了 HBase、MongoDB等。
數(shù)據(jù)處理:大數(shù)據(jù)最重要的環(huán)節(jié)就是數(shù)據(jù)處理了,數(shù)據(jù)處理通常分為兩種:批處理和流處理。
-
批處理:對一段時間內(nèi)海量的離線數(shù)據(jù)進行統(tǒng)一的處理,對應(yīng)的處理框架有 Hadoop MapReduce、Spark、Flink 等;
-
流處理:對運動中的數(shù)據(jù)進行處理,即在接收數(shù)據(jù)的同時就對其進行處理,對應(yīng)的處理框架有 Spark Streaming、Flink 等。
批處理和流處理各有其適用的場景,時間不敏感或者硬件資源有限,可以采用批處理;
時間敏感和及時性要求高就可以采用流處理。隨著服務(wù)器硬件的價格越來越低和大家對及時性的要求越來越高,流處理越來越普遍,如股票價格預(yù)測和電商運營數(shù)據(jù)分析等。
大數(shù)據(jù)是一個非常完善的生態(tài)圈,有需求就有解決方案。為了能夠讓熟悉 SQL 的人員也能夠進行數(shù)據(jù)處理與分析,查詢分析框架應(yīng)運而生,常用的有 Hive 、Spark SQL 、Flink SQL、Phoenix 等。這些框架都能夠使用標準的 SQL 或者 類 SQL 語法靈活地進行數(shù)據(jù)的查詢分析。
這些 SQL 經(jīng)過解析優(yōu)化后轉(zhuǎn)換為對應(yīng)的作業(yè)程序來運行,如 Hive 本質(zhì)上就是將 SQL 轉(zhuǎn)換為 MapReduce 或 Spark 作業(yè),Phoenix 將 SQL 查詢轉(zhuǎn)換為一個或多個 HBase Scan。
大數(shù)據(jù)流處理中使用的比較多的另外一個框架是 Kafka,Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以用于消峰,避免在秒殺等場景下并發(fā)數(shù)據(jù)對流處理程序造成沖擊。
數(shù)據(jù)應(yīng)用:處理好的數(shù)據(jù)就可以輸出應(yīng)用了,如可視化展示,推動業(yè)務(wù)決策,用于推薦算法,機器學(xué)習等。
任務(wù)調(diào)度:復(fù)雜大數(shù)據(jù)處理的另外一個顯著的問題是,如何調(diào)度多個復(fù)雜的并且彼此之間存在依賴關(guān)系的作業(yè)?基于這種需求,產(chǎn)生了 Azkaban 和 Oozie 等工作流調(diào)度框架。
同時針對集群資源管理的需求,又衍生了 Hadoop YARN,資源調(diào)度框架。
想要保證集群高可用,需要用到 ZooKeeper ,ZooKeeper 是最常用的分布式協(xié)調(diào)服務(wù),它能夠解決大多數(shù)集群問題,包括首領(lǐng)選舉、失敗恢復(fù)、元數(shù)據(jù)存儲及其一致性保證。
以上,在分析大數(shù)據(jù)處理流程中,我們把常用的框架都說了下,基本上也是大數(shù)據(jù)中最常用的框架,盡量全部掌握。
以上框架大部分是用Java寫的,有部分是用Scala寫的,所以我們必須掌握的語言是Java、Scala,以便我們開發(fā)相關(guān)應(yīng)用及閱讀源碼等。
總結(jié)
我們總結(jié)下重點框架:
-
語言:Java 和 Scala(語言以這兩種為主,需要重點掌握)
-
Linux(需要對Linux有一定的理解)
-
Hadoop(需理解底層,能看懂源碼)
-
Hive(會使用,理解底層SQL轉(zhuǎn)化原理及優(yōu)化)
-
Spark(能進行開發(fā)。對源碼有了解)
-
Kafka(會使用,理解底層原理)
-
Flink(能進行開發(fā)。對源碼有了解)
-
HBase(理解底層原理)
-
Zookeeper(會用,最好理解原理)
-
Sqoop、Flume、Oozie/Azkaban(會用即可)
如果走數(shù)倉方向,需要掌握以下技能:
-
離線數(shù)倉建設(shè)(搭建數(shù)倉,數(shù)倉建模規(guī)范)
-
維度建模(建模方式常用的有范式建模和維度建模,重點關(guān)注維度建模)
-
實時數(shù)倉架構(gòu)(兩種數(shù)倉架構(gòu):Lambda架構(gòu)和Kappa架構(gòu))
不管離線還是實時,重中之重就是:SQL。多找一些SQL題練習!
等工作之后,有時間還需要學(xué)習比較流行的 OLAP 查詢引擎:
Impala 、Presto、Druid 、Kudu 、ClickHouse 、Doris
如果還有時間,需學(xué)習數(shù)據(jù)質(zhì)量及數(shù)據(jù)治理相關(guān)的內(nèi)容!
另還有元數(shù)據(jù)管理工具:Atlas
數(shù)據(jù)湖-Data Lake 三劍客:Delta、Hudi、Iceberg
2. 大數(shù)據(jù)就業(yè)方向
因為大數(shù)據(jù)涉及到的知識相對比較廣泛,全部學(xué)精難度太大,所以現(xiàn)在企業(yè)在招聘的時候會細分大數(shù)據(jù)崗位,專注于某個方向招聘,所以先解下大數(shù)據(jù)的都有哪些就業(yè)方向,然后你在后續(xù)的學(xué)習過程中對哪部分比較感興趣就重點關(guān)注那部分
從上帝視角看一張圖,了解下大數(shù)據(jù)所處的位置及與相關(guān)崗位的關(guān)系
大數(shù)據(jù)行業(yè)的位置
數(shù)倉工程師 (全稱:數(shù)據(jù)倉庫工程師)
數(shù)倉工程師日常工作一般是不寫代碼的,主要以寫 SQL 為主!
數(shù)倉工程師是大數(shù)據(jù)領(lǐng)域公司招聘較多的崗位,薪資也較高,需要重點關(guān)注!
數(shù)據(jù)倉庫分為離線數(shù)倉和實時數(shù)倉,但是企業(yè)在招聘時大多要求兩者都會,進入公司之后可能會專注于離線或?qū)崟r其中之一。
就目前來說,大多數(shù)的企業(yè)還是以離線數(shù)倉為主,不過未來趨勢肯定是實時數(shù)倉為主,所以學(xué)習時,為了現(xiàn)在能找到工作,需要學(xué)習離線數(shù)倉,為了以后的發(fā)展,需要學(xué)習實時數(shù)倉。所以,離線和實時都是我們重點掌握的!
需要掌握的技能:
不管離線還是實時,重中之重就是:SQL
SQL 語法及調(diào)優(yōu)一定要掌握,這里說的 SQL 包括 mysql 中的 sql,hive中的 hive sql,spark 中的 spark sql,flink 中 的 flink sql。
在企業(yè)招聘的筆記及面試中,一般問的關(guān)于 sql 的問題主要是以 hive sql 為主,所以請重點關(guān)注!
除 sql 外,還需要重點掌握以下技能,分為離線和實時
離線數(shù)倉需要重點掌握的技能:
-
Hadoop(HDFS,MapReduce,YARN)
-
Hive(重點,包括hive底層原理,hive SQL及調(diào)優(yōu))
-
Spark(Spark 會用及了解底層原理)
-
Oozie(調(diào)度工具,會用即可)
-
離線數(shù)倉建設(shè)(搭建數(shù)倉,數(shù)倉建模規(guī)范)
-
維度建模(建模方式常用的有范式建模和維度建模,重點關(guān)注維度建模)
實時數(shù)倉需要重點掌握的技能:
-
Hadoop(這是大數(shù)據(jù)基礎(chǔ),不管離線和實時都必須掌握)
-
Kafka(重點,大數(shù)據(jù)領(lǐng)域中算是唯一的消息隊列)
-
Flink(重中之重,這個不用說了,實時計算框架中絕對王者)
-
HBase(會使用,了解底層原理)
-
Druid(會用,了解底層原理)
-
實時數(shù)倉架構(gòu)(兩種數(shù)倉架構(gòu):Lambda架構(gòu)和Kappa架構(gòu))
大數(shù)據(jù)開發(fā)工程師
數(shù)據(jù)開發(fā)工程師一般是以寫代碼為主,以 Java 和 Scala 為主。
大數(shù)據(jù)開發(fā)分兩類,第一類是編寫Hadoop、Spark、Flink 的應(yīng)用程序,第二類是對大數(shù)據(jù)處理系統(tǒng)本身進行開發(fā),如對開源框架的擴展開發(fā),數(shù)據(jù)中臺的開發(fā)等!
需要重點掌握的技能:
-
語言:Java 和 Scala(語言以這兩種為主,需要重點掌握)
-
Linux(需要對Linux有一定的理解)
-
Hadoop(需理解底層,能看懂源碼)
-
Hive(會使用,能進行二次開發(fā))
-
Spark(能進行開發(fā)。對源碼有了解)
-
Kafka(會使用,理解底層原理)
-
Flink(能進行開發(fā)。對源碼有了解)
-
HBase(理解底層原理)
通過以上技能,我們也能看出,數(shù)據(jù)開發(fā)和數(shù)倉開發(fā)的技能重復(fù)率較高,所以很多公司招聘時 大數(shù)據(jù)開發(fā) 和 數(shù)倉建設(shè) 分的沒有這么細,數(shù)據(jù)開發(fā)包含了數(shù)倉的工作!
ETL工程師
ETL是三個單詞的首字母,中文意思是抽取、轉(zhuǎn)換、加載
從開始的圖中也能看出,ETL工程師是對接業(yè)務(wù)和數(shù)據(jù)的交接點,所以需要處理上下游的關(guān)系
對于上游,需要經(jīng)常跟業(yè)務(wù)系統(tǒng)的人打交道,所以要對業(yè)務(wù)系統(tǒng)比較熟悉。比如它們存在各種接口,不管是API級別還是數(shù)據(jù)庫接口,這都需要ETL工程師非常了解。 其次是其下游,這意味著你要跟許多數(shù)據(jù)開發(fā)工程師師、數(shù)據(jù)科學(xué)家打交道。比如將準備好的數(shù)據(jù)(數(shù)據(jù)的清洗、整理、融合),交給下游的數(shù)據(jù)開發(fā)和數(shù)據(jù)科學(xué)家。
需要重點掌握的技能
-
語言:Java/Python(會基礎(chǔ))
-
Shell腳本(需要對shell較為熟悉)
-
Linux(會用基本命令)
-
Kettle(需要掌握)
-
Sqoop(會用)
-
Flume(會用)
-
MySQL(熟悉)
-
Hive(熟悉)
-
HDFS(熟悉)
-
Oozie(任務(wù)調(diào)度框架會用其中一個即可,其他如 azkaban,airflow)
數(shù)據(jù)分析工程師
在數(shù)據(jù)工程師準備好數(shù)據(jù)維護好數(shù)倉后,數(shù)據(jù)分析師就上場了。
分析師們會根據(jù)數(shù)據(jù)和業(yè)務(wù)情況,分析得出結(jié)論、制定業(yè)務(wù)策略或者建立模型,創(chuàng)造新的業(yè)務(wù)價值并支持業(yè)務(wù)高效運轉(zhuǎn)。
同時數(shù)據(jù)分析師在后期還有數(shù)據(jù)爬蟲、數(shù)據(jù)挖掘和算法工程師三個分支。
需要重點掌握的技能:
-
數(shù)學(xué)知識(數(shù)學(xué)知識是數(shù)據(jù)分析師的基礎(chǔ)知識,需要掌握統(tǒng)計學(xué)、線性代數(shù)等課程)
-
編程語言(需要掌握Python、R語言)
-
分析工具(Excel是必須的,還需要掌握 Tableau 等可視化工具)
-
數(shù)據(jù)敏感性(對數(shù)據(jù)要有一定的敏感性,看見數(shù)據(jù)就能想到它的用處,能帶來哪些價值)
3. 大數(shù)據(jù)面試
如果讓我招大數(shù)據(jù)工程師,我第一看中的不是技術(shù),而是你有沒有獨立思考的能力,給你一個你毫不熟悉的項目,能不能快速理清業(yè)務(wù)邏輯,能不能將需求完整的復(fù)述一遍,因為這太重要了,我司目前招進來兩個大數(shù)據(jù)初級,不知道是跨行業(yè)的原因,還是其他,需求始終理解的差那么一點,也可能是我們的業(yè)務(wù)比較復(fù)雜。但是需求理解不到位,技術(shù)在厲害也是沒用
但是話又說回來,需求這東西你沒辦法提前復(fù)習啊,只有需求來了才知道要干什么,所以面試時只能考察技術(shù)及你的過往項目經(jīng)歷,通過你之前做的項目看你對這個項目的理解情況,這主要看和面試官有沒有眼緣,沒有具體標準,因為每個人做的項目可能不一樣,你項目中會的地方多說一點,不會的少說一點或者干脆不說,面試官感覺你說得好,你就有希望
但是技術(shù)是有標準的,問你某個技術(shù)點,你會就是會,不會就是不會
但是在學(xué)技術(shù)的時候要多思考,這個技術(shù)點為什么這樣實現(xiàn),有什么好處,多思考會讓大腦越來越靈活,就比如Flink支持精準一次處理語義,但是大家深入思考下flink的精準處理是怎么實現(xiàn)的,有人說是通過兩階段提交協(xié)議實現(xiàn)的,對,是通過這個協(xié)議,那再深入思考下,這個協(xié)議的主要內(nèi)容是什么,底層的算法是怎么實現(xiàn)的,這樣一步步的向下思考,你就會發(fā)現(xiàn)一個新世界。
以上說這么多,其實就兩點,面試主要考察技術(shù)和項目。項目也是非常重要的,通過項目一方面可以考察你的技術(shù)掌握情況,另一方面考察你對項目的理解情況,如果你連自己簡歷中的項目都不太熟悉,說的磕磕絆絆,那么你進到公司后,怎么能短時間內(nèi)快速熟悉業(yè)務(wù)呢。
所以,簡歷中一定要寫項目,并且對項目要非常熟悉!
五分鐘學(xué)大數(shù)據(jù)公眾號對話框發(fā)送:面試,會有一份帶解析的超全大數(shù)據(jù)面試題!
4. 大數(shù)據(jù)簡歷
對于許多應(yīng)屆生來說,有不少是帶著學(xué)生思維來撰寫簡歷,不僅于求職加分無益,還給自己挖了許多坑。敗在簡歷關(guān),等于一場馬拉松摔輸在了起跑線,還沒開始就結(jié)束了。
簡歷的大忌:
海投簡歷
不要一份簡歷原封不動地發(fā)送給數(shù)十家企業(yè)。這樣的結(jié)果往往是石沉大海。
求職講求“人崗匹配”,即面試者個人素質(zhì)與職位要求高度一致。要針對崗位要求適當修改簡歷,提升崗位匹配度。
簡歷毫無重點
一篇優(yōu)秀的簡歷,應(yīng)該是懂得“舍棄”的簡歷。你不需要將自己大學(xué)幾年來所有的事件經(jīng)歷都羅列上去,而是應(yīng)該根據(jù)企業(yè)和崗位的需求進行取舍,選取出最匹配的經(jīng)歷大篇幅呈現(xiàn)出來,其他經(jīng)歷大可一筆帶過甚至干脆不談。
簡歷怎么寫:
重點來啦!!! 寫簡歷一定要用四大原則和STAR法則!
什么是四大原則,什么是STAR法則,接下來我們就逐項解析:
四大原則:
關(guān)鍵詞原則
關(guān)鍵詞原則指的是,多使用一些行業(yè)術(shù)語或?qū)I(yè)詞匯放入你的經(jīng)歷描述中,凸顯出你的專業(yè)性以及對該行業(yè)的熟悉程度。
動詞原則
動詞是一個句子的靈魂所在,也是面試官判斷你的個人經(jīng)歷是否真實的重要標準之一。在經(jīng)歷描述中,要著重注意動詞的挑選,最準確的動詞才能夠傳達出你的經(jīng)歷價值。
比如表明自己行為的動詞“從事”“積累”“得到”,似乎是所有工作中都用得到,但根本看不出這份經(jīng)歷的獨特性。
為了展現(xiàn)你的經(jīng)歷真實與價值,足夠?qū)I(yè)化的動詞才是加分項。
數(shù)字原則
多用數(shù)字其實是簡歷很好的加分項,數(shù)字的意義是將你的經(jīng)歷量化。豐富的數(shù)字比華麗的形容詞要更有說服力。
數(shù)字一般可以用于三種維度:價值,時間,數(shù)量。
牢記,能夠量化的內(nèi)容都量化,用數(shù)據(jù)展現(xiàn)你豐厚的經(jīng)歷。
結(jié)果原則
許多同學(xué)在經(jīng)歷描述時會忽略自己經(jīng)歷的最終成果,但結(jié)果是證明你經(jīng)歷價值的重要依據(jù)之一。
STAR法則
Situation 項目背景
介紹一下你所處的平臺和團隊有多優(yōu)秀,以證明你曾經(jīng)的被認可程度。
Task 項目目標
介紹一下你們此項活動的具體目標與設(shè)想,有時可以和上一部分進行合并。
Action 你做了什么
說明你在團隊中做出了怎樣的努力,充當了怎樣的角色,發(fā)揮了什么樣的作用,以此展現(xiàn)你的個人實力和在團隊中的成長與歷練。這一部分往往是最重要的。
Result 得到怎樣的結(jié)果
說明你最終取得了怎樣的工作成果,表述時可以參照上部分的“四大原則”。
五分鐘學(xué)大數(shù)據(jù)公眾號對話框發(fā)送:簡歷,會有幾十份大數(shù)據(jù)簡歷模板供你參考!
最后給大家一些高逼格的關(guān)鍵詞和動詞,僅供娛樂:
注:以下詞語簡歷及面試時可以用,但是別太過!
高逼格名詞:生命周期,價值轉(zhuǎn)化,強化認知,資源傾斜,完善邏輯,抽離透傳,復(fù)用打法,商業(yè)模式,快速響應(yīng),定性定量,關(guān)鍵路徑,去中心化,結(jié)果導(dǎo)向,垂直領(lǐng)域,歸因分析,體驗度量,信息屏障,資源整合
高逼格動詞:復(fù)盤,賦能,加持,沉淀,倒逼,落地,串聯(lián),協(xié)同,反哺,兼容,包裝,重組,履約,響應(yīng),量化,布局,聯(lián)動,細分,梳理,輸出,加速,共建,支撐,融合,聚合,集成,對標,聚焦,抓手,拆解,抽象,摸索,提煉,打通,打透,吃透,遷移,分發(fā),分裝,輻射,圍繞,復(fù)用,滲透,擴展,開拓,皮實,共創(chuàng),共建,解耦,集成,對齊,拉齊,對焦,給到,拿到,死磕
你們對這些詞有什么看法呢。
最后,來一個面試官的死亡提問:
你這個問題的底層邏輯是什么?頂層設(shè)計在哪?最終交付價值是什么?過程的抓手在哪?如何保證回答閉環(huán)?你比別人的亮點在哪?優(yōu)勢在哪?你的思考和沉淀是什么?這個問題換成我來問是否會不一樣?你的獨特價值在哪?
討論
你是因為什么原因而從事大數(shù)據(jù)工作呢,因為大學(xué)學(xué)的這個專業(yè)?大數(shù)據(jù)比較熱門而學(xué)?大數(shù)據(jù)工資高轉(zhuǎn)行學(xué)?歡迎在評論區(qū)留下你的留言!
總結(jié)
以上是生活随笔為你收集整理的写给初学者,一文搞懂大数据学习、岗位、面试及简历的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python Matplotlib画图
- 下一篇: 解析VPU:智能视频处理加速器