寫給初學(xué)者,長文闡述大數(shù)據(jù)學(xué)習(xí)與面試
本文轉(zhuǎn)載自微信公眾號「五分鐘學(xué)大數(shù)據(jù)」,作者園陌。轉(zhuǎn)載本文請聯(lián)系五分鐘學(xué)大數(shù)據(jù)公眾號。
最近有讀者私聊我時發(fā)現(xiàn)有不少應(yīng)屆生和初學(xué)者,他們在大數(shù)據(jù)怎么學(xué),以及大數(shù)據(jù)怎么面試,簡歷怎么寫等方面有很大的困擾,今天我們就來談?wù)勱P(guān)于大數(shù)據(jù)的一些事。
寫在前面:每個人的學(xué)習(xí)方法可能不一樣,只有找到適合自己的才是最好的,以下這些只是我在學(xué)習(xí)大數(shù)據(jù)時的一些總結(jié)及經(jīng)驗,有不全面的地方還請各位大佬多包涵,互相學(xué)習(xí),共同進(jìn)步,非常感謝!
我之前在知乎回答過類似的問題,有人問大數(shù)據(jù)工程師的日常工作內(nèi)容是干嘛?,我當(dāng)時看到之后就隨意回答了下,先說了下大數(shù)據(jù)日常干嘛,然后又說了下怎么準(zhǔn)備大數(shù)據(jù)的面試,怎么學(xué)大數(shù)據(jù)等等,沒想到反響還挺好,截圖了部分評論:
今天走心回答一波,把知乎回答的內(nèi)容再整理下。
1. 大數(shù)據(jù)學(xué)習(xí)
大數(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é)習(xí)其中一兩個比較重要,也就是企業(yè)用的較多的框架即可。
數(shù)據(jù)采集:就是把數(shù)據(jù)從其他平臺采集到我們大數(shù)據(jù)平臺,只是負(fù)責(zé)采集數(shù)據(jù),所以對這個流程的框架要求是會用即可,日志采集工具如Flume,大數(shù)據(jù)平臺與傳統(tǒng)的數(shù)據(jù)庫(mysql、postgresql...)間進(jìn)行數(shù)據(jù)的傳遞工具如Sqoop,我們會用即可,這種工具上手也很快,沒有太復(fù)雜的功能。
數(shù)據(jù)存儲:數(shù)據(jù)存儲就比較重要了,大數(shù)據(jù)如此流行,和大規(guī)模分布式數(shù)據(jù)存儲快速發(fā)展有很大關(guān)系,當(dāng)然數(shù)據(jù)存儲的框架也比較多,不同的框架,功能不太一樣,首先第一個:Hadoop HDFS,分布式文件系統(tǒng),HDFS的誕生,解決了海量數(shù)據(jù)的存儲問題, 但是一個優(yōu)秀的數(shù)據(jù)存儲系統(tǒng)需要同時考慮數(shù)據(jù)存儲和訪問兩方面的問題,比如你希望能夠?qū)?shù)據(jù)進(jìn)行隨機訪問,這是傳統(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ù)進(jìn)行統(tǒng)一的處理,對應(yīng)的處理框架有 Hadoop MapReduce、Spark、Flink 等;
- 流處理:對運動中的數(shù)據(jù)進(jìn)行處理,即在接收數(shù)據(jù)的同時就對其進(jìn)行處理,對應(yīng)的處理框架有 Spark Streaming、Flink 等。
批處理和流處理各有其適用的場景,時間不敏感或者硬件資源有限,可以采用批處理;
時間敏感和及時性要求高就可以采用流處理。隨著服務(wù)器硬件的價格越來越低和大家對及時性的要求越來越高,流處理越來越普遍,如股票價格預(yù)測和電商運營數(shù)據(jù)分析等。
大數(shù)據(jù)是一個非常完善的生態(tài)圈,有需求就有解決方案。為了能夠讓熟悉 SQL 的人員也能夠進(jìn)行數(shù)據(jù)處理與分析,查詢分析框架應(yīng)運而生,常用的有 Hive 、Spark SQL 、Flink SQL、Phoenix 等。這些框架都能夠使用標(biāo)準(zhǔn)的 SQL 或者 類 SQL 語法靈活地進(jìn)行數(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é)習(xí)等。
任務(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(能進(jìn)行開發(fā)。對源碼有了解)
- Kafka(會使用,理解底層原理)
- Flink(能進(jìn)行開發(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題練習(xí)!
等工作之后,有時間還需要學(xué)習(xí)比較流行的 OLAP 查詢引擎:
Impala 、Presto、Druid 、Kudu 、ClickHouse 、Doris
如果還有時間,需學(xué)習(xí)數(shù)據(jù)質(zhì)量及數(shù)據(jù)治理相關(guān)的內(nèi)容!
另還有元數(shù)據(jù)管理工具:Atlas
數(shù)據(jù)湖-Data Lake 三劍客:Delta、Hudi、Iceberg
2. 大數(shù)據(jù)面試
如果讓我招大數(shù)據(jù)工程師,我第一看中的不是技術(shù),而是你有沒有獨立思考的能力,給你一個你毫不熟悉的項目,能不能快速理清業(yè)務(wù)邏輯,能不能將需求完整的復(fù)述一遍,因為這太重要了,我司目前招進(jìn)來兩個大數(shù)據(jù)初級,不知道是跨行業(yè)的原因,還是其他,需求始終理解的差那么一點,也可能是我們的業(yè)務(wù)比較復(fù)雜。但是需求理解不到位,技術(shù)在厲害也是沒用
但是話又說回來,需求這東西你沒辦法提前復(fù)習(xí)啊,只有需求來了才知道要干什么,所以面試時只能考察技術(shù)及你的過往項目經(jīng)歷,通過你之前做的項目看你對這個項目的理解情況,這主要看和面試官有沒有眼緣,沒有具體標(biāo)準(zhǔn),因為每個人做的項目可能不一樣,你項目中會的地方多說一點,不會的少說一點或者干脆不說,面試官感覺你說得好,你就有希望
但是技術(shù)是有標(biāo)準(zhǔn)的,問你某個技術(shù)點,你會就是會,不會就是不會
但是在學(xué)技術(shù)的時候要多思考,這個技術(shù)點為什么這樣實現(xiàn),有什么好處,多思考會讓大腦越來越靈活,就比如Flink支持精準(zhǔn)一次處理語義,但是大家深入思考下flink的精準(zhǔn)處理是怎么實現(xiàn)的,有人說是通過兩階段提交協(xié)議實現(xiàn)的,對,是通過這個協(xié)議,那再深入思考下,這個協(xié)議的主要內(nèi)容是什么,底層的算法是怎么實現(xiàn)的,這樣一步步的向下思考,你就會發(fā)現(xiàn)一個新世界。
以上說這么多,其實就兩點,面試主要考察技術(shù)和項目。項目也是非常重要的,通過項目一方面可以考察你的技術(shù)掌握情況,另一方面考察你對項目的理解情況,如果你連自己簡歷中的項目都不太熟悉,說的磕磕絆絆,那么你進(jìn)到公司后,怎么能短時間內(nèi)快速熟悉業(yè)務(wù)呢。
所以,簡歷中一定要寫項目,并且對項目要非常熟悉!
公眾號后臺對話框發(fā)送:面試,會有一份帶解析的超全大數(shù)據(jù)面試題!
3. 大數(shù)據(jù)簡歷
對于許多應(yīng)屆生來說,有不少是帶著學(xué)生思維來撰寫簡歷,不僅于求職加分無益,還給自己挖了許多坑。敗在簡歷關(guān),等于一場馬拉松摔輸在了起跑線,還沒開始就結(jié)束了。
簡歷的大忌:
海投簡歷
不要一份簡歷原封不動地發(fā)送給數(shù)十家企業(yè)。這樣的結(jié)果往往是石沉大海。
求職講求“人崗匹配”,即面試者個人素質(zhì)與職位要求高度一致。要針對崗位要求適當(dāng)修改簡歷,提升崗位匹配度。
簡歷毫無重點
一篇優(yōu)秀的簡歷,應(yīng)該是懂得“舍棄”的簡歷。你不需要將自己大學(xué)幾年來所有的事件經(jīng)歷都羅列上去,而是應(yīng)該根據(jù)企業(yè)和崗位的需求進(jìn)行取舍,選取出最匹配的經(jīng)歷大篇幅呈現(xiàn)出來,其他經(jīng)歷大可一筆帶過甚至干脆不談。
簡歷怎么寫:
重點來啦!!!寫簡歷一定要用四大原則和STAR法則!
什么是四大原則,什么是STAR法則,接下來我們就逐項解析:
四大原則:
關(guān)鍵詞原則
關(guān)鍵詞原則指的是,多使用一些行業(yè)術(shù)語或?qū)I(yè)詞匯放入你的經(jīng)歷描述中,凸顯出你的專業(yè)性以及對該行業(yè)的熟悉程度。
動詞原則
動詞是一個句子的靈魂所在,也是面試官判斷你的個人經(jīng)歷是否真實的重要標(biāo)準(zhǔn)之一。在經(jīng)歷描述中,要著重注意動詞的挑選,最準(zhǔn)確的動詞才能夠傳達(dá)出你的經(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 項目背景
介紹一下你所處的平臺和團(tuán)隊有多優(yōu)秀,以證明你曾經(jīng)的被認(rèn)可程度。
Task 項目目標(biāo)
介紹一下你們此項活動的具體目標(biāo)與設(shè)想,有時可以和上一部分進(jìn)行合并。
Action 你做了什么
說明你在團(tuán)隊中做出了怎樣的努力,充當(dāng)了怎樣的角色,發(fā)揮了什么樣的作用,以此展現(xiàn)你的個人實力和在團(tuán)隊中的成長與歷練。這一部分往往是最重要的。
Result 得到怎樣的結(jié)果
說明你最終取得了怎樣的工作成果,表述時可以參照上部分的“四大原則”。
公眾號后臺對話框發(fā)送:簡歷,會有幾十份大數(shù)據(jù)簡歷模板供你參考!
最后給大家一些高逼格的關(guān)鍵詞和動詞,僅供娛樂:
注:以下詞語簡歷及面試時可以用,但是別太過!
高逼格名詞:生命周期,價值轉(zhuǎn)化,強化認(rèn)知,資源傾斜,完善邏輯,抽離透傳,復(fù)用打法,商業(yè)模式,快速響應(yīng),定性定量,關(guān)鍵路徑,去中心化,結(jié)果導(dǎo)向,垂直領(lǐng)域,歸因分析,體驗度量,信息屏障,資源整合
高逼格動詞:復(fù)盤,賦能,加持,沉淀,倒逼,落地,串聯(lián),協(xié)同,反哺,兼容,包裝,重組,履約,響應(yīng),量化,布局,聯(lián)動,細(xì)分,梳理,輸出,加速,共建,支撐,融合,聚合,集成,對標(biāo),聚焦,抓手,拆解,抽象,摸索,提煉,打通,打透,吃透,遷移,分發(fā),分裝,輻射,圍繞,復(fù)用,滲透,擴展,開拓,皮實,共創(chuàng),共建,解耦,集成,對齊,拉齊,對焦,給到,拿到,死磕
你們對這些詞有什么看法呢。
最后,來一個面試官的死亡提問:
你這個問題的底層邏輯是什么?頂層設(shè)計在哪?最終交付價值是什么?過程的抓手在哪?如何保證回答閉環(huán)?你比別人的亮點在哪?優(yōu)勢在哪?你的思考和沉淀是什么?這個問題換成我來問是否會不一樣?你的獨特價值在哪?