前言
大家好,我是土哥。
随着讀者數量的不斷增加,從8月底到10月中旬,3分鐘秒懂大資料 公衆号粉絲數已經突破7200+。

短短幾個月,看着越來越多的讀者通過我寫的文章而關注到該公衆号,我好開心,同時也誠惶誠恐,害怕無法持續輸出高品質文章,讓讀者失望。 但我知道,隻有寫出讓讀者心動的文章,才能得其心,土哥會好好加油,為大家持續輸出精品文章的。
有讀者問我,對于大資料小白或者跨行業者,應該如何學習大資料呢?或者說有什麼推薦的書籍或者網站?
其實這個我很有心得啦,因為我研究所學生學的就是大資料與人工智能方向,是以了解很多關于這方面的書籍,并保留了一些學習網站。
哈哈,不要問我為什麼會這麼清楚,因為我就是這樣采坑過來的,因為土哥很清楚,對于一個大資料小白或者跨行業者,如果自學大資料系列元件和教程,其實難度很大,光各種元件加起來有二三十個,是不是想想就頭疼。
但是,跟着土哥走,讓你學會大資料肯定沒問題的。
接下來,我将根據自己的學習經驗并結合一些書和視訊,給大家全面分享,如何從一名小白搖身一變成為大資料開發工程師!學習網站、書籍以及軟體安裝教程已經全部幫大家整理好了。大綱目錄如下:
一、Java
⭐ 官網連結:
https://www.java.com/zh-CN/
JAVA 語言是學習大資料的基礎,因為好多大資料元件的源碼都是由 JAVA 所編寫的,如果你剛接觸 JAVA、推薦先閱讀
《JAVA核心技術》
内容。
視訊部分推薦:
⭐ 宋紅康 - 全網最全Java零基礎入門教程
https://www.bilibili.com/video/BV1Kb411W75N
(隻看 Java 8 部分即可)
通過視訊教程和書籍結合,安裝 JDK1.8 或者 JDK11, 熟悉 JAVA 文法。
學完基礎後,開始學習一些 JAVA 的進階特性,JAVA 虛拟機和并發程式設計是面試時的必考點,推薦看
《深入了解java虛拟機》
,重點學習記憶體、垃圾回收、類加載機制這幾部分。
并發程式設計推薦
《java并發程式設計的藝術》
,強烈推薦從頭到尾好好閱讀幾遍,這是你沖擊一二線大廠的本錢。
如果覺得安裝軟體麻煩,準備好一款線上、随時随地寫代碼的工具,不用在本地去安裝和配置,是初學者的好幫手
⭐ 推薦網站 - 菜鳥工具
https://c.runoob.com/compile/10
準備一款記筆記的軟體,學程式設計的過程中老師的思路、自己遇到的問題、解決問題的方法、心得感悟、遇到的好資料,都要記下來哦,好記性不如爛筆頭,可以幫助你事半功倍。
⭐ 推薦軟體 - Typore工具
https://www.typora.io/
推薦使用 Markdown 文法編寫,
⭐ 教程 - Markdown教學
https://www.bilibili.com/video/BV1no4y1k7YT/
上述 4 本書結合視訊教程,你相信,你很快可以成為合格的 JAVA 程式設計者。
二、Mysql
⭐ 官網連結:https://www.mysql.com/
為什麼要把 Mysql 放到第二部分呢,因為它很重要,可以說非常重要,在大資料存儲元件中,包含很多分布式資料庫,都需要編寫一定的 SQL 代碼,而這些都是以 SQL 文法為基礎。
同時在大資料計算元件,如 Flink SQL 和 Spark SQL 中,也需要用到 SQL 文法,是以,相信小夥伴們知道 SQL 的重要性了吧。
剛學習資料庫時,強烈推薦下載下傳解壓版進行安裝,安裝教程如下,包含壓縮包。
⭐ Mysql安裝教程:
https://blog.csdn.net/weixin_38201936/article/details/81605640
安裝成功後開始學習 SQL 文法,推薦書籍
《mysqlbi必知必會》
簡單入門,配合下面的視訊教程一塊學習。
對于 Mysql 的視訊資源,推薦以下内容:
⭐ 老杜 - mysql入門基礎 + 資料庫實戰
https://www.bilibili.com/video/BV1Vy4y1z7EX
⭐ 尚矽谷 - MySQL基礎教程
https://www.bilibili.com/video/BV1xW411u7ax(小姐姐講課)
線上練習
⭐ SQL 自學網:http://xuesql.cn/
⭐ SQL 線上運作:
https://www.bejson.com/runcode/sql/
⭐ SQL - 菜鳥教程
https://www.runoob.com/sql/sql-tutorial.html
⭐ MySQL - 菜鳥教程
https://www.runoob.com/mysql/mysql-tutorial.html
學完簡單文法之後,還不夠,因為面試時這些隻是最基礎知識,你還需要掌握深層次知識點,例如 InnoDB 存儲引擎,索引,鎖,事務,性能調優等。
⭐ 推薦書籍
《mysql技術内幕InnoDB存儲引擎》、《高性能Mysql》
等。
完成 JAVA 和 Mysql 的學習教程後,你已經基本具備轉行學大資料内容了。
三、必備工具
3.1 JDBC
⭐ JDBC Maven下載下傳連結:
https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc
JDBC 是一個連接配接資料庫的驅動,通過該驅動,可以對資料庫進行增删改查操作。
⭐ JDBC 教學視訊:
https://www.bilibili.com/video/av21399547
3.2 Maven
⭐ Mavem 官網連結:
http://maven.apache.org/what-is-maven.html
⭐ Mavem 倉庫連結:
https://mvnrepository.com/
Apache Maven 是一個軟體項目管理和了解工具。基于項目對象模型 (POM) 的概念,Maven 可以從一條中央資訊中管理項目的建構、報告和文檔。
說簡單點,Maven 就是一個倉庫,通過 Maven 倉庫,你可以下載下傳你想要的 jar 包和依賴,你可以通過菜鳥教程學習 Maven 如何使用,其實很簡單。也可以看 Maven 實戰書籍。
⭐ Maven 菜鳥教程:
https://www.runoob.com/maven/maven-tutorial.html
⭐ Maven 安裝教程:
https://www.zhihu.com/question/20104186)
⭐ Maven 視訊教程:
https://www.bilibili.com/video/BV1Fz4y167p5?from=search&seid=987708061267699949&spm_id_from=333.337.0.0
3.3 IDEA
⭐ IDEA 官網連結:
https://www.jetbrains.com/idea/
DEA 全稱 IntelliJ IDEA,是 Java 程式設計語言開發的內建環境。目前在業界被公認為最好的 Java 開發工具,尤其在智能代碼助手、代碼自動提示、重構、JavaEE支援、各類版本工具( git、svn 等)、JUnit、CVS 整合、代碼分析、 創新的 GUI 設計等方面的功能可以說是超常的。
在學習 Java的時候就可以下載下傳這個軟體,傻瓜式安裝,然後百度找一下破解教程 就可以,如果不會使用的話,可以按照下面的教程簡單學習下。
⭐ IDEA 使用視訊教程:
https://www.bilibili.com/video/BV117411A7Ef?from=search&seid=15589514687856441260&spm_id_from=333.337.0.0
3.4 Git
⭐ GIT 官網連結:
https://git-scm.com/
Git 是一個開源的分布式版本控制系統,用于靈活高效地處理任何或小或大的項目。
說簡單點,Git 工具 可以将你寫的代碼 通過本地倉庫 - push 到網際網路的遠端倉庫上(github / gitee),直接在官網下載下傳一個 Git 安裝包,然後傻瓜式安裝。根據下面的 Git 教程,學一下簡單的 Git 指令,比如簡單的一些指令:
- git clone
- git pull
- git add .
- git commit -m 'xxx'
- git push
- git log
書籍推薦,可以看 Pro Git 中文書籍就足夠了,可以根據下面的教學連結輔助學習。
⭐ Git 菜鳥教程:
https://www.runoob.com/git/git-tutorial.htmlL
⭐ Pro Git中文書籍線上教程
http://git-scm.com/book/zh/v2
⭐ Git 視訊教程:
https://www.bilibili.com/video/BV1FE411P7B3?from=search&seid=4816308847064529471&spm_id_from=333.337.0.0
⭐ 通過 Git 往遠端倉庫建立項目教程:
https://blog.csdn.net/weixin_38201936/article/details/84836043
3.5 Linux
上面的必備工具都掌握後,就可以開始進入大資料學習階段,大資料學習的第一課就是要掌握 Linux 教程。
我們知道,在企業中,所有的大資料元件、伺服器等都在 Linux 環境進行安裝、部署、運作,是以學習大資料元件的前提就是必須學會如何使用 Linux 指令
⭐ Linux 視訊教程:
https://www.bilibili.com/video/BV1rq4y1s7yE?spm_id_from=333.788.b_765f64657363.2
直接從第30集開始入手就行。
⭐ Linux 推薦書籍:
《鳥哥的Linux私房菜》
四、Hadoop 生态
恭喜各位小夥伴,前面的 Linux 教程完成後,你已經踏進大資料的門檻,接下來 土哥會将大資料分為多個領域,給大家介紹一下,通過學習哪些元件,就可以成為一名大資料工程師!
1. Hadoop 開發工程師
職位描述:
- Hadoop 技術棧的開發和管理,解決實際業務挑戰, YARN, HDFS, MapReduce, Spark;
- 承擔千台-萬台規模 Hadoop YARN 叢集的管理工作,與業務一起解決性能優化、容量規劃、預算審計等問題,保障叢集高效穩定經濟運作。
職位要求:
- 熟悉 Hadoop 相關基礎設施;
2. 大資料開發工程師-資料治理方向
職位描述:
1、負責資料中台資料治理工作,包括中繼資料管理、資料品質檢查、成本優化等系統的設計、開發及應用,提升資料易用性、安全性及穩定性;
2、孵化并持續疊代優化資料治理産品,以系統化、智能化能力高效支撐資料業務快速發展。
職位要求:
- 熟練使用 SQL、Python、Java 等工具進行大型資料分析及模組化;
- 熟練使用 Hadoop、Hive、Spark、Flink 等元件進行大資料場景資料開發;
3. 大資料算法工程師-資料挖掘方向
職位描述:
- 為短視訊和直播業務提供基礎資料挖掘支援,包括使用者畫像挖掘、熱點挖掘等;
- 全面了解業務發展,提供基于機器學習、深度學習、文本挖掘、複雜網絡等算法方案解決複雜的實際業務問題。
職位要求:
- 有大資料集、分布式計算工具(Hadoop,Spark,Hive,Storm,Flink)等應用開發經驗優先;
- 有紮實的資料結構和算法功底,熟悉機器學習、自然語言處理、資料挖掘中一項或多項 ;
4. 大資料運維工程師
主要負責大資料相關系統/平台的維護,確定其穩定性,更多的是對大資料系統的維護。
職位描述:
- 負責商業化 OLAP 引擎穩定性保障工作,提升服務 SLA 标準;
- 參與設計并實作商業化 OLAP 引擎自動化運維平台,及其日常需求開發;
職位要求:
- 熟悉 Java 程式設計,掌握至少一種腳本語言:python/shell 等;
- 熟悉 Linux 作業系統的基礎運維,有 ElasticSearch、Druid 等大資料引擎運維或使用經驗者優先。
5. 大資料開發工程師- 數倉方向
職責描述:
- 負責離線和實時數倉建構;
- 解決海量資料處理的排程、資源優化、資料品質、可用性、可靠性、監控等問題。
職位要求:
- 具有海量實時、離線數倉建設落地經驗;
- 具備較強的編碼能力,熟悉 SQL,Python,Hive,Spark,Kafka,Flink 中的多項,有至少 TB 以上級大資料處理經驗,了解平台原理;
6. 大資料開發工程師-流計算方向
職責描述:
實時計算方向,負責推薦系統架構實時計算系統的設計和開發,保障系統穩定和高可用;為大規模推薦系統設計和實作合理的實時(流式計算)資料系統;
職位要求:
- 對流式計算系統有深入的了解,在生産環境有 TB 級别 Flink 實時計算系統開發經驗,深入掌握 Flink DataStream、FlinkSQL、Flink Checkpoint、Flink State 等子產品,有 Flink 源碼閱讀經驗優先;
- 熟悉常見消息隊列原理和應用調優,有 Kafka、Plusar、RocketMQ 等項目源碼閱讀經驗優先;
- 熟悉 Java、C++、Scala、Python 等程式設計語言;
- 有資料湖開發經驗,熟悉 Hudi、Iceberg、DeltaLake 等至少一項資料湖技術,有源碼閱讀經驗優先;
- 熟悉其他大資料系統經驗者優先,YARN、K8S、Spark、SparkSQL、Kudu等;
- 有存儲系統經驗加分,HBase、Casscandra、RocksDB 等。
土哥将大資料分為6個方向:包含Hadoop方向、資料治理方向、資料挖掘方向、資料倉庫方向、流計算方向、大資料運維方向。當然,還可以細分更多的領域。
在這麼多方向中,不同的方向需要學習不同的元件,但是,萬變不離其宗,大資料領域的元件其實可以從三部分進行概括,分别為:存儲元件、計算元件、排程元件。
1.存儲元件:HDFS、Yarn、Zookeeper、Hive、Flume、Kafka、Hbase、Redis、ElasticSearch、ClickHouse等。
2.計算元件:MapReduce、Spark、Flink、Ray等。
3.排程元件:DolphinScheduler、Oozie、AirFlow,Yarn等。
将元件進行分類後,小夥伴們應該一目了然,然後根據不同的崗位,學習對應的元件即可,畢竟在工作崗位中,并不是要對所有元件都熟悉、精通,對自己工作中的元件要做到熟悉、精通,深入到源碼。對工作之外的元件做到了解其用途、明白其使用方式即可。
小夥伴學習大資料元件時,必須要掌握的基本能力包含以下3部分:
- 能成功部署元件,并運作。
- 了解元件的架構設計、運作原理。
- 可以編寫簡單的代碼運作。
下面土哥根據大綱的路線圖,給大家整理大資料領域的各元件的學習視訊、資料、以及書籍,如下圖所示:
4.1 Hadoop
⭐ Hadoop 官網連結:
http://hadoop.apache.org/
Hadoop 是 Apache 基金會所開發的分布式系統基礎架構。目前 80% 的元件都要基于 Hadoop 元件來運作,使用者可以在不了解分布式底層細節的情況下,開發分布式程式。Hadoop 架構最核心的設計就是:HDFS 和 MapReduce。HDFS 為海量的資料提供了存儲,而 MapReduce 則為海量的資料提供了計算。
⭐ 推薦書籍:Hadoop權威指南、Hadoop3.X 分布式處理實戰
書中全面講解了 Hadoop 的由來、設計架構,對 HDFS、MapReduce 進行了全面的講解。
⭐ Hadoop 元件安裝教程:
https://blog.csdn.net/weixin_38201936/article/details/85096496
⭐ Hadoop 視訊教程:
https://www.bilibili.com/video/BV1rq4y1s7yE?spm_id_from=333.788.b_765f64657363.2
當 Hadoop 基本概念、原理都掌握後,可以看看其源碼是如何設計的
⭐ Hadoop GitHub 源碼連結:
https://github.com/apache/hadoop
4.2 Yarn
⭐ Yarn 官網連結:
https://yarnpkg.com/
Apache Hadoop YARN (Yet Another Resource Negotiator)是一種新的 Hadoop 資料總管,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和排程,它的引入為叢集在使用率、資源統一管理和資料共享等方面帶來了巨大好處。
目前計算元件如 Spark、Flink、MapReduce 都和 Yarn 資源管理進行關聯,在叢集部署時,都會采用高可用進行部署,将計算任務都送出到 Yarn 上進行管理。
⭐ Yarn 書籍推薦:Hadoop Yarn 權威指南,這本書對 Yarn 資源管理進行了很詳細的講解,值得小夥伴們觀看呦!
⭐ Yarn 視訊教程:5分鐘讓你輕松學會 Yarn 的原理,包含 ResourceManager,NodeManager等概念。
https://www.bilibili.com/video/BV1Pa4y1t7nf?from=search&seid=11247307393237909491&spm_id_from=333.337.0.0
⭐ Yarn GitHub 源碼連結:
4.3 Zookeeper
⭐ Zookeeper 官網連結:
http://zookeeper.apache.org/
ZooKeeper 是一個分布式的,開放源碼的分布式應用程式協調服務,是 Google 的 Chubby 一個開源的實作,是 Hadoop 和 Hbase 的重要元件。它是一個為分布式應用提供一緻性服務的軟體,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。
說的簡單點,ZooKeeper 就是一個 動物園管理者,他是拿來管大象(Hadoop) 、 蜜蜂(Hive) 、 小豬(Pig) 、Spark、Flink、Kafka 等元件的管理者, 從程式員的角度來講可以了解為是一個整體監控系統。如果這些元件采用分布式部署時,其中主節點當機後,這時候 Zookeeper 就會重新選舉出 leader。這是它最大的作用所在。
⭐ zookeeper書籍推薦:
⭐ Zookeeper 視訊教程:
https://www.bilibili.com/video/BV1to4y1C7gw?from=search&seid=2755195091410266102&spm_id_from=333.337.0.0
⭐ Zookeeper 元件安裝教程:
https://blog.csdn.net/weixin_38201936/article/details/88821559
⭐ Zookeeper GitHub 源碼連結:
https://github.com/apache/zookeeper
4.4 Hive
⭐ Hive 官網連結:
https://hive.apache.org/
Hive 在大資料中扮演着比較重要的角色,不管是離線數倉還是實時數倉或者資料研發工程師,基本都會用到 Hive。
Hive 是一款建立 在Hadoop 之上的開源資料倉庫系統,可以将存儲在 Hadoop 檔案中的結構化、半結構化資料檔案映射為一張資料庫表,基于表提供了一種類似 SQL 的查詢模型,稱為 Hive 查詢語言(HQL),用于通路和分析存儲在 Hadoop 檔案中的大型資料集。
Hive 核心是将 HQL 轉換為 MapReduce 程式,然後将程式送出到 Hadoop 群集執行。
學習 Hive 給大家推薦的書籍有:Hive 程式設計指南、Hive 性能調優實戰,這兩本書講的都很全面,有豐富是實戰案例。
⭐ Hive 叢集安裝教程連結:
https://blog.csdn.net/weixin_38201936/article/details/88598008
⭐ Hive 實戰離線系列文章
https://mp.weixin.qq.com/s/5YDO-Y4mfj5dMnQodG-7vQ
⭐ Hive 實戰實時數倉系列文章
https://mp.weixin.qq.com/s/1c-iPaGSlMEv_J_960SlYw
⭐ Hive GitHub 源碼連結:
https://github.com/apache/hive
4.5 Kafka
⭐ Kafka 官網連結:
http://kafka.apache.org/
Kafka 是一種高吞吐量的分布式釋出訂閱消息系統,目前在後端、大資料領域中使用特别多,Kafka 包含生産者、消費者模型,通過生産者将資料實時存儲在消息隊列中,使用 Spark、Flink 等計算引擎從消費者讀取資料進行計算。
Kafka 元件非常重要,一定要好好學習,這裡土哥給大家推薦 KafKa 權威指南這本書,是初學者入門的不二選擇。
⭐ Kafka 視訊學習連結:
http://kafka.apache.org/
2021年最新版 Kakfa 視訊教程,跟着視訊可以快速學會 Kafka 的使用
對 Kafka 理論知識了解清楚後,建立着手部署 Kafka 叢集,超級詳細的安裝教程請看這裡:
https://blog.csdn.net/weixin_38201936/article/details/89226897
⭐ Kafka 操作指令:
https://blog.csdn.net/weixin_38201936/article/details/117595931
⭐ Kafka gitHub 連結:
https://github.com/apache/kafka
針對前面的内容和崗位介紹,選擇合适的元件進行學習,Hadoop崗位已經可以勝任。
五、Spark 生态
在大資料領域,計算元件有多個,從離線計算架構 MapReduce 到流式計算架構 Storm、Spark、Flink 等。 在 Spark 領域,小夥伴們需要學習 Scala 語言,因為 Spark 的底層源碼是用 Scala 所編寫。
⭐ Scala 官網連結:
https://www.scala-lang.org/
⭐ Scala 菜鳥教程連結:
https://www.runoob.com/scala/scala-tutorial.html
Scala 語言要重點掌握程式設計文法、Scala 的資料結構、模式比對、高階函數、隐仕轉換、注解、類型參數等。
掌握 Scala 之後,就可以着手學習 Spark 計算架構。
⭐ Spark 官網
http://spark.apache.org/
由于現在 Spark3.0 版本已經出來了,建議剛入行大資料的小夥伴直接學習 Spark3.0,Spark 于 2009 年誕生于加州大學伯克利分校實驗室,2010 年被開源,在大資料領域,短短 10 年 Spark 已經成為世界頂尖的分布式快速通用計算架構。
Spark 生态圈包含Spark Core,Spark SQL,Spark Streaming,Spark MLib,GraphX等等,小夥們剛學時,建議重點學習 Spark Core,Spark SQL,Spark Streaming等内容,多看官網的官方文檔。
Spark 書籍推薦:圖解Spark核心技術與案例實戰
⭐ Spark3.0 入門教學視訊
https://www.bilibili.com/video/BV1Xz4y1m7cv?from=search&seid=17655987947940698399&spm_id_from=333.337.0.0
⭐ Spark 入門安裝視訊
https://blog.csdn.net/weixin_38201936/article/details/85233263
⭐ Spark GitHub 連結:
https://github.com/apache/spark
六、Flink 生态
Flink 元件是大資料領域必學的實時流計算元件。
Flink 是一個以流為核心的高可用、高性能的分布式計算引擎。具備 流批一體,高吞吐、低延遲,容錯能力,大規模複雜計算等特點,在資料流上提供 資料分發、通信等功能。在大資料領域扮演着非常重要的角色。
⭐ Flink 官網
https://flink.apache.org/
Flink 生态同樣包含子產品,如 Flink DataStream,Flink DataSet,Flink Table\SQL,Fiink ML,Gelly等,具體如下圖:
出入門學習 Flink ,土哥強烈推薦一本書籍:Flink 核心原理與實踐,這本書從 十六個章節全面介紹 Flink的架構設計、運作原理、任務送出機制、四大基石、記憶體模型、SQL送出機制、監控名額等。
⭐ Flink 推薦教學視訊:
https://www.bilibili.com/video/BV1qy4y1q728?from=search&seid=3522561233646130305&spm_id_from=333.337.0.0
叢集安裝方面,直接看土哥寫的 入門安裝教程、非常詳細,圖文并茂,傻瓜式安裝即可。
⭐ Flink 入門安裝教程:安裝教程
安裝完成後,可以閱讀我的 Flink 系列文章,一共發表了 23 篇 Flink 文章,從基礎知識到源碼分析
⭐ 秒懂 Flink 系列:秒懂 Flink 系列
掌握一定的基礎知識後,可以通過提問方式鞏固知識點,土哥寫了 Flink 面試大全,全文 6 萬字,110 知識點,160 張原理圖,看完之後,輕松應對大廠的 Flink 面試。
⭐ 秒懂 Flink 面試大全:6萬字 Flink 面經總結
基礎掌握紮實後,可以深入了解 Flink 的源碼,如 Flink 應用送出、Flink SQL 應用送出、Flink 記憶體優化、名額監控等。直接在 GitHub 将源碼下載下傳下來。
Flink gitHub 源碼連結:
https://github.com/apache/flink
七、總結
以上就是土哥花了幾天大夜、結合個人經驗、并且參考了大量網上的文章和評論總結而成的學習路線,真的是非常不容易。
文章全面介紹了大資料的學習路線,詳細闡述如何從一名小白晉升為大資料開發工程師,土哥希望大家可以認真閱讀、根據自己想要投遞的崗位選擇合适的元件進行學習。
如果大家覺得滿意請務必三連支援下,路線文檔和所有學習資料已經幫大家整理好,在我的公衆号【3分鐘秒懂大資料】背景回複【大資料學習路線】就能擷取。