寫給初學者,一文搞懂大資料學習、崗位、面試及簡歷

五分鐘學大資料發表於2021-10-14

最近有讀者私聊我時發現有不少應屆生和初學者,他們在大資料怎麼學,以及大資料怎麼面試,簡歷怎麼寫等方面有很大的困擾,今天我們就來談談關於大資料的一些事。

寫在前面:每個人的學習方法可能不一樣,只有找到適合自己的才是最好的,以下這些只是我在學習大資料時的一些總結及經驗,有不全面的地方還請各位大佬多包涵,互相學習,共同進步,非常感謝!

我之前在知乎回答過類似的問題,有人問大資料工程師的日常工作內容是幹嘛?,我當時看到之後就隨意回答了下,先說了下大資料日常幹嘛,然後又說了下怎麼準備大資料的面試,怎麼學大資料等等,沒想到反響還挺好,截圖了部分評論:

今天走心回答一波,把知乎回答的內容再整理下。

1. 大資料學習

大資料怎麼學,該學哪些東西,不需要學哪些東西,是大家問的最多的一個問題,也有不少同學問培訓機構講的框架太多了,是否都要掌握,接下來我們逐個解析。

從 2008 年 Hadoop 成為 Apache 頂級專案開始,大資料迎來了體系化的快速發展,到如今已經走過十幾個年頭,這些年裡大資料框架層出不窮,可以用“亂花漸欲迷人眼”形容,框架這麼多,應該怎麼學?

我們可以思考下整個大資料的流程是什麼,從資料採集->資料儲存->資料處理->資料應用,再加一個任務排程。每個流程都有很多對應的大資料框架,我們學習其中一兩個比較重要,也就是企業用的較多的框架即可。

資料採集:就是把資料從其他平臺採集到我們大資料平臺,只是負責採集資料,所以對這個流程的框架要求是會用即可,日誌採集工具如Flume,大資料平臺與傳統的資料庫(mysql、postgresql...)間進行資料的傳遞工具如Sqoop,我們會用即可,這種工具上手也很快,沒有太複雜的功能。

資料儲存:資料儲存就比較重要了,大資料如此流行,和大規模分散式資料儲存快速發展有很大關係,當然資料儲存的框架也比較多,不同的框架,功能不太一樣,首先第一個:Hadoop HDFS,分散式檔案系統,HDFS的誕生,解決了海量資料的儲存問題, 但是一個優秀的資料儲存系統需要同時考慮資料儲存和訪問兩方面的問題,比如你希望能夠對資料進行隨機訪問,這是傳統的關係型資料庫所擅長的,但卻不是分散式檔案系統所擅長的,那麼有沒有一種儲存方案能夠同時兼具分散式檔案系統和關係型資料庫的優點,基於這種需求,就產生了 HBaseMongoDB等。

資料處理:大資料最重要的環節就是資料處理了,資料處理通常分為兩種:批處理和流處理。

  • 批處理:對一段時間內海量的離線資料進行統一的處理,對應的處理框架有 Hadoop MapReduceSparkFlink 等;

  • 流處理:對運動中的資料進行處理,即在接收資料的同時就對其進行處理,對應的處理框架有 Spark StreamingFlink 等。

批處理和流處理各有其適用的場景,時間不敏感或者硬體資源有限,可以採用批處理;

時間敏感和及時性要求高就可以採用流處理。隨著伺服器硬體的價格越來越低和大家對及時性的要求越來越高,流處理越來越普遍,如股票價格預測和電商運營資料分析等。

大資料是一個非常完善的生態圈,有需求就有解決方案。為了能夠讓熟悉 SQL 的人員也能夠進行資料處理與分析,查詢分析框架應運而生,常用的有 HiveSpark SQLFlink SQLPhoenix 等。這些框架都能夠使用標準的 SQL 或者 類 SQL 語法靈活地進行資料的查詢分析。

這些 SQL 經過解析優化後轉換為對應的作業程式來執行,如 Hive 本質上就是將 SQL 轉換為 MapReduce 或 Spark 作業,Phoenix 將 SQL 查詢轉換為一個或多個 HBase Scan。

大資料流處理中使用的比較多的另外一個框架是 Kafka,Kafka是一種高吞吐量的分散式釋出訂閱訊息系統,它可以用於消峰,避免在秒殺等場景下併發資料對流處理程式造成衝擊。

資料應用:處理好的資料就可以輸出應用了,如視覺化展示,推動業務決策,用於推薦演算法,機器學習等。

任務排程:複雜大資料處理的另外一個顯著的問題是,如何排程多個複雜的並且彼此之間存在依賴關係的作業?基於這種需求,產生了 AzkabanOozie 等工作流排程框架。

同時針對叢集資源管理的需求,又衍生了 Hadoop YARN,資源排程框架。

想要保證叢集高可用,需要用到 ZooKeeper ,ZooKeeper 是最常用的分散式協調服務,它能夠解決大多數叢集問題,包括首領選舉、失敗恢復、後設資料儲存及其一致性保證。


以上,在分析大資料處理流程中,我們把常用的框架都說了下,基本上也是大資料中最常用的框架,儘量全部掌握。

以上框架大部分是用Java寫的,有部分是用Scala寫的,所以我們必須掌握的語言是JavaScala,以便我們開發相關應用及閱讀原始碼等。

總結

我們總結下重點框架:

  • 語言:JavaScala(語言以這兩種為主,需要重點掌握)
  • Linux(需要對Linux有一定的理解)
  • Hadoop(需理解底層,能看懂原始碼)
  • Hive(會使用,理解底層SQL轉化原理及優化)
  • Spark(能進行開發。對原始碼有了解)
  • Kafka(會使用,理解底層原理)
  • Flink(能進行開發。對原始碼有了解)
  • HBase(理解底層原理)
  • Zookeeper(會用,最好理解原理)
  • SqoopFlumeOozie/Azkaban(會用即可)

如果走數倉方向,需要掌握以下技能:

  • 離線數倉建設(搭建數倉,數倉建模規範)
  • 維度建模(建模方式常用的有正規化建模和維度建模,重點關注維度建模)
  • 實時數倉架構(兩種數倉架構:Lambda架構和Kappa架構)

不管離線還是實時,重中之重就是:SQL。多找一些SQL題練習!


等工作之後,有時間還需要學習比較流行的 OLAP 查詢引擎:

Impala 、Presto、Druid 、Kudu 、ClickHouse 、Doris

如果還有時間,需學習資料質量資料治理相關的內容!

另還有後設資料管理工具:Atlas

資料湖-Data Lake 三劍客:Delta、Hudi、Iceberg

2. 大資料就業方向

因為大資料涉及到的知識相對比較廣泛,全部學精難度太大,所以現在企業在招聘的時候會細分大資料崗位,專注於某個方向招聘,所以先解下大資料的都有哪些就業方向,然後你在後續的學習過程中對哪部分比較感興趣就重點關注那部分

從上帝視角看一張圖,瞭解下大資料所處的位置及與相關崗位的關係

大資料行業的位置
大資料行業的位置
  1. 數倉工程師 (全稱:資料倉儲工程師)

數倉工程師日常工作一般是不寫程式碼的,主要以寫 SQL 為主!

數倉工程師是大資料領域公司招聘較多的崗位,薪資也較高,需要重點關注!

資料倉儲分為離線數倉和實時數倉,但是企業在招聘時大多要求兩者都會,進入公司之後可能會專注於離線或實時其中之一。

就目前來說,大多數的企業還是以離線數倉為主,不過未來趨勢肯定是實時數倉為主,所以學習時,為了現在能找到工作,需要學習離線數倉,為了以後的發展,需要學習實時數倉。所以,離線和實時都是我們重點掌握的!

需要掌握的技能:

不管離線還是實時,重中之重就是:SQL

SQL 語法及調優一定要掌握,這裡說的 SQL 包括 mysql 中的 sql,hive中的 hive sql,spark 中的 spark sql,flink 中 的 flink sql。

在企業招聘的筆記及面試中,一般問的關於 sql 的問題主要是以 hive sql 為主,所以請重點關注!

除 sql 外,還需要重點掌握以下技能,分為離線和實時

離線數倉需要重點掌握的技能:

  • Hadoop(HDFS,MapReduce,YARN)
  • Hive(重點,包括hive底層原理,hive SQL及調優)
  • Spark(Spark 會用及瞭解底層原理)
  • Oozie(排程工具,會用即可)
  • 離線數倉建設(搭建數倉,數倉建模規範)
  • 維度建模(建模方式常用的有正規化建模和維度建模,重點關注維度建模)

實時數倉需要重點掌握的技能:

  • Hadoop(這是大資料基礎,不管離線和實時都必須掌握)
  • Kafka(重點,大資料領域中算是唯一的訊息佇列)
  • Flink(重中之重,這個不用說了,實時計算框架中絕對王者)
  • HBase(會使用,瞭解底層原理)
  • Druid(會用,瞭解底層原理)
  • 實時數倉架構(兩種數倉架構:Lambda架構和Kappa架構)
  1. 大資料開發工程師

資料開發工程師一般是以寫程式碼為主,以 Java 和 Scala 為主。

大資料開發分兩類,第一類是編寫Hadoop、Spark、Flink 的應用程式,第二類是對大資料處理系統本身進行開發,如對開源框架的擴充套件開發,資料中臺的開發等!

需要重點掌握的技能:

  • 語言:JavaScala(語言以這兩種為主,需要重點掌握)
  • Linux(需要對Linux有一定的理解)
  • Hadoop(需理解底層,能看懂原始碼)
  • Hive(會使用,能進行二次開發)
  • Spark(能進行開發。對原始碼有了解)
  • Kafka(會使用,理解底層原理)
  • Flink(能進行開發。對原始碼有了解)
  • HBase(理解底層原理)

通過以上技能,我們也能看出,資料開發和數倉開發的技能重複率較高,所以很多公司招聘時 大資料開發 和 數倉建設 分的沒有這麼細,資料開發包含了數倉的工作!

  1. ETL工程師

ETL是三個單詞的首字母,中文意思是抽取、轉換、載入

從開始的圖中也能看出,ETL工程師是對接業務和資料的交接點,所以需要處理上下游的關係

對於上游,需要經常跟業務系統的人打交道,所以要對業務系統比較熟悉。比如它們存在各種介面,不管是API級別還是資料庫介面,這都需要ETL工程師非常瞭解。 其次是其下游,這意味著你要跟許多資料開發工程師師、資料科學家打交道。比如將準備好的資料(資料的清洗、整理、融合),交給下游的資料開發和資料科學家。

需要重點掌握的技能

  • 語言:Java/Python(會基礎)
  • Shell指令碼(需要對shell較為熟悉)
  • Linux(會用基本命令)
  • Kettle(需要掌握)
  • Sqoop(會用)
  • Flume(會用)
  • MySQL(熟悉)
  • Hive(熟悉)
  • HDFS(熟悉)
  • Oozie(任務排程框架會用其中一個即可,其他如 azkaban,airflow)
  1. 資料分析工程師

在資料工程師準備好資料維護好數倉後,資料分析師就上場了。

分析師們會根據資料和業務情況,分析得出結論、制定業務策略或者建立模型,創造新的業務價值並支援業務高效運轉。

同時資料分析師在後期還有資料爬蟲、資料探勘和演算法工程師三個分支。

需要重點掌握的技能:

  • 數學知識(數學知識是資料分析師的基礎知識,需要掌握統計學、線性代數等課程)
  • 程式語言(需要掌握Python、R語言)
  • 分析工具(Excel是必須的,還需要掌握 Tableau 等視覺化工具)
  • 資料敏感性(對資料要有一定的敏感性,看見資料就能想到它的用處,能帶來哪些價值)

3. 大資料面試

如果讓我招大資料工程師,我第一看中的不是技術,而是你有沒有獨立思考的能力,給你一個你毫不熟悉的專案,能不能快速理清業務邏輯,能不能將需求完整的複述一遍,因為這太重要了,我司目前招進來兩個大資料初級,不知道是跨行業的原因,還是其他,需求始終理解的差那麼一點,也可能是我們的業務比較複雜。但是需求理解不到位,技術在厲害也是沒用

但是話又說回來,需求這東西你沒辦法提前複習啊,只有需求來了才知道要幹什麼,所以面試時只能考察技術及你的過往專案經歷,通過你之前做的專案看你對這個專案的理解情況,這主要看和麵試官有沒有眼緣,沒有具體標準,因為每個人做的專案可能不一樣,你專案中會的地方多說一點,不會的少說一點或者乾脆不說,面試官感覺你說得好,你就有希望

但是技術是有標準的,問你某個技術點,你會就是會,不會就是不會

但是在學技術的時候要多思考,這個技術點為什麼這樣實現,有什麼好處,多思考會讓大腦越來越靈活,就比如Flink支援精準一次處理語義,但是大家深入思考下flink的精準處理是怎麼實現的,有人說是通過兩階段提交協議實現的,對,是通過這個協議,那再深入思考下,這個協議的主要內容是什麼,底層的演算法是怎麼實現的,這樣一步步的向下思考,你就會發現一個新世界。

以上說這麼多,其實就兩點,面試主要考察技術專案。專案也是非常重要的,通過專案一方面可以考察你的技術掌握情況,另一方面考察你對專案的理解情況,如果你連自己簡歷中的專案都不太熟悉,說的磕磕絆絆,那麼你進到公司後,怎麼能短時間內快速熟悉業務呢。

所以,簡歷中一定要寫專案,並且對專案要非常熟悉!

五分鐘學大資料公眾號對話方塊傳送:面試,會有一份帶解析的超全大資料面試題!

4. 大資料簡歷

對於許多應屆生來說,有不少是帶著學生思維來撰寫簡歷,不僅於求職加分無益,還給自己挖了許多坑。敗在簡歷關,等於一場馬拉松摔輸在了起跑線,還沒開始就結束了。

簡歷的大忌:
  1. 海投簡歷

不要一份簡歷原封不動地傳送給數十家企業。這樣的結果往往是石沉大海。

求職講求“人崗匹配”,即面試者個人素質與職位要求高度一致。要針對崗位要求適當修改簡歷,提升崗位匹配度。

  1. 簡歷毫無重點

一篇優秀的簡歷,應該是懂得“捨棄”的簡歷。你不需要將自己大學幾年來所有的事件經歷都羅列上去,而是應該根據企業和崗位的需求進行取捨,選取出最匹配的經歷大篇幅呈現出來,其他經歷大可一筆帶過甚至乾脆不談。

簡歷怎麼寫:

重點來啦!!! 寫簡歷一定要用四大原則和STAR法則

什麼是四大原則,什麼是STAR法則,接下來我們就逐項解析:

四大原則

  1. 關鍵詞原則

關鍵詞原則指的是,多使用一些行業術語或專業詞彙放入你的經歷描述中,凸顯出你的專業性以及對該行業的熟悉程度。

  1. 動詞原則

動詞是一個句子的靈魂所在,也是面試官判斷你的個人經歷是否真實的重要標準之一。在經歷描述中,要著重注意動詞的挑選,最準確的動詞才能夠傳達出你的經歷價值。

比如表明自己行為的動詞“從事”“積累”“得到”,似乎是所有工作中都用得到,但根本看不出這份經歷的獨特性。

為了展現你的經歷真實與價值,足夠專業化的動詞才是加分項。

  1. 數字原則

多用數字其實是簡歷很好的加分項,數字的意義是將你的經歷量化。豐富的數字比華麗的形容詞要更有說服力

數字一般可以用於三種維度:價值,時間,數量。

牢記,能夠量化的內容都量化,用資料展現你豐厚的經歷。

  1. 結果原則

許多同學在經歷描述時會忽略自己經歷的最終成果,但結果是證明你經歷價值的重要依據之一

STAR法則 Situation 專案背景

介紹一下你所處的平臺和團隊有多優秀,以證明你曾經的被認可程度。

Task 專案目標

介紹一下你們此項活動的具體目標與設想,有時可以和上一部分進行合併。

Action 你做了什麼

說明你在團隊中做出了怎樣的努力,充當了怎樣的角色,發揮了什麼樣的作用,以此展現你的個人實力和在團隊中的成長與歷練。這一部分往往是最重要的。

Result 得到怎樣的結果

說明你最終取得了怎樣的工作成果,表述時可以參照上部分的“四大原則”。

五分鐘學大資料公眾號對話方塊傳送:簡歷,會有幾十份大資料簡歷模板供你參考!


最後給大家一些高逼格的關鍵詞和動詞,僅供娛樂

注:以下詞語簡歷及面試時可以用,但是別太過!

高逼格名詞:生命週期,價值轉化,強化認知,資源傾斜,完善邏輯,抽離透傳,複用打法,商業模式,快速響應,定性定量,關鍵路徑,去中心化,結果導向,垂直領域,歸因分析,體驗度量,資訊屏障,資源整合

高逼格動詞:覆盤,賦能,加持,沉澱,倒逼,落地,串聯,協同,反哺,相容,包裝,重組,履約,響應,量化,佈局,聯動,細分,梳理,輸出,加速,共建,支撐,融合,聚合,整合,對標,聚焦,抓手,拆解,抽象,摸索,提煉,打通,打透,吃透,遷移,分發,分裝,輻射,圍繞,複用,滲透,擴充套件,開拓,皮實,共創,共建,解耦,整合,對齊,拉齊,對焦,給到,拿到,死磕

你們對這些詞有什麼看法呢。

最後,來一個面試官的死亡提問:

你這個問題的底層邏輯是什麼?頂層設計在哪?最終交付價值是什麼?過程的抓手在哪?如何保證回答閉環?你比別人的亮點在哪?優勢在哪?你的思考和沉澱是什麼?這個問題換成我來問是否會不一樣?你的獨特價值在哪?

討論

你是因為什麼原因而從事大資料工作呢,因為大學學的這個專業?大資料比較熱門而學?大資料工資高轉行學?歡迎在評論區留下你的留言!

相關文章