大数据学习路线

大数据学习路线


前言

以下学习路线图属于个人学习总结,以自身学习技术栈的时间先后排序,现分享给大家,欢迎大家留言建议,共同进步。

PS:目前居住二线省会城市,所属金融行业,从事大数据开发工程师岗位。

零、学习路线图

在这里插入图片描述
以上学习路线图为个人整理,仅供参考,如有需要可私信,转发完整路线图。

一、基础部分

1.Java

重要等级:★★★★★
目前编程语言较多,如C、Java、Scala、 Python等,大家可自行搜索TIOBE语言排行榜。

tiobe编程语言排行榜

在这里插入图片描述
Java语言占比基本都是前三位置,学习大数据的话优先考虑学习Java, 对于大数据学习而言,不一定要精通Java, 但是一定要熟悉Java。

Java特点是面向对象、跨平台、健壮性等特点, 具有封装、继承、多态三大特征,现阶段适用范围较广,各类行业各类公司基本都在使用Java作为首选开发语言。

对于初学者而言,一定要掌握好Java,不管是对于后期的Hadoop学习,还是对于其他编程语言Scala或Python都非常有帮助。

2.Mysql

重要等级:★★★★
作为关系型数据库的代表,mysql地位同样重要。在数据库中,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。

目前中小企业一般使用mysql作为数据库,考虑到mysql数据量达到500万性能会下降,一般大型公司都考虑使用Oracle, 更安全稳定,一般国企和上市公司都是用oralce。

对于基础学习,掌握好mysql更易上手,数据库的原理是相通的,如数据定义语言(DDL)、数据查询语言(DQL)、内置函数等。

3.Linux

重要等级:★★★★
一般我们平常使用电脑都是Windows系统,对于大数据开发人员而言,每天都会使用linux, 各种环境部署,上传各种自定义函数jar包,基本都是在linux上进行操作。

Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序,我们需要熟悉linux各种常用的操作命令,如改变文件所属用户、文件查找、文本编辑等。

二、Hadoop生态

在这里插入图片描述

1.Hadoop基础

重要等级:★★★★
该部分了解即可,既然选择从事大数据行业了,首先就要了解什么是大数据?大数据有哪些特点?大数据能解决哪些问题?

其次需要了解Hadoop生态圈有哪些组件?分别是干什么的?

最后需要熟悉Hadoop环境怎么部署?分别有哪些配置文件?各自又是干什么的?对于环境部署,现在一般公司选用CDH或TDH、阿里云、华为云等,其原理是共通的,虽然是从事大数据开发,但是很多中小公司没有专门的运维人员,需要大数据开发人员负责运维,所以熟悉大数据开发环境同等重要。

2.Zookeeper

重要等级:★★★★
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务框架,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。

它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。在大数据技术体系中应用场景较多,重点了解底层执行原理及选举机制。

3.HDFS

重要等级:★★★★★
相当于电脑的“磁盘”,HDFS是一种数据分布式保存机制,数据被保存在计算机集群上,主要用于存储数据。

具有多种特点,如数据写入一次,读取多次,可以运行在廉价的机器集群上,扩展性较强,同时支持HA机制,容错性较高。目前用于文件存储,HDFS 为Hive、HBase等工具提供了基础。

4.YARN

重要等级:★★★★★
相当于电脑的“内存”和“CPU”,YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基础上演变而来的,主要是为了解决原始Hadoop扩展性较差,不支持多计算框架而提出的。

YARN是 hadoop 2.0 引入的集群资源管理系统。用户可以将各种服务框架部署在 YARN 上,由 YARN 进行统一地管理和资源分配。YARN具有多重优势,如具有向后兼容性、支持多个框架、框架升级更容易。理解YARN底层机制,就不难理解Spark on Yarn 模式执行机制。

5.MapReduce

重要等级:★★★

MapReduce是一种分布式计算模型,用以进行大数据量的计算,是一种离线计算框架。

这个 MapReduce 的计算过程简而言之,就是将大数据集分解为成若干个小数据集,每个(或若干个)数据集分别由集群中的一个结点(一般就是一台主机)进行处理并生成中间结果,然后将每个结点的中间结果进行合并, 形成最终结果。

可以从编写wordcount开始,了解其执行原理。虽然现在大多优先使用Spark或Flink作为计算框架,MapReduce使用场景不多,但是掌握好MapReduce,对于理解大数据思想及执行机制非常重要。

6.Hive

重要等级:★★★★★
Hive是一个基于Hadoop的开源数据仓库工具,用于存储(HDFS)和处理(MapReduce)海量结构化数据,利用其灵活的SQL语法帮助我们进行复杂统计分析。

Hive的数据存储在HDFS上,hive默认使用MapReduce作为SQL的计算引擎,支持调整执行引擎为Spark。Hive主要应用于离线场景,在数仓中基本都会用到Hive,要求会进行表相关的DDL及DQL操作,使用简单的内置函数,编写自定义函数(UDF/UDAF/UDTF)。

7.HBase

重要等级:★★★
HBase是一个建立在HDFS之上,面向列的NoSQL数据库,用于快速读/写大量数据。HBase使用Zookeeper进行管理,确保所有组件都正常运行。数据被保存在 HDFS (分布式文件系统)上,由 HDFS 保证其高容错性。

HBase 是基于 Apache Hadoop 的面向列的 NoSQL数据库,是 Google 的 BigTable 的开源实现。Hadoop 是一个高容错、高延时的分布式文件系统和高并发的批处理系统,不适用于提供实时计算,而 HBase 是可以提供实时计算的分布式数据库,以k-v键值对形式存在,支持增删改查。

PS: 熟练掌握“基础部分” 及“Hadoop生态”包含技术体系,基本可以胜任数仓开发工程师岗位,主要针对离线的业务场景,目前一二线城市该岗位需求较多,二线城市薪资10K-20K,一线城市薪资稍微高点。
在这里插入图片描述

三、Spark生态

1.Scala

重要等级:★★★★
考虑Spark底层都是基于Scala语言编写,在学习Spark框架之前建议优先学习Scala,Spark的兴起,带动Scala语言的发展。

Scala 是 Scalable Language 的简写,是一门多范式的编程语言,Scala支持面向对象和函数式编程。Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有 的Java类库,实现两种语言的无缝对接。

Scala 在设计时参考了Java的设计思想,可以说Scala是源于java,同时将函数式编程语言的特点融合到JAVA中, 如果学过Java,掌握Scala相对容易,重点需要搞清楚Scala 和 java相同点和不同点。以前面试时还被问到过不同点,可见其重要性。

2.Spark

重要等级:★★★★★
Spark是一种通用的大数据计算框架,正如传统大数据技术Hadoop的MapReduce、Hive引擎。Spark生态包含Spark Core、Spark Sql、SparkStreaming、图计算、机器学习。 Spark使用强大的Scala语言开发,它还提供了对Scala、Python、Java(支持Java 8)和R语言的支持。
在这里插入图片描述

Spark运行速度快,支持使用Scala、Java、Python和R语言进行编程,可以通过Spark Shell进行交互式编程,同时提供了完整而强大的工具,包括SQL查询、流式计算、机器学习和图算法组件。例外可运行于独立的集群模式中,可运行于Hadoop中,也可运行于各类云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源。

对比Hadoop, Spark不能代替Hadoop,但可能代替MapReduce。Spark+Hadoop的组合,是目前多数公司的首选技术架构方式。

对比 MapReduce, Spark可以把多次使用的数据放到内存中, Spark 会的算法多(包含多种转换算子及行动算子),方便处理数据。同时, Spark大部分算子都没有shuffle阶段,不会频繁落地磁盘,降低磁盘IO。在代码编写方面,也不需要写那么复杂的MapReduce逻辑。

3.Kafka

重要等级:★★★★★
Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。Kafka最初是由LinkedIn公司开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。

Kafka是一个分布式消息队列。Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)称为broker。无论是kafka集群,还是consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用性。

在流式计算中,Kafka一般用来缓存数据,作为消息队列,目前应用较广,主要应用于实时场景。

四、Flink生态

在这里插入图片描述

Apache Flink是一个分布式大数据处理引擎,可对有界数据流和无界数据流进行有状态计算。 可部署在各种集群环境,对各种大小的数据规模进行快速计算。

Flink虽然诞生的早(2010年),但是其实是起大早赶晚集,直到2015年才开始突然爆发热度。 在Flink被apache提升为顶级项目之后,阿里实时计算团队决定在阿里内部建立一个 Flink 分支 Blink,并对 Flink 进行大量的修改和完善,让其适应阿里巴巴这种超大规模的业务场景。目前Flink已被阿里购买,在国内大厂中实时计算场景中应用广泛。
在这里插入图片描述

第一代的计算引擎,无疑就是 Hadoop 承载的 MapReduce。第二代计算引擎, 如 Tez 以及更上层的 Oozie,支持 DAG 的框架。第三代的计算引擎以 Spark 为代表,特点主要是 Job 内部的 DAG 支持(不跨越 Job),以及强调的实时计算。第四代计算引擎如 Flink,支持流计算以及更一步的实时性。

对比Spark,Spark是基于内存的批量运算,Flink是高可靠的exactly-once的流式运算。目前很多一线城市专门招聘Flink开发工程师,薪资较高,二三线城市招聘该岗位较少。
在这里插入图片描述

五、其他相关平台

大数据技术体系日新月异,对于各类大数据专业技术而言,没有绝对的好坏,只有适合自己就好。

对于第五部分内容,都是个人结合工作需要和自身了解,自行学习的部分。大家重点了解下大数据集群环境,现在应用较多的是CDH、TDH、阿里云,大家可以优先学习。

对于其他组件,如编程语言Python、搜索引擎Elasticsearch、ETL工具Kettle、数据库Oracle等,在这里就不做过多解读,大家根据自己需要学习了解。

六、项目实战

重要等级:★★★★★

从第一部分“基础部分”到第五部分“其他相关平台”,都是理论部分。对于理论的学习,最佳的方式就是结合实践。对于计算机学科而言,其特点就是实践性学科。通过实践,才能更好的掌握并理解理论,所以“项目实战”非常重要!!!

对于大数据从业者,面试时简历上都会要求编写项目经历,每个项目中要求写明该项目用到技术栈,面试时面试官通常都会对于你写明的技术点进行询问,询问方式基本都是由浅到深。只有对项目技术栈了然于胸,才能拿下offer。

对于大数据岗位,结合以上学习路线,一般包含项目类型如下:
类型一:Java相关项目(Java及mysql或Oracle)
类型二:数仓项目(Hadoop技术栈)
类型三:实时项目(Spark技术栈)
类型四:实时项目(Flink技术栈)

如果你准备面试数仓开发岗位,需要准备项目类型包含类型一及类型二;如果你准备面试大数据开发岗位,需要准备项目类型包含类型一、类型二及类型三;如果你准备面试专职Flink开发岗位,需要准备以上四种项目类型。

以上是对项目类型的说明,至于准备几个项目,按照个人从业年限项目个数不等。按照经验,至少准备两到三个项目。至于如何学习项目实战部分,推荐大家逛逛B站,很多实用的项目分享。

总结

以上就是个人的全部学习路线,按照时间轴分为基础部分、Hadoop生态、Spark生态、Flink生态、其他相关平台、项目实践。结合实际工作招聘需求和个人理解,分别做了相关说明。对于以上学习路线,如有不妥之处,欢迎大家批评指正。

缺什么补什么,这是基本原则。不管怎样,学习的过程都是从了解到深入,从深入到理解,从理解到掌握,都会有一个时间过程,最终都是要更好的理解并应用技术,实现个人价值。

预祝大家学习顺利,涨薪升职。欢迎大家探讨交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值