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