2021最全大数据学习路线(建议收藏)
個人簡介:非科班雙一流碩士,CAE仿真方向轉行大數據,現杭州某大廠大數據工程師!
我可以給你提供最全的【大數據學習路線】;幫助你搭建大數據知識體系,從入門到精通;親自指導你大數據工程師面試的簡歷該如何撰寫!
前言
本文針對非科班生轉行大數據所遇到的問題,提出一些切實的建議,以免小伙伴在學習過程中走彎路。
我依據自己轉行所走過的一些彎路,總結了我自己大數據學習的詳細路線,推薦一些我看過的大數據課程以及技術書籍,幫助各位小伙伴做一個資源篩選。
我能夠理解每一位即將轉行和正在轉行的小伙伴,你們可能焦慮自己是否能夠學好這么多的大數據知識,也可能正在擔心35歲后的自己該怎么辦?
曾經的我,也曾陷入同樣的焦慮和迷茫情緒。這些情緒完全是由于自己在學習過程中,你所期望的高度和自己目前所處的高度的落差所導致的,都是正常的情緒。
但是我覺得我們也不要過于擔憂,因為未來總是不可預測的,誰也不知道35歲以后的我們會做什么,我們不要過早的杞人憂天,也不要過早的限制自己,我們現在所選擇的工作,未來不一定就得干到老。
所以,當前我們應該要先沉淀自己,打造自己在未來的核心競爭力,先攢到自己的第一桶金才是王道,有資本了,就有更多的選擇和更大的可能。
1大數據發展前景
我根據我國發布的《第十四個五年規劃和2035年遠景目標綱要》,帶大家看看以下一個指標。
在創新驅動這個類別中,數字核心產業增加值占GDP比重要從2020年的7.8%,到2025年要增加到10%。這個概念大家可能還不是很敏感,跟著小林繼續看下面另一張圖。
我國在大力發展的數字經濟核心重點產業中,其中包括大數據領域,如下圖所示。政府大力推動大數據領域技術發展創新,實現數字化轉型,大數據在未來有較大的發展潛力!
2020年是我國5G的元年,國家在大力建設 5G 的基礎設施。2021年,5G手機可能會逐漸增長,將會是大數據爆發的1年。5G網絡所產生的數據速率:每秒 10G 的數據量,這會使得各個公司的數據量爆發式增長。
此外,我國第一批大數據專業在2017年開設,2021年第一批大數據專業學生才畢業。因此,大數據領域人才緊缺,需要大量的數據研發、數據分析以及數據挖掘工程師。
2學習路線總論
未來想在互聯網發展,應該怎么學?就大數據方向來說,我個人認為主要有三個方面:
第一,計算機基礎知識是不可或缺的,如果你擁有扎實的基礎知識,在遇到問題時可以快速認識到問題的本質,從而解決問題。我至今在不斷在加強自己計算機基礎知識的學習;
第二,大數據框架的技術原理,對于重點框架要重視企業級調優以及源碼的學習。
第三,項目實戰。學習了大量的技術需要結合項目場景去應用,才能加深你對技術的理解。
大數據是一個進可攻、退可守的方向。
進可以往人工智能方向發展,但是需要非常扎實的數學知識。
我非常贊同我導師曾經跟我說的一句話:“任何問題,最終都會歸咎于數學問題”!因此較好的數學能力可以支撐你不斷的挑戰新的問題!
退可以往大數據應用開發方向發展,但是需要豐富的框架使用和調優經驗。
2.1計算機基礎
- 精通一門語言:Java,C,C++,Python,Go,Scala,等等。(大數據建議選擇 Java、Scala或者Python)我自己學習的是Java語言,語言只是一門工具,無需太過糾結。
- 數據結構與算法:鏈表,隊列,堆,二叉樹,排序,查找,貪心,回溯等。
- 計算機網絡與基礎:OSI七層體系,常用的TCP/IP四層體系。
- 操作系統:進程與線程,樂觀鎖與悲觀鎖,緩存一致性,CPU時間片調度。
- 數學:高等數學,線性代數,概率論與數理統計。
推薦數學是考慮到一些小伙伴要進一步往 AI 方向發展,而數學是機器學習的基石。你只有擁有了這些底層基礎,才能支撐你走得更遠!
2.2大數據組件
整個大數據知識體系學習需要花較長的時間,大數據框架也比較多,下圖是我自學大數據的技術棧。我是依據目標企業的招聘要求,選擇以下技術棧學習,還有其它的框架,可以視情況而定,選擇要不要學。
Java是基礎工具,我個人是學完JavaSE,重點對集合、多線程以及JVM進行深入學習,JavaEE沒有花時間學。如果你時間充裕,比如大二或者研一同學,可以深入學習JavaEE,再進行后續的學習也行。
目前企業生產基本使用的是 Linux 系統,掌握 Linux 基本原理是未來必備技能。
Hadoop 是分步式系統基礎架構,主要解決海量數據的存儲和海量數據分析計算問題,包含HDFS,MapReduce,Yarn 三個組件。其它框架在此不作介紹了。
針對一個技術框架如何學習,可以參照我下面這個視頻!我總結了框架學習要按照階段去學,循序漸近,而不是一蹴而就,急功近利會導致你技術學的不夠深入不說,更重要的是浪費了你的時間。
2.3項目實踐
大部分非科班同學都會遇到的痛點,在學校沒有實際的項目。但是找工作的時候,簡歷上至少需要23個項目,并且要有12個亮點項目。比如在某個項目中,你遇到什么困難,采用什么技術解決的?做了哪些優化?
關于項目這塊,后面我有項目實戰推薦!
3學習資料推薦
我自己作為一名非科班轉型者,深知一份好的入門學習資料可以節約多少時間。因此,我對自己自學以來的歷程,做了一下復盤,并且把我自己的學習路線以及自學的學習資料推薦給大家。
希望能夠給轉行的小伙伴們一點參考。主要包含了計算機基礎知識、大數據框架學習、項目實戰三個模塊相關的入門視頻和好的書籍推薦!
建議零基礎同學先學習Java語言基礎語法,一個月左右便可以把JavaSE學完,后續找面經查漏補缺!
之后搭建Linux虛擬機平臺,為后續大數據框架學習作準備。
因為我的時間比較緊急,不僅要完成導師布置的任務,還要擠出時間學習。所以,我的計算機基礎知識是穿插在大數據框架學習中間,面試前重點刷了一些常見的面試題。以下是我刷的Java面試題博客鏈接。
最全 Java 面試總結:
https://blog.csdn.net/thinkwon/category_9731418.html
3.1基礎
編程語言基礎:Java基礎是所有后續大數據學習的基石。我最開始是通過看書學習,看完后沒有什么感覺,幸好之后找到了尚學堂高淇的300集,這個視頻里把每一個知識點都講的非常全面,也會有詳細的案例。如果你是零基礎,建議看視頻入門,代碼一定要自己敲一遍,切忌眼高手低!
高淇三百集:
https://www.bilibili.com/video/BV1oy4y1H7R6?p=16
Java 推薦《Java編程思想》,有在線中文版
此外,還有Scala語言,因為后續要學到 Spark、Flink等框架,這些框架采用Scala編程極為靈活,所以需要學習Scala的編程規范。關于Scala學習,推薦尚硅谷老師的視頻。
尚硅谷Scala語言入門:
https://www.bilibili.com/video/BV1Xh411S7bP?p=50
注意:在這個階段,Scala 語言可以先不學,可以在學習 Spark 之前學習!
數據結構與算法:強烈推薦左神的視頻,他講的內容基本上和企業面試相關,通俗易懂。我當時看的是一個在牛客網上講視頻:其中包括算法初級和進階。在聽這個視頻前,最好去了解下基本的數據結構!可以從下面百度網盤中獲取視頻資料和課件!看完視頻后,具備一定的基礎了,可以把劍指offer刷完!
數據結構與算法視頻鏈接:
https://pan.baidu.com/s/14bGK2Wva2MbyviIKjkhNNQ
提取碼:3ojw
如果網盤鏈接失效,請添加我微信:a934614406,備注【左神算法】,我重新給你發一遍!
計算機網絡與基礎:我當時看的是B站方老師講解的視頻,講的比較全面透徹,而且時間也不是很長,總共42節,每節平均40分鐘左右,一周左右便可以看完,針對非科班同學特別友好!要留大把時間給后面技術框架學習,聽完視頻,可以去搜一搜相關的面經,可以查漏補缺。
方老師計算機網絡鏈接:
https://www.bilibili.com/video/BV1yE411G7Ma?p=23
操作系統:操作系統知識比較多涉及到的內容也比較細,如果你的時間充裕,且不著急面試找工作的話,你可以去B站搜索哈工大李治軍老師的課程,老師會用Linux內核代碼得視角幫助你理解操作系統得原理。
操作系統鏈接:
https://www.bilibili.com/video/BV1d4411v7u7?from=search&seid=15412161143884682127
如果你時間緊急,想直接應對面試,這里給你分享一份總結好的操作系統重點面試知識!
請添加我微信:a934614406,備注【操作系統】,我給你發一份詳細的操作系統面試知識!
數學理論基礎:大數據與人工智能結合,那么數學基礎是不可或缺的。但是,數學是學不完的,也沒有幾個人像數學專業的同學或者博士那樣精通數學,所以大家要認識到,入門 AI 只要掌握數學中的基礎知識就好,主要包含:高等數學、線性代數、概率論與數理統計三門課程。這里為大家整理了三篇簡易的數學入門文章:
高等數學:https://zhuanlan.zhihu.com/p/36311622
線性代數:https://zhuanlan.zhihu.com/p/36584206
概率論與數理統計:https://zhuanlan.zhihu.com/p/36584335
推薦筆記:《機器學習的數學基礎》和《斯坦福大學機器學習的數學基礎》
鏈接:https://pan.baidu.com/s/1mEPLOurp57IZL9GNOwx2sw
提取碼:iihb
如鏈接失效,請加我微信:a934614406,備注【數學基礎】
3.2大數據框架
Linux:無論你做的是后端還是大數據,Linux已經成為企業篩選人才的一個標準。我極力推薦觀看尚硅谷韓順平老師的Linux入門視頻教程,清華大學的學霸,課程邏輯清晰,講解透徹。
國內入門Linux課程幾乎選擇該門課程。這也是我學習印象最深刻的一門課,看完后,只能一句臥槽,居然還能講的的這么清晰!
尚硅谷韓順平Linux鏈接:
https://www.bilibili.com/video/av21303002
可以結合《Linux就該這么學》這本術一起學習,加深對 Linux 理解!
Hadoop(重點):Hadoop是大數據技術中最重要的框架之一,是學習大數據的第一課。
目前,Hadoop已經從1.x版本發展到現在的3.x版本。Hadoop一共包含3個組件:分別是最強的分步式文件系統HDFS,海量數據并行計算框架MapReduce,流行的資源管理系統Yarn。
任何框架的學習,先搭建好環境,線上跑一個測試案例,之后再深入其原理。
HDFS有偽分布式、完全分步式以及高可用架構模型,重點了解HA架構模型以及各個角色的職責。
HDFS的架構模型主要包括以下角色:Namenode(Active、Standyby),Datanode,JournalNode,DFSZKFailoverController(ZKFC),SecondNamenode。
雖SecondNamenode應用較少,但還是要了解其工作機制。
MapReduce的核心思想、詳細工作流程,Shuffle機制也要重點掌握,面試會問。
Yarn資源管理系統不僅適用于MapReduce計算框架,同時也會被用于Spark計算框架,所以它的工作機制也非常重要。
我推薦大家學習尚硅谷的Hadoop教程,從原理到生產實踐調優,再深入源碼,非常透徹。
尚硅谷Hadoop鏈接:
https://www.bilibili.com/video/av21303002
可以結合《Hadoop權威指南》第四版學習。
如果對 Hadoop 源碼感興趣,可以參考《Hadoop技術內幕》(董西成)和《Hadoop2.x HDFS源碼剖析》這兩本書。
ZooKeeper:ZooKeeper是一個分步式協調管理組件,主要的典型應用場景是數據發布/訂閱、分步式協調/通知、集群管理等。
你可以結合《從Paxos到ZooKeeper》這本書結合一起學,這本書不僅闡述了CAP理論,把ZooKeeper的核心原理講的很透。小白可以從下面這個視頻入門。
尚硅谷ZooKeeper鏈接:
https://space.bilibili.com/302417610/video?keyword=ZooKeeper
注:視頻僅作為初學者入門,要深入學習還需要看書和研究官方文檔。
Hive:Hive 是一款開源數據倉庫工具,它可以將結構型數據映射成一張表,但其底層使用的是MapReduce,提供類SQL查詢,一般稱之為HQL。
初學者入門Hive,可以從視頻開始,重點需要了解內部表與外部表的區別,以及分區分桶等。
如果你要深入學習其內部原理及調優,可以去讀一讀《Hive編程指南》和Apache官方文檔,對企業級的調優有詳細的闡述。
尚硅谷Hive鏈接:
https://www.bilibili.com/video/BV1EZ4y1G7iL
HBase:HBase是一個結構化數據的分步式存儲系統,可擴展也支持海量數據存儲的NoSQL數據庫,是每一個大數據從業者應該要掌握的基本框架。重點要掌握其架構原理,各個角色職責,Compact流程和Region流程。下面是入門 HBase 的視頻教程。
尚硅谷HBase鏈接:
https://www.bilibili.com/video/BV1Y4411B7jy
注:可以結合《HBase權威指南》和《HBase實戰中文版》兩本書,加深對 HBase 的理解。
Redis(重點!):Redis是一個開源的 key-value 存儲系統,支持存儲的 value 類型相對更多,并且支持各種不同方式的排序,為了保存效率,數據都是緩存在內存中。
該組件無論是后端還是大數據,都是必會的一個框架。我學習一個新技術,先是通過視頻入門,之后再去看相關書籍和官方文檔,深入理解技術細節。
Redis 推薦大家看尚硅谷周陽老師講的,就是該課程有點老,很多新的特性可能無法了解。我貼出了兩個Redis 課程入門學習鏈接:
尚硅谷周陽老師Redis鏈接:
https://www.bilibili.com/video/BV1oW411u75R
2021最新入門到精通Redis鏈接:
https://www.bilibili.com/video/BV1Rv41177Af?p=4
推薦書籍:《Redis設計與實現》和《Redis 深度歷險:核心原理與應用實踐》
Kafka(重點!): 作為高吞吐量的分步式發布訂閱消息系統,Kafka 可以處理消費者規模的網站中所有動作流數據。
這里建議:先了解 Kafka 是解決什么問題的而產生的,再了解其基本架構,最后深入理解核心實現原理。
下面是 Kafka 入門視頻鏈接:
尚硅谷Kafka入門鏈接:
https://www.bilibili.com/video/BV1a4411B7V9
推薦書籍:首推《深入理解 Kafka:核心設計與實踐原理》,想要深入了解 Kafka 源碼的,你可以跟著《Apache Kafka 源碼剖析》一起看,可以讓你頓悟!
Spark(重點!重點!重點!):Spark 支持了 Streaming、SQL、GraphX、MLLib等應用。但相較于 Hadoop 中的 MapReduce 計算框架,Spark速度快10到100倍左右
另外,計算過程中,如果某一節點出現問題,事件重演的代價遠低于 MapReduce。Spark SQL 可以對結構化數據進行處理
Spark Streaming 主要用于實時流數據處理場景,支持多種數據源,DStream 是 Spark Streaming 的基礎抽象
Spark MLlib 提供了常見的機器學習功能的程序庫,GraphX 主要用于圖計算。下面是我為大家篩選的 Spark 入門學習鏈接,這個視頻主要是基于Scala 2.12版本講解,對最新的 Spark3.0作了詳細的介紹,是一套小白入門學習的好資料。
2021Spark 從入門到精通鏈接:
https://www.bilibili.com/video/BV11A411L7CK
注:學習 Spark 之前,一定要先學習 Scala 語言。在編程語言基礎中,已經給出了 Scala 的詳細學習推薦!
推薦書籍:《learning Spark》、《深入理解Spark 核心思想與源碼分析》
Flink(重點!重點!重點!):Flink 是一個分步式處理引擎,用于對無界和有界數據流進行狀態計算。Flink 計算具有快速、靈巧、結果準確以及良好的容錯性等一系列優點,被廣泛用于各行各業的流式數據場景。
目前,國內形成以阿里為首的企業,騰訊,京東,滴滴,攜程,美團等,都在使用 Flink框架。Flink 在大數據的流式計算占據著非常重要的地位,每一個大數據人都應該要掌握這門技術。
Flink 給大家推薦的是尚硅谷武老師的課,清華畢業的武老師把技術知識點剖析得非常透徹,該課程主要包含兩個模塊:Flink 理論基礎和基于 Flink 得電商用戶行為分析項目實戰。
尚硅谷Flink鏈接:
https://www.bilibili.com/video/BV1Qp4y1Y7YN
推薦書籍:《Flink原理、實戰與性能優化》
數據挖掘和機器學習這部分內容,我目前還沒有學習,等后續我學完后,再整理這部分內容給大家作個參考。
3.3項目
關于項目,這是咱們非科班同學在面試時最薄弱的一環。在學校,你幾乎很難去做一個實實在在的落地項目,因為基本接觸不到相關的項目。
因此,我建議大家要提前計劃實習,通過實習讓自己獲得項目經驗。我是從研二上學期開始自學編程的,本科粗淺的學過一點 C++,算是有一點點基礎。
當時,我一邊幫導師做自己專業相關的課題項目,一邊學習大數據技術。下圖是我自學時做的部分筆記。
如果你現在處在大二、研一這個階段,你可以提前計劃實習,在實習公司主動去了解一些相關的落地項目;但如果你即將面臨找工作,并且各個技術棧還沒有學完,你可以先把基礎技術框架過一遍,然后參照我給你推薦的下面幾個項目。
尚硅谷大數據電商數倉項目鏈接:
https://www.bilibili.com/video/BV1Hp4y1z7aZ
技術選型:Hadoop+ZooKeeper+Hive+Flume+Sqoop+Kafka+Azkaban+Kylin+Spark
這個項目主要是講解了數據倉庫的架構模型,實現了數倉項目的閉環,從數據采集到數倉建模,再到數倉應用等。項目中還涉及到一些其它技術,中間可以穿插著學習。
在面試過程中,首先要把項目架構說清楚以及技術選型的原因,是否有其它替代方案;其次說明你在項目中碰到了什么問題,你用什么方法解決該問題的;最后要清晰的能表述出你負責的部分的代碼邏輯。
雖然說,電商數倉項目比較普遍,但在沒有項目的情況下,可以作為基礎項目。
尚硅谷大數據實時處理(SparkStreaming)項目鏈接:
https://www.bilibili.com/video/BV1tp4y1B7qd?spm_id_from=333.788.b_636f6d6d656e74.27
該項目基于SparkStreaming對電商平臺的用戶行為以及訂單業務,通過不同的指標和維度,進行實時的分析和計算。主要包括數據產生,數據傳輸,數據計算以及最終的數據可視化。
可以掌握SparkStreaming實時計算的流程,還可以掌握大數據采集框架、高并發的分步式消息隊列、基于內存的高吞吐的實時計算技術、以及海量存儲毫秒級查詢的數據庫。
Flink實時項目:這個項目是我自己私藏的項目,你可以添加我的微信,給你發 Flink 項目資料。
聲明:上述提及的所有書籍和學習資料小林大部分都親自學過,均為小林友情推薦,絕不含任何廣告性質!
4面試
找工作對于每個人來說都是一項浩大的工程,我還記得第一次面試時,心中的不安感。我是在研二下學期開始著手準備秋招的,當時因為疫情原因還沒有返校。
如果你在實習且不能轉正的,你可以在7月份左右準備各個公司的提前批招聘,但要注意該公司的提前批對秋招應聘是否有影響,因為提前批基本都是神仙打架,我當時只是為了積攢面試經驗。
對于大部分人來說,最重要的是秋招,或者年初的春招,我給大家從獲取招聘信息的途徑和面試經驗兩個方面去分享下我的經歷。
4.1如何獲取各個公司的內推資格?
基本上,小林秋招主要通過上述方式投遞自己的簡歷,但還需要要注意以下幾點:
- 一個公司切記不要投遞多個崗位,否則 HR 不知道你到底能勝任哪個崗位。
- 可以先投一些小公司,積攢一些面試經驗后,再去投你的目標企業,但也不要等到很晚。
- 簡歷投遞時間:周二——周四的 8:00-17:00。周一HR一般會開會作周計劃,周五一般是周總結會,HR沒有時間去看郵箱。
- 簡歷最好針對性的制作,結合每個崗位的具體要求和自身能力來寫,可以重點突出自己的底層能力(溝通能力、管理能力、解決矛盾能力等等)和技術能力。
4.2面試經驗
我整個秋招投遞了100多家公司,見識了各種各樣的面試現場。這里強烈建議大家,在面試后的第一時間,去做下面試總結,以提高自己在某些技術上的不足。
通過不斷的總結,你會了解到,每個公司技術面試的問題都相差不大,特別對于應屆生,要求你計算機的基礎知識特別扎實。
當然,還有一個最重要環節,就是自我介紹,需要你自己提前根據自身情況去寫好,切忌去念簡歷上已經存在的信息
多去表達一些你自己的經歷以及能證明自己能力的事情。要求語言簡練,突出你自己最擅長的技術領域。
例如:以下是我秋招面試時的自我介紹
面試官,您好!我叫XXX,首先感謝您在百忙之中,抽出時間來給我面試!
在研究生期間,我在完成自己的學業任務以外,主要利用課外時間自學了計算機基礎知識(數據結構與算法、計算機網絡基礎)、JavaSE(如集合、多線程,JVM)、Hadoop、Spark。我曾經參與過 XXXX 項目研發,主要負責了 XXXXX 設計和 XXXXX 分析兩個模塊。此外,在學習之余,我比較喜歡通過博客、知乎等各種平臺分享自己所學的知識。在生活中,我是一個樂觀開朗的人,我會通過攝影和籃球給自己釋放壓力。我特別喜歡貴公司的 XXX 文化(要主動提前去了解),期待能與你共事!
在面試中,一般需要注意以下幾個點:
- 遇到不會的算法題,要積極主動和面試官溝通以尋求解題思路
- 坦誠地面對問題,進行真誠的表述(千萬不要對只是了解的技術,假裝自己會,面試官一眼就能看穿)
- 專業對口未必就能旗開得勝,非科班同學面試時一定要自信
5總結
上述給大家分享的學習路線以及學習資料大部分都是我親自學過一遍的,對于新技術,我基本都是以視頻入門,之后再通過書籍和 Google去查漏補缺,深入技術原理
遇到相關問題推薦大家去 Google 、StackOverFlow 尋找答案。此外,大家在學習的過程中,要記得去博客或者知乎分享自己的知識,沒有輸出,你的輸入會大打折扣!
回首研究生三年,其中一邊幫導師做項目,一邊學習,這段時間過得非常充實且充滿著壓力。不僅要頂著導師布置的項目任務壓力,一邊還要為自己找工作做準備,屬實不易。最后,希望每一位小伙伴,能夠早日收割自己滿意的 offer。
總結
以上是生活随笔為你收集整理的2021最全大数据学习路线(建议收藏)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++基础学习笔记 day03
- 下一篇: TS颜色格式转换