每天1次,打卡閱讀
獲取流計算、大數據技術和面經
大家好,我是土哥。
隨著讀者數量的不斷增加,從8月底到10月中旬,3分鐘秒懂大數據 公眾號粉絲數已經突破7200+。
短短幾個月,看著越來越多的讀者通過我寫的文章而關注到該公眾號,我好開心,同時也誠惶誠恐,害怕無法持續(xù)輸出高質量文章,讓讀者失望。但我知道,只有寫出讓讀者心動的文章,才能得其心,土哥會好好加油,為大家持續(xù)輸出精品文章的。
有讀者問我,對于大數據小白或者跨行業(yè)者,應該如何學習大數據呢?或者說有什么推薦的書籍或者網站?
其實這個我很有心得啦,因為我研究生學的就是大數據與人工智能方向,所以了解很多關于這方面的書籍,并保留了一些學習網站。
哈哈,不要問我為什么會這么清楚,因為我就是這樣采坑過來的,因為土哥很清楚,對于一個大數據小白或者跨行業(yè)者,如果自學大數據系列組件和教程,其實難度很大,光各種組件加起來有二三十個,是不是想想就頭疼。
但是,跟著土哥走,讓你學會大數據肯定沒問題的。
接下來,我將根據自己的學習經驗并結合一些書和視頻,給大家全面分享,如何從一名小白搖身一變成為大數據開發(fā)工程師!學習網站、書籍以及軟件安裝教程已經全部幫大家整理好了。大綱目錄如下:
? 官網鏈接:
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 虛擬機和并發(fā)編程是面試時的必考點,推薦看《深入理解java虛擬機》
,重點學習內存、垃圾回收、類加載機制這幾部分。
并發(fā)編程推薦《java并發(fā)編程的藝術》
,強烈推薦從頭到尾好好閱讀幾遍,這是你沖擊一二線大廠的本錢。
如果覺得安裝軟件麻煩,準備好一款在線、隨時隨地寫代碼的工具,不用在本地去安裝和配置,是初學者的好幫手
? 推薦網站 - 菜鳥工具
https://c.runoob.com/compile/10
準備一款記筆記的軟件,學編程的過程中老師的思路、自己遇到的問題、解決問題的方法、心得感悟、遇到的好資料,都要記下來哦,好記性不如爛筆頭,可以幫助你事半功倍。
? 推薦軟件 - Typore工具
https://www.typora.io/
推薦使用 Markdown 語法編寫,
? 教程 - Markdown教學
https://www.bilibili.com/video/BV1no4y1k7YT/
上述 4 本書結合視頻教程,你相信,你很快可以成為合格的 JAVA 編程者。
? 官網鏈接: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入門基礎 + 數據庫實戰(zhàn)
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 存儲引擎,索引,鎖,事務,性能調優(yōu)等。
? 推薦書籍《mysql技術內幕InnoDB存儲引擎》、《高性能Mysql》
等。
完成 JAVA 和 Mysql 的學習教程后,你已經基本具備轉行學大數據內容了。
? JDBC Maven下載鏈接:
https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc
JDBC 是一個連接數據庫的驅動,通過該驅動,可以對數據庫進行增刪改查操作。
? JDBC 教學視頻:
https://www.bilibili.com/video/av21399547
? Mavem 官網鏈接:
http://maven.apache.org/what-is-maven.html
? Mavem 倉庫鏈接:
https://mvnrepository.com/
Apache Maven 是一個軟件項目管理和理解工具。基于項目對象模型 (POM) 的概念,Maven 可以從一條中央信息中管理項目的構建、報告和文檔。
說簡單點,Maven 就是一個倉庫,通過 Maven 倉庫,你可以下載你想要的 jar 包和依賴,你可以通過菜鳥教程學習 Maven 如何使用,其實很簡單。也可以看 Maven 實戰(zhàn)書籍。
? 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
? IDEA 官網鏈接:
https://www.jetbrains.com/idea/
DEA 全稱 IntelliJ IDEA,是 Java 編程語言開發(fā)的集成環(huán)境。目前在業(yè)界被公認為最好的 Java 開發(fā)工具,尤其在智能代碼助手、代碼自動提示、重構、JavaEE支持、各類版本工具( git、svn 等)、JUnit、CVS 整合、代碼分析、 創(chuàng)新的 GUI 設計等方面的功能可以說是超常的。
在學習 Java的時候就可以下載這個軟件,傻瓜式安裝,然后百度找一下破解教程 就可以,如果不會使用的話,可以按照下面的教程簡單學習下。
? IDEA 使用視頻教程:
https://www.bilibili.com/video/BV117411A7Ef?from=search&seid=15589514687856441260&spm_id_from=333.337.0.0
? GIT 官網鏈接:
https://git-scm.com/
Git 是一個開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項目。
說簡單點,Git 工具 可以將你寫的代碼 通過本地倉庫 - push 到互聯網的遠程倉庫上(github / gitee),直接在官網下載一個 Git 安裝包,然后傻瓜式安裝。根據下面的 Git 教程,學一下簡單的 Git 命令,比如簡單的一些命令:
書籍推薦,可以看 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
上面的必備工具都掌握后,就可以開始進入大數據學習階段,大數據學習的第一課就是要掌握 Linux 教程。
我們知道,在企業(yè)中,所有的大數據組件、服務器等都在 Linux 環(huán)境進行安裝、部署、運行,所以學習大數據組件的前提就是必須學會如何使用 Linux 命令
? Linux 視頻教程:
https://www.bilibili.com/video/BV1rq4y1s7yE?spm_id_from=333.788.b_765f64657363.2
直接從第30集開始入手就行。
? Linux 推薦書籍:《鳥哥的Linux私房菜》
恭喜各位小伙伴,前面的 Linux 教程完成后,你已經踏進大數據的門檻,接下來 土哥會將大數據分為多個領域,給大家介紹一下,通過學習哪些組件,就可以成為一名大數據工程師!
1. Hadoop 開發(fā)工程師
職位描述:
職位要求:
2. 大數據開發(fā)工程師-數據治理方向
職位描述:
1、負責數據中臺數據治理工作,包括元數據管理、數據質量檢查、成本優(yōu)化等系統(tǒng)的設計、開發(fā)及應用,提升數據易用性、安全性及穩(wěn)定性;
2、孵化并持續(xù)迭代優(yōu)化數據治理產品,以系統(tǒng)化、智能化能力高效支撐數據業(yè)務快速發(fā)展。
職位要求:
3. 大數據算法工程師-數據挖掘方向
職位描述:
職位要求:
4. 大數據運維工程師
主要負責大數據相關系統(tǒng)/平臺的維護,確保其穩(wěn)定性,更多的是對大數據系統(tǒng)的維護。職位描述:
職位要求:
5. 大數據開發(fā)工程師- 數倉方向
職責描述:
職位要求:
6. 大數據開發(fā)工程師-流計算方向
職責描述:
實時計算方向,負責推薦系統(tǒng)架構實時計算系統(tǒng)的設計和開發(fā),保障系統(tǒng)穩(wěn)定和高可用;為大規(guī)模推薦系統(tǒng)設計和實現合理的實時(流式計算)數據系統(tǒng);
職位要求:
土哥將大數據分為6個方向:包含Hadoop方向、數據治理方向、數據挖掘方向、數據倉庫方向、流計算方向、大數據運維方向。當然,還可以細分更多的領域。
在這么多方向中,不同的方向需要學習不同的組件,但是,萬變不離其宗,大數據領域的組件其實可以從三部分進行概括,分別為:存儲組件、計算組件、調度組件。
1.存儲組件:HDFS、Yarn、Zookeeper、Hive、Flume、Kafka、Hbase、Redis、ElasticSearch、ClickHouse等。
2.計算組件:MapReduce、Spark、Flink、Ray等。
3.調度組件:DolphinScheduler、Oozie、AirFlow,Yarn等。
將組件進行分類后,小伙伴們應該一目了然,然后根據不同的崗位,學習對應的組件即可,畢竟在工作崗位中,并不是要對所有組件都熟悉、精通,對自己工作中的組件要做到熟悉、精通,深入到源碼。對工作之外的組件做到了解其用途、明白其使用方式即可。
小伙伴學習大數據組件時,必須要掌握的基本能力包含以下3部分:
下面土哥根據大綱的路線圖,給大家整理大數據領域 Hadoop3.X 組件兼容版本對應表格,學習視頻、資料、以及書籍,如下圖所示:
? Hadoop 官網鏈接:
http://hadoop.apache.org/
Hadoop 是 Apache 基金會所開發(fā)的分布式系統(tǒng)基礎架構。目前 80% 的組件都要基于 Hadoop 組件來運行,用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序。Hadoop 框架最核心的設計就是:HDFS 和 MapReduce。HDFS 為海量的數據提供了存儲,而 MapReduce 則為海量的數據提供了計算。
? 推薦書籍:Hadoop權威指南、Hadoop3.X 分布式處理實戰(zhàn)
書中全面講解了 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
? Yarn 官網鏈接:
https://yarnpkg.com/
Apache Hadoop YARN (Yet Another Resource Negotiator)是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統(tǒng),可為上層應用提供統(tǒng)一的資源管理和調度,它的引入為集群在利用率、資源統(tǒng)一管理和數據共享等方面帶來了巨大好處。
目前計算組件如 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 源碼鏈接:
? Zookeeper 官網鏈接:
http://zookeeper.apache.org/
ZooKeeper 是一個分布式的,開放源碼的分布式應用程序協調服務,是 Google 的 Chubby 一個開源的實現,是 Hadoop 和 Hbase 的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。
說的簡單點,ZooKeeper 就是一個 動物園管理員,他是拿來管大象(Hadoop) 、 蜜蜂(Hive) 、 小豬(Pig) 、Spark、Flink、Kafka 等組件的管理員, 從程序員的角度來講可以理解為是一個整體監(jiān)控系統(tǒng)。如果這些組件采用分布式部署時,其中主節(jié)點宕機后,這時候 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
? Hive 官網鏈接:
https://hive.apache.org/
Hive 在大數據中扮演著比較重要的角色,不管是離線數倉還是實時數倉或者數據研發(fā)工程師,基本都會用到 Hive。
Hive 是一款建立 在Hadoop 之上的開源數據倉庫系統(tǒng),可以將存儲在 Hadoop 文件中的結構化、半結構化數據文件映射為一張數據庫表,基于表提供了一種類似 SQL 的查詢模型,稱為 Hive 查詢語言(HQL),用于訪問和分析存儲在 Hadoop 文件中的大型數據集。
Hive 核心是將 HQL 轉換為 MapReduce 程序,然后將程序提交到 Hadoop 群集執(zhí)行。
學習 Hive 給大家推薦的書籍有:Hive 編程指南、Hive 性能調優(yōu)實戰(zhàn),這兩本書講的都很全面,有豐富是實戰(zhàn)案例。
? Hive 集群安裝教程鏈接:
https://blog.csdn.net/weixin_38201936/article/details/88598008
? Hive 實戰(zhàn)離線系列文章
https://mp.weixin.qq.com/s/5YDO-Y4mfj5dMnQodG-7vQ
? Hive 實戰(zhàn)實時數倉系列文章
https://mp.weixin.qq.com/s/1c-iPaGSlMEv_J_960SlYw
? Hive GitHub 源碼鏈接:
https://github.com/apache/hive
? Kafka 官網鏈接:
http://kafka.apache.org/
Kafka 是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),目前在后端、大數據領域中使用特別多,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崗位已經可以勝任。
在大數據領域,計算組件有多個,從離線計算框架 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 生態(tài)圈包含Spark Core,Spark SQL,Spark Streaming,Spark MLib,GraphX等等,小伙們剛學時,建議重點學習 Spark Core,Spark SQL,Spark Streaming等內容,多看官網的官方文檔。
Spark 書籍推薦:圖解Spark核心技術與案例實戰(zhàn)
? 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 是一個以流為核心的高可用、高性能的分布式計算引擎。具備 流批一體,高吞吐、低延遲,容錯能力,大規(guī)模復雜計算等特點,在數據流上提供 數據分發(fā)、通信等功能。在大數據領域扮演著非常重要的角色。
? Flink 官網
https://flink.apache.org/
Flink 生態(tài)同樣包含模塊,如 Flink DataStream,Flink DataSet,Flink Table\SQL,Fiink ML,Gelly等,具體如下圖:
出入門學習 Flink ,土哥強烈推薦一本書籍:Flink 核心原理與實踐,這本書從 十六個章節(jié)全面介紹 Flink的架構設計、運行原理、任務提交機制、四大基石、內存模型、SQL提交機制、監(jiān)控指標等。
? Flink 推薦教學視頻:
https://www.bilibili.com/video/BV1qy4y1q728?from=search&seid=3522561233646130305&spm_id_from=333.337.0.0
集群安裝方面,直接看土哥寫的 入門安裝教程、非常詳細,圖文并茂,傻瓜式安裝即可。
? Flink 入門安裝教程:安裝教程
安裝完成后,可以閱讀我的 Flink 系列文章,一共發(fā)表了 23 篇 Flink 文章,從基礎知識到源碼分析
? 秒懂 Flink 系列:秒懂 Flink 系列
掌握一定的基礎知識后,可以通過提問方式鞏固知識點,土哥寫了 Flink 面試大全,全文 6 萬字,110 知識點,160 張原理圖,看完之后,輕松應對大廠的 Flink 面試。
? 秒懂 Flink 面試大全:6萬字 Flink 面經總結
基礎掌握扎實后,可以深入了解 Flink 的源碼,如 Flink 應用提交、Flink SQL 應用提交、Flink 內存優(yōu)化、指標監(jiān)控等。直接在 GitHub 將源碼下載下來。
Flink gitHub 源碼鏈接:
https://github.com/apache/flink
以上就是土哥花了一周時間、結合個人經驗、并且參考了大量網上的文章和評論總結而成的學習路線,真的是非常不容易。
文章全面介紹了大數據的學習路線,詳細闡述如何從一名小白晉升為大數據開發(fā)工程師,土哥希望大家可以認真閱讀、根據自己想要投遞的崗位選擇合適的組件進行學習。
聯系客服