大数据学习路线

2021年11月26日 阅读数:3
这篇文章主要向大家介绍大数据学习路线,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

关注公众号:大数据技术派,回复“资料”,领取1000G资料。
本文首发于个人我的博客:大数据学习路线前端

前言

要从事计算机行业的工做,无论是什么工做,开发、测试、仍是算法等,都是要有一门本身比较熟练的编程语言,编程语言能够是C语言、Java、C++等,只要是和你后续工做所相关的就能够(后续用到其余语言的话,你有一门语言基础了,学起来就快了)。通常初学者入门语言大多都会选择Java、C语言、C++或者Python,并且如今网上有不少好的视频,能够供初学者学习使用。关于学习视频或者资料的选择,知乎或者百度等都有不少讲解了,也能够跟师兄师姐咨询,这样能够少走不少弯路,固然,有人说,走一些弯路老是有好处的,可是我这里说的弯路不是说不犯错误,不调bug,而是指学习资料以及一些知识点的偏重点,这样能够尽可能节约一部分时间,刚开始时,总会有点迷,并且当你真正投入进去学习时,会发现时间老是不够用。java

下面就说一下我本身从Java开发到大数据开发的曲折学习之路(狗头保命.jpg)。
由于我如今是作大数据相关的工做了,因此Java后端涉及到的一些SSM框架等知识点我就不介绍了,毕竟后续一段时间也没有作了。本身看过的大数据学习相关的视频+资料大概是200G-300G吧,从Linux->Hadoop->。。。->Spark->项目,还有就是一些面试文档,面经等。一些视频看了两遍或者更多,跟着学,跟着敲代码,作项目,准备面试。
涉及到须要学习的东西包括:JavaSE,数据结构与算法(计算机行业必备),MySQL,Redis,ES(数据库这些能够看项目,也能够本身熟练一两个),Linux,Shell(这个能够后期补),Hadoop,Zookeeper,Hive,Flume,Kafka,HBase,Scala(Spark是Scala写的,会Scala作相关的项目会更容易入手),Spark,Flink(这个是找工做时有面试官问过几回liao不liao解,因此找完工做才开始接触学习),相关项目。linux

编程语言阶段学习

若是是零基础的话,建议仍是从视频开始入门比较好,毕竟一上来就看教材,这样有些代码的前因后果可能不是很了解。若是是有一些编程语言基础的话,从视频开始也会更简单,一些for、while循环你都知道了,学起来也会快不少。
JavaSE我是选择的黑马刘意的为主,由于刚刚开始学Java看过一本从《Java从入门到精通》,没什么感受,后续又在看了慕课网的Java初级视频,仍是没感受出来啥(当时就有点怀疑本身了。。。),可能有点没进入状态。
还好后续找了黑马刘意老师的JavaSE视频(我是看的2015年版本,那时候19版还没出),以为他讲的真的是很好很详细,每一个知识点都会有例子,也都会带你敲代码,作测试,可能前面有C语言基础,而后也看过Java的一些语法,因此学起来仍是比较顺利,后面的IO流、多线程等知识点时,也有看书看博客,或者看看其余老师的课程,讲解的可能本身比较容易接受就能够,反正都是多尝试(下面会给出视频连接),尽可能懂一些,后续能够回头来复习。JavaSE相关的视频,先看一遍,后续有时间建议再看一遍,并且这些经典的视频,看两遍真的是享受。
若是有必定基础了的,JavaSE前面七八天的视频能够加速看,可是不懂的必定要停下开仔细想一想,零基础的仍是尽可能不要加速吧,慢慢来稳些。后面的视频建议仍是跟着视频来,尽可能不要加速,代码尽可能都敲一敲,第一遍基本上一个月到一个半月能够结束。
JavaSE能够说是很基础也很重要的东西,主要重点包括面向对象、集合(List、Map等),IO流,String/StringBuilder/StringBuffer、反射、多线程,这些最好是都要熟悉一些,面试也是重点。
JavaSE以后,若是你是要走前端或后端开发路线的话,能够跟着一些网上的视频继续学习,这里我就很少作介绍了。
=分割线,Scala能够后续Spark阶段再接触学习
Scala的学习,Scala是一门多范式 (multi-paradigm) 的编程语言,Scala支持面向对象和函数式编程,最主要的是后续Spark的内容须要用到Scala,因此前面学习了JavaSE,到Spark学习以前,再把Scala学习一波,美滋滋,并且Scala能够和Java进行无缝对接,混合使用,更是爽歪歪。后续Spark学习时基本都是用的Scala,也多是和Java结合使用,因此Spark以前建议仍是先学一波Scala,并且Scala用起来真是很舒服(wordcount一行代码搞定),适合迭代式计算,对数据处理有很大帮助,不过Scala看代码很容易看懂,可是学起来仍是挺难的,好比样例类(case class)用起来真是nice,可是隐式转换学起来就相对比较难。学习Scala的建议:1. 学习scala 特有的语法,2. 搞清楚scala和java区别,3. 了解如何规范的使用scala。Scala对学习Spark是很重要的(后面Flink也是要用),虽然如今不少公司仍是用Java开发比较多,并且Spark是Scala写的,若是要读源码,会Scala仍是很重要的(至少要看得懂代码)。
Scala主要重点包括:隐式转换和隐式参数、模式匹配、函数式编程。这里我看的是尚硅谷韩老师的Scala视频,韩老师讲的真的很不错,五星推荐,哈哈。
也许有人会以为Python也是须要的,可是学习阶段,可能用Java仍是比较多,面试也基本都是问Java相关的内容,因此Python后续工做会用到的话,再看看Python的内容吧。面试

视频连接

刘意JavaSE(2015版)
刘意JavaSE(2019-IDEA版)
毕向东JavaSE
尚硅谷康师傅JavaSE(2019-IDEA版)
尚硅谷韩老师Scala算法

大数据框架阶段学习

大数据这方面的知识点本身能够说真的是从零开始的,刚刚开始学那会Linux基本都没用过,内心那个虚啊,并且时间也紧迫,想起来都是一把辛酸泪。
刚刚开始学的时候,看了厦门大学林子雨的《 大数据技术原理与应用》课程,可能这个课程是面对上课的,因此看了一些,感受对本身帮助不是很大(并非说课程很差,可能不太适合本身,若是是要了解理论知识,很透彻,可是俺时间紧迫啊),因此就继续在网上找视频,而后发现尚硅谷的培训视频不少人去参加,并且知识点也很齐全,大数据相关组件都有讲课,还有一些项目比较好,因此就找了它相关的视频,看的是2018年的,因此视频不算旧。
来一张推荐系统架构的图,先看看
推荐系统架构图
通常来讲,Flume+Kafka对数据进行采集聚合传输,一方面Spark对实时数据进行处理,传输给相应的数据处理模块(好比实时数据处理的算法模块,Spark也有提供常见的机器学习算法的程序库),另外一方面采集的数据也能够放入数据库(HBase、MongoDB等)中,后续MapReduce对离线数据进行离线处理,数据处理完毕用于后续的使用,数据采集处理的流程大概就是这样。若是是推荐系统,实时推荐会给用户产生实时的推荐结果,让用户进行查阅选择,好比你在界面浏览了或者看了新的物品,而后刷新下界面,可能给你展现的东西就有一些变成跟你刚刚浏览的相关了。离线推荐的话主要是对离线数据进行处理,为物品或种类作出类似的推荐,若是后续用户搜索相应的物品时,给用户展现相应的产品,好比你在淘宝搜索大数据书籍,淘宝会给你推荐相关的书籍,这就算是为大数据书籍产生的推荐结果。shell

淘宝
大数据学习路线:Linux -> Hadoop -> Zookeeper -> Hive -> Flume -> Kafka -> HBase -> Scala -> Spark -> 项目 - > Flink( 若是须要Storm,在Spark前面学习,云盘中也加进去了)数据库

大数据框架

1、Linux(基本操做)

通常咱们使用的都是虚拟机来进行操做,因此要安装VM( Virtual Machine),我使用的是CentOS,因此VM和CentOS都要跟着安装好,跟着视频操做,必定要动手实践,将一些Linux基本命令熟练掌握,一些VIM编辑器的命令也要会用,作相应的一些配置,使用SecureCRT来作远程登陆操做(也可使用其余的,本身顺手就行)。再强调一遍,基本操做命令尽可能熟练一点,若是一下记不住,打印一些经常使用的,本身看看,多用多实践,慢慢就会用了。还有一些软件包的下载安装卸载等,跟着操做一遍,熟悉下,后续都会使用,Shell编程能够后续补。编程

视频:

若是想了解下shell(后面乌班图的能够选择不看)
没有shell讲解后端

2、Hadoop(重点中的重点)

Hadoop是一个分布式系统基础框架,用于主要解决海量数据的存储和海量数据的分析计算问题,也能够说Hadoop是后续整个集群环境的基础,不少框架的使用都是会依赖于Hadoop。主要是由HDFS、MapReduce、YARN组成。这个部分安装Hadoop,Hadoop的三个主要组成部分是重点,对他们的概念要理解出来,知道他们是作什么的,搭建集群环境,伪分布式模式和彻底分布式模式的搭建,重要的是彻底分布式的搭建,这些部分必定要本身动手实践,本身搭建集群,仔细仔细再仔细,Hadoop的NameNode,DataNode,YARN的启动关闭命令必定要知道,以及他们的启动关闭顺序要记住,不要搞混。后续视频会有一些案例操做,跟着写代码,作测试,把基本环境都配置好,后续这个集群(彻底分布式须要三台虚拟机)要一直使用。缓存

视频:

我开始看过的版本:这个版本b站已经失效了,不过云盘中有给出连接
第二个看过的版本
2019版本

3、Zookeeper

Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。分布式安装ZK,对ZK有必定的了解就能够了,了解它的应用场景,以及内部原理,跟着作一些操做,基本上有一些了解便可。

视频:

我看过的版本
尚硅谷周洋版本(据说挺好)
2019版本

4、Hive(重点)

Hive是基于Hadoop的数据仓库工具,能够将结构化的数据文件映射为一张表,并提供类SQL查询功能。Hive的安装,它的数据类型,以及它的数据定义、数据操做有较好的了解,怎么操做表(建立表、删除表,建立什么类型的表,他们有什么不一样),怎么操做数据(加载数据,下载数据,对不一样的表进行数据操做),对数据的查询必定要进行实践操做,以及对压缩方式和存储格式要有一些了解,用到时不懂也能够去查,最好是能理解清楚。这部分有什么面试可能会问,因此视频后续的面试讲解能够看看,理解清楚。

视频:

我开始看过的版本
第二个看过的版本
2019版本

5、Flume

Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。对于Flume,对它的组成架构,以及对Flume Agent的内部原理要理解清楚,Source、Channel、Sink必定要知道它们的各类类型以及做用,有哪些拓扑结构是常见经常使用的,例如一对一,单Source、多Channel、多Sink等,它们有什么做用,要理解清楚。还有一个重点,就是对Flume的配置文件必定要了解清楚,不懂的能够上官网查看案例,对于不一样的状况,它的配置文件要作相应的修改,才能对数据进行采集处理,视频中的实践案例必定要跟着作。

视频:

我开始看过的版本
第二个看过的版本
2019版本

6、Kafka(重点)

Kafka是一个分布式消息队列,用来缓存数据的。好比说实时计算中能够经过Flume+Kafka对数据进行采集处理以后,Spark Streaming再使用Kafka相应的Topic中的数据,用于后续的计算使用。对于Kafka,要理解Kafka的架构,什么是Kafka,为何须要Kafka,应用场景。基本的命令行操做要掌握,好比怎么建立删除Topic,怎么经过生产者生成数据,消费者怎么消费数据等基本操做,官网也是有一些案例能够查阅的。

视频:

我看过的版本
2019版本

7、HBase(重点)

HBase是一个分布式的、基于列存储的开源数据库。HBase适合存储PB级别的海量数据,也能够说HBase是很适合大数据的存储的,它是基于列式存储数据的,列族下面能够有很是多的列,列族在建立表的时候就必须指定。因此对HBase的数据结构要有必定的理解,特别是RowKey的设计部分(由于面试被问到过,咳咳,因此点一下),对于它的原理要了解,一些基本操做也要都会,好比建立表,对表的操做,基本的API使用等。

视频:

我看过的版本
2019版本

8、Spark

Spark是快速、易用、通用的大数据分析引擎。一说到Spark,就有一种哪哪都是重点感受,哈哈。
Spark的组成能够看下图
Spark组成
Spark是基于内存计算的,对于数据的处理速度要比MapReduce快不少不少,并且数据挖掘这些都是要对数据作迭代式计算,MapReduce对数据的处理方式也不适合,而Spark是能够进行迭代式计算,很适合数据挖掘等场景。Spark的Spark SQL可以对结构化数据进行处理,Spark SQL的DataFrame或DataSet能够做为分布式SQL查询引擎的做用,能够直接使用Hive上的表,对数据进行处理。Spark Streaming主要用于对应用场景中的实时流数据进行处理,支持多种数据源,DStream是Spark Streaming的基础抽象,由一系列RDD组成,每一个RDD中存放着必定时间段的数据,再对数据进行处理,并且是基于内存计算,速度快,因此很适合实时数据的处理。Spark MLlib提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据 导入等额外的支持功能。对Spark的核心组件、部署模式(主要是Standalone模式和YARN模式)、通信架构、任务调度要有必定了解(面试问到了能够说一波),Spark Shuffle要好好理解,还有内存管理要知道,对Spark的内核原理必定要好好理解,不只面试可能要用,之后工做也是有帮助的。

视频:

我开始看过的版本
第二个看过的版本
2019版本

9、Flink(重点中的重点)

Flink是一个框架和分布式处理引擎,用于对无界(有开始无结束)和有界(有开始有结束)数据流进行有状态计算。如今主要是阿里这种大公司使用的比较多,中国不少公司使用的仍是Spark居多,并且Flink基本上都是和Spark不少功能大致上同样的,可是之后Flink和Spark孰强孰弱还有待时间的考验,不过Flink近几年愈来愈火了这是事实,因此若是有时间有精力的话,能够学一学Flink相关的内容也是很不错的。Spark和Flink主要都是在数据处理方面应用,在数据处理方面的话,离线数据处理:Flink暂时比不上Spark,Spark SQL优势在于能够和Hive进行无缝链接,Spark SQL能够直接使用Hive中的表;Flink暂时作不到这一步,由于官方不支持这一操做,Flink只能将数据读取成本身的表,不能直接使用Hive中的表。对于实时数据的处理:Flink和Spark能够说是势均力敌吧,并且Flink是以事件为驱动对数据进行处理,而Spark是以时间为驱动对数据进行处理,在一些应用场景中,也许Flink的效果比Spark的效果还要好些,由于Flink对数据更加的敏感。好比一秒钟若是触发了成千上万个事件,那么时间驱动型就很难对数据作细致的计算,而事件驱动型能够以事件为单位,一个个事件进行处理,相比而言延迟更低,处理效果更好。仍是那句话,虽然如今使用的公司较少,可是有时间接触学习下,也是没有坏处的。

视频:

我看的版本(基础+项目)

项目阶段

其实尚硅谷的视频里面有不少大数据相关的项目,并且都是文档配代码的,学习期间能够跟着视频作两到三个项目,本身理清思路,把项目理解透彻,仍是能够学到不少东西的。
根据本身状况,选择两到三个项目重点跟着作,理解透彻一点

大数据项目实战

尚硅谷的视频里面有不少大数据相关的项目,并且都是文档配代码的,学习期间能够跟着视频作两到三个项目,本身理清思路,把项目理解透彻,仍是能够学到不少东西的。根据本身状况,选择两到三个项目重点跟着作,理解透彻一点。相关项目文档资料我已经放到网盘,公众号回复相应关键字获取领取方式。
相关项目、涉及技术框架及其B站连接(B站连接间知乎文章。,主要是为了有些小伙伴网盘速度限制,这样就下载文档资料便可)

1)YouTube项目:Hive
2)微博项目:HBase
3)电商数据分析平台:Spark
4)电信客服系统:Hadoop
5)滴滴系统:Kafka+Storm
6)大数据离线平台:Hadoop+Flume+Hive+HBase
7)电商数仓项目:Hadoop+Zookeeper+Hive+Flume+Kafka+Spark
8)电商推荐系统(相似于电影推荐系统):Hadoop+ZK+Flume+Kafka+Spark+Redis+MongoDB
9)电影推荐系统(2019版也有个同样的电影推荐系统,代码应该相似):Hadoop+ZK+Flume+Kafka+Spark+Redis+MongoDB+ElasticSearch
2019版
10)基于阿里云搭建数据仓库(离线、实时):ECS(日志生产服务器)+Flume+DataHub +MaxCompute/DataWorks +RDS(业务数据)+QuickBI
离线
实时
11)机器学习和推荐系统:项目讲解为上面的电影推荐系统相似
12)实时项目(电商数仓实时):Hive+Kafka+Redis+Nginx+ElasticSearch+Canal
13)手机APP信息统计:Hadoop+ZK+Flume+Kafka+Hive+HBase+Spark(有两个不一样版本,详细看项目文档)
旧版本
新版本
14)新闻大数据实时分析可视化系统(私人提供,参考云盘):Hadoop+Zookeeper+Flume+Kafka+Hive+HBase+Spark+Echarts+Hue+MySQL
15)在线教育项目:Hadoop+Flume+Kafka+Hive+MySQL+Spark
16)基于Flink的电商用户行为数据分析:Kafka+Flink

机器学习

大数据岗位中也是有对算法要求比较高的,就是数据挖掘岗位,相对来讲,对机器学习算法有必定要求。这里就不介绍了,有时间能够本身学习机器学习相关的内容,若是你有机器学习的基础,那天然是更好了。
下面是我本身收集的一些资料,有须要的能够看看
机器学习算法学习资料

书籍

书籍部分直接云盘连接保存便可,这里我放两张Java开发和大数据开发我本身的书单(不少,路漫漫,吾将上下而求索~)
Java后端书架:

Java后端书架(1)

大数据书架:

大数据书架(1)

大概就这些,看完就须要好久了,大部分我也是须要的时候看相应的部分,因此有时间能够好好看下,否则就须要哪一部分看哪一部分,有助于学习便可。

最后

大数据开发也是须要编程基础的,并非学会使用这些框架怎么样就能够了,因此对于编程语言,数据结构与算法,计算机网络这些基础也是要的,这些基础知识也有助于本身之后的发展,若是是应届生校招的话,面试基本上都是JavaSE和数据结构与算法等的知识点,还有大数据组件相关的知识点,以及对项目的理解,这些都是要本身面试前准备好的,多看面经,多找面试题看,面几回,内心有谱了,后续面试就行了。
无论是从事什么样的计算机相关的岗位,编程都是很重要的,数据结构与算法特别重要,还有就是leetcode等编程网站刷题,提高本身的编程思惟,后续笔试面试都要要的。
要将一行行代码看作一叠叠rmb,可是一行行代码能不能转换成一叠叠rmb,本身就必定要:坚持,多敲代码;多敲代码,坚持;坚持
以上纯属我的总结,也许有理解不是很好的地方,每一个人都有本身的学习方法,不喜勿喷,谢谢~