最近有公眾號讀者私聊我時發現有不少應屆生和初學者,他們在大資料怎么學,以及大資料怎么面試,簡歷怎么寫等方面有很大的困擾,今天我們就來談談關于大資料的一些事,
寫在前面:每個人的學習方法可能不一樣,只有找到適合自己的才是最好的,以下這些只是我在學習大資料時的一些總結及經驗,有不全面的地方還請各位大佬多包涵,互相學習,共同進步,非常感謝!
我之前在知憾訓答過類似的問題,有人問大資料工程師的日常作業內容是干嘛?,我當時看到之后就隨意回答了下,先說了下大資料日常干嘛,然后又說了下怎么準備大資料的面試,怎么學大資料等等,沒想到反響還挺好,截圖了部分評論:




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

1. 大資料學習
大資料怎么學,該學哪些東西,不需要學哪些東西,是大家問的最多的一個問題,也有不少同學問培訓機構講的框架太多了,是否都要掌握,接下來我們逐個決議,
從 2008 年 Hadoop 成為 Apache 頂級專案開始,大資料迎來了體系化的快速發展,到如今已經走過十幾個年頭,這些年里大資料框架層出不窮,可以用“亂花漸欲迷人眼”形容,框架這么多,應該怎么學?
我們可以思考下整個大資料的流程是什么,從資料采集->資料存盤->資料處理->資料應用,再加一個任務調度,每個流程都有很多對應的大資料框架,我們學習其中一兩個比較重要,也就是企業用的較多的框架即可,
資料采集:就是把資料從其他平臺采集到我們大資料平臺,只是負責采集資料,所以對這個流程的框架要求是會用即可,日志采集工具如Flume,大資料平臺與傳統的資料庫(mysql、postgresql...)間進行資料的傳遞工具如Sqoop,我們會用即可,這種工具上手也很快,沒有太復雜的功能,
資料存盤:資料存盤就比較重要了,大資料如此流行,和大規模分布式資料存盤快速發展有很大關系,當然資料存盤的框架也比較多,不同的框架,功能不太一樣,首先第一個:Hadoop HDFS,分布式檔案系統,HDFS的誕生,解決了海量資料的存盤問題, 但是一個優秀的資料存盤系統需要同時考慮資料存盤和訪問兩方面的問題,比如你希望能夠對資料進行隨機訪問,這是傳統的關系型資料庫所擅長的,但卻不是分布式檔案系統所擅長的,那么有沒有一種存盤方案能夠同時兼具分布式檔案系統和關系型資料庫的優點,基于這種需求,就產生了 HBase、MongoDB等,
資料處理:大資料最重要的環節就是資料處理了,資料處理通常分為兩種:批處理和流處理,
-
批處理:對一段時間內海量的離線資料進行統一的處理,對應的處理框架有 Hadoop MapReduce、Spark、Flink 等;
-
流處理:對運動中的資料進行處理,即在接收資料的同時就對其進行處理,對應的處理框架有 Spark Streaming、Flink 等,
批處理和流處理各有其適用的場景,時間不敏感或者硬體資源有限,可以采用批處理;
時間敏感和及時性要求高就可以采用流處理,隨著服務器硬體的價格越來越低和大家對及時性的要求越來越高,流處理越來越普遍,如股票價格預測和電商運營資料分析等,
大資料是一個非常完善的生態圈,有需求就有解決方案,為了能夠讓熟悉 SQL 的人員也能夠進行資料處理與分析,查詢分析框架應運而生,常用的有 Hive 、Spark SQL 、Flink SQL、Phoenix 等,這些框架都能夠使用標準的 SQL 或者 類 SQL 語法靈活地進行資料的查詢分析,
這些 SQL 經過決議優化后轉換為對應的作業程式來運行,如 Hive 本質上就是將 SQL 轉換為 MapReduce 或 Spark 作業,Phoenix 將 SQL 查詢轉換為一個或多個 HBase Scan,
大資料流處理中使用的比較多的另外一個框架是 Kafka,Kafka是一種高吞吐量的分布式發布訂閱訊息系統,它可以用于消峰,避免在秒殺等場景下并發資料對流處理程式造成沖擊,
資料應用:處理好的資料就可以輸出應用了,如可視化展示,推動業務決策,用于推薦演算法,機器學習等,
任務調度:復雜大資料處理的另外一個顯著的問題是,如何調度多個復雜的并且彼此之間存在依賴關系的作業?基于這種需求,產生了 Azkaban 和 Oozie 等作業流調度框架,
同時針對集群資源管理的需求,又衍生了 Hadoop YARN,資源調度框架,
想要保證集群高可用,需要用到 ZooKeeper ,ZooKeeper 是最常用的分布式協調服務,它能夠解決大多數集群問題,包括首領選舉、失敗恢復、元資料存盤及其一致性保證,
以上,在分析大資料處理流程中,我們把常用的框架都說了下,基本上也是大資料中最常用的框架,盡量全部掌握,
以上框架大部分是用Java寫的,有部分是用Scala寫的,所以我們必須掌握的語言是Java、Scala,以便我們開發相關應用及閱讀原始碼等,
總結
我們總結下重點框架:
-
語言:Java 和 Scala(語言以這兩種為主,需要重點掌握)
-
Linux(需要對Linux有一定的理解)
-
Hadoop(需理解底層,能看懂原始碼)
-
Hive(會使用,理解底層SQL轉化原理及優化)
-
Spark(能進行開發,對原始碼有了解)
-
Kafka(會使用,理解底層原理)
-
Flink(能進行開發,對原始碼有了解)
-
HBase(理解底層原理)
-
Zookeeper(會用,最好理解原理)
-
Sqoop、Flume、Oozie/Azkaban(會用即可)
如果走數倉方向,需要掌握以下技能:
-
離線數倉建設(搭建數倉,數倉建模規范)
-
維度建模(建模方式常用的有范式建模和維度建模,重點關注維度建模)
-
實時數倉架構(兩種數倉架構:Lambda架構和Kappa架構)
不管離線還是實時,重中之重就是:SQL,多找一些SQL題練習!
等作業之后,有時間還需要學習比較流行的 OLAP 查詢引擎:
Impala 、Presto、Druid 、Kudu 、ClickHouse 、Doris
如果還有時間,需學習資料質量及資料治理相關的內容!
另還有元資料管理工具:Atlas
資料湖-Data Lake 三劍客:Delta、Hudi、Iceberg
2. 大資料就業方向
因為大資料涉及到的知識相對比較廣泛,全部學精難度太大,所以現在企業在招聘的時候會細分大資料崗位,專注于某個方向招聘,所以先解下大資料的都有哪些就業方向,然后你在后續的學習程序中對哪部分比較感興趣就重點關注那部分
從上帝視角看一張圖,了解下大資料所處的位置及與相關崗位的關系

大資料行業的位置
-
數倉工程師 (全稱:資料倉庫工程師)
數倉工程師日常作業一般是不寫代碼的,主要以寫 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架構)
-
大資料開發工程師
資料開發工程師一般是以寫代碼為主,以 Java 和 Scala 為主,
大資料開發分兩類,第一類是撰寫Hadoop、Spark、Flink 的應用程式,第二類是對大資料處理系統本身進行開發,如對開源框架的擴展開發,資料中臺的開發等!
需要重點掌握的技能:
-
語言:Java 和 Scala(語言以這兩種為主,需要重點掌握)
-
Linux(需要對Linux有一定的理解)
-
Hadoop(需理解底層,能看懂原始碼)
-
Hive(會使用,能進行二次開發)
-
Spark(能進行開發,對原始碼有了解)
-
Kafka(會使用,理解底層原理)
-
Flink(能進行開發,對原始碼有了解)
-
HBase(理解底層原理)
通過以上技能,我們也能看出,資料開發和數倉開發的技能重復率較高,所以很多公司招聘時 大資料開發 和 數倉建設 分的沒有這么細,資料開發包含了數倉的作業!
-
ETL工程師
ETL是三個單詞的首字母,中文意思是抽取、轉換、加載
從開始的圖中也能看出,ETL工程師是對接業務和資料的交接點,所以需要處理上下游的關系
對于上游,需要經常跟業務系統的人打交道,所以要對業務系統比較熟悉,比如它們存在各種介面,不管是API級別還是資料庫介面,這都需要ETL工程師非常了解, 其次是其下游,這意味著你要跟許多資料開發工程師師、資料科學家打交道,比如將準備好的資料(資料的清洗、整理、融合),交給下游的資料開發和資料科學家,
需要重點掌握的技能
-
語言:Java/Python(會基礎)
-
Shell腳本(需要對shell較為熟悉)
-
Linux(會用基本命令)
-
Kettle(需要掌握)
-
Sqoop(會用)
-
Flume(會用)
-
MySQL(熟悉)
-
Hive(熟悉)
-
HDFS(熟悉)
-
Oozie(任務調度框架會用其中一個即可,其他如 azkaban,airflow)
-
資料分析工程師
在資料工程師準備好資料維護好數倉后,資料分析師就上場了,
分析師們會根據資料和業務情況,分析得出結論、制定業務策略或者建立模型,創造新的業務價值并支持業務高效運轉,
同時資料分析師在后期還有資料爬蟲、資料挖掘和演算法工程師三個分支,
需要重點掌握的技能:
-
數學知識(數學知識是資料分析師的基礎知識,需要掌握統計學、線性代數等課程)
-
編程語言(需要掌握Python、R語言)
-
分析工具(Excel是必須的,還需要掌握 Tableau 等可視化工具)
-
資料敏感性(對資料要有一定的敏感性,看見資料就能想到它的用處,能帶來哪些價值)
3. 大資料面試
如果讓我招大資料工程師,我第一看中的不是技術,而是你有沒有獨立思考的能力,給你一個你毫不熟悉的專案,能不能快速理清業務邏輯,能不能將需求完整的復述一遍,因為這太重要了,我司目前招進來兩個大資料初級,不知道是跨行業的原因,還是其他,需求始終理解的差那么一點,也可能是我們的業務比較復雜,但是需求理解不到位,技術在厲害也是沒用
但是話又說回來,需求這東西你沒辦法提前復習啊,只有需求來了才知道要干什么,所以面試時只能考察技術及你的過往專案經歷,通過你之前做的專案看你對這個專案的理解情況,這主要看和面試官有沒有眼緣,沒有具體標準,因為每個人做的專案可能不一樣,你專案中會的地方多說一點,不會的少說一點或者干脆不說,面試官感覺你說得好,你就有希望

但是技術是有標準的,問你某個技術點,你會就是會,不會就是不會
但是在學技術的時候要多思考,這個技術點為什么這樣實作,有什么好處,多思考會讓大腦越來越靈活,就比如Flink支持精準一次處理語意,但是大家深入思考下flink的精準處理是怎么實作的,有人說是通過兩階段提交協議實作的,對,是通過這個協議,那再深入思考下,這個協議的主要內容是什么,底層的演算法是怎么實作的,這樣一步步的向下思考,你就會發現一個新世界,
以上說這么多,其實就兩點,面試主要考察技術和專案,專案也是非常重要的,通過專案一方面可以考察你的技術掌握情況,另一方面考察你對專案的理解情況,如果你連自己簡歷中的專案都不太熟悉,說的磕磕絆絆,那么你進到公司后,怎么能短時間內快速熟悉業務呢,
所以,簡歷中一定要寫專案,并且對專案要非常熟悉!
五分鐘學大資料公眾號對話框發送:面試,會有一份帶決議的超全大資料面試題!
4. 大資料簡歷
對于許多應屆生來說,有不少是帶著學生思維來撰寫簡歷,不僅于求職加分無益,還給自己挖了許多坑,敗在簡歷關,等于一場馬拉松摔輸在了起跑線,還沒開始就結束了,
簡歷的大忌:
-
海投簡歷
不要一份簡歷原封不動地發送給數十家企業,這樣的結果往往是石沉大海,
求職講求“人崗匹配”,即面試者個人素質與職位要求高度一致,要針對崗位要求適當修改簡歷,提升崗位匹配度,
-
簡歷毫無重點
一篇優秀的簡歷,應該是懂得“舍棄”的簡歷,你不需要將自己大學幾年來所有的事件經歷都羅列上去,而是應該根據企業和崗位的需求進行取舍,選取出最匹配的經歷大篇幅呈現出來,其他經歷大可一筆帶過甚至干脆不談,
簡歷怎么寫:
重點來啦!!! 寫簡歷一定要用四大原則和STAR法則!
什么是四大原則,什么是STAR法則,接下來我們就逐項決議:
四大原則:
-
關鍵詞原則
關鍵詞原則指的是,多使用一些行業術語或專業詞匯放入你的經歷描述中,凸顯出你的專業性以及對該行業的熟悉程度,
-
動詞原則
動詞是一個句子的靈魂所在,也是面試官判斷你的個人經歷是否真實的重要標準之一,在經歷描述中,要著重注意動詞的挑選,最準確的動詞才能夠傳達出你的經歷價值,
比如表明自己行為的動詞“從事”“積累”“得到”,似乎是所有作業中都用得到,但根本看不出這份經歷的獨特性,
為了展現你的經歷真實與價值,足夠專業化的動詞才是加分項,
-
數字原則
多用數字其實是簡歷很好的加分項,數字的意義是將你的經歷量化,豐富的數字比華麗的形容詞要更有說服力,
數字一般可以用于三種維度:價值,時間,數量,
牢記,能夠量化的內容都量化,用資料展現你豐厚的經歷,
-
結果原則
許多同學在經歷描述時會忽略自己經歷的最終成果,但結果是證明你經歷價值的重要依據之一,
STAR法則

Situation 專案背景
介紹一下你所處的平臺和團隊有多優秀,以證明你曾經的被認可程度,
Task 專案目標
介紹一下你們此項活動的具體目標與設想,有時可以和上一部分進行合并,
Action 你做了什么
說明你在團隊中做出了怎樣的努力,充當了怎樣的角色,發揮了什么樣的作用,以此展現你的個人實力和在團隊中的成長與歷練,這一部分往往是最重要的,
Result 得到怎樣的結果
說明你最終取得了怎樣的作業成果,表述時可以參照上部分的“四大原則”,
五分鐘學大資料公眾號對話框發送:簡歷,會有幾十份大資料簡歷模板供你參考!
最后給大家一些高逼格的關鍵詞和動詞,僅供娛樂:

注:以下詞語簡歷及面試時可以用,但是別太過!
高逼格名詞:生命周期,價值轉化,強化認知,資源傾斜,完善邏輯,抽離透傳,復用打法,商業模式,快速回應,定性定量,關鍵路徑,去中心化,結果導向,垂直領域,歸因分析,體驗度量,資訊屏障,資源整合
高逼格動詞:復盤,賦能,加持,沉淀,倒逼,落地,串聯,協同,反哺,兼容,包裝,重組,履約,回應,量化,布局,聯動,細分,梳理,輸出,加速,共建,支撐,融合,聚合,集成,對標,聚焦,抓手,拆解,抽象,摸索,提煉,打通,打透,吃透,遷移,分發,分裝,輻射,圍繞,復用,滲透,擴展,開拓,皮實,共創,共建,解耦,集成,對齊,拉齊,對焦,給到,拿到,死磕
你們對這些詞有什么看法呢,

最后,來一個面試官的死亡提問:
你這個問題的底層邏輯是什么?頂層設計在哪?最終交付價值是什么?程序的抓手在哪?如何保證回答倍訓?你比別人的亮點在哪?優勢在哪?你的思考和沉淀是什么?這個問題換成我來問是否會不一樣?你的獨特價值在哪?

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

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/316450.html
標籤:其他
下一篇:kafka掃盲-思考與實作
