2020年大数据学习路线及职业规划

大数据技术生态与职业规划

引言

今年秋招以前,我曾觉得我之后会是一名Java开发,可是在真正的秋招过程当中,我出轨了大数据(呵呵,男人!),既然将它做为第一份职业,那就要好好来了解下它,要对现有的大数据的生态有个直观的理解,因此在此基础上列出本身的学习计划和本身的职业规划。在这里,要特别感谢韩顺平老师B站2020大数据公开课,受益不浅,视频连接在参考文献中,感兴趣的小伙伴能够看看。程序员

这篇文章是我在查阅了大量的资料后进行的总结,以自身小白的角度讲述,若有不正确的地方,还望读者不吝提出。web

适合人群

  • 想总体把握大数据生态的大数据从业的者
  • 对大数据感兴趣的Java从业者
  • 什么都不懂,可是想从事大数据开发的学生

Java开发者的自白

做为一名Java Developer,曾经我觉得,BS架构就是我在浏览器中向服务器提交一个资源申请,而后服务器返回相应的资源就行了,那这个结构就好简单,就是下面这样的。算法

慢慢的,当服务器压力过大,咱们就会考虑到扩容,设置主从服务等操做,这时的架构就变这样了数据库

哎,我关心的层面永远是实现某个业务的逻辑,至于数据,我理解的也仅仅是业务数据,只要保证它们可以正常入库,正常获取便可,也就是咱们常说的增删改查;固然,除正常的业务数据外,还会有不少的日志数据,能够利用他们定位错误。apache

若是仅从这个层面上看待,我也许永远不会理解马爸爸口中所说的数据就是财富,为了拥抱财富,我窥探了下业务数据以外的数据,而后,没忍住,我好像变心了~。浏览器

那么,什么是大数据呢?服务器

什么是大数据?

随着科技的发展,咱们在网上留下的数据愈来愈多,大到网上购物、商品交易,小到浏览网页、微信聊天、手机自动记录平常行程等,能够说,在现在的生活里,只要你还在,你就会每时每刻产生数据,可是这些数据能称为大数据么?不,这些还不能称为大数据,那么大数据数据究竟是什么呢?微信

个人我的理解是这样的,大数据能够认为是数据的集合,咱们能够从这些数据中推理出一个近似客观的规律,利用这个规律能够预测产生数据的本体下一次要发生的几率。如一个用户常常在某电影网站上观当作龙的电影,那么当该用户下一次访问电影网站时,将有关成龙的电影放在推荐列表中比较靠前的位置,由于咱们经过用户的浏览的数据发现他很喜欢成龙的电影,而且相信相信该用户的兴趣短时内不会发生变化。这时咱们就会有疑问,用户的行为数据存到哪里了?怎样使用这些数据判断(计算)产生数据数据的本体下一次发生的几率。这就引出了大数据的最核心的两个概念:存储计算markdown

大数据技术初探

咱们接着上面分析,想知道这些数据能够具体作什么,那么咱们就从数据自己出发。试想一下,要想使用数据,是否是要先采集数据,采集的数据传输过程当中若是数据流量太大,还要考虑下对数据缓冲,若是采集的数据不是那么特别着急的须要(变现),咱们能够考虑以离线的形式先存储起来,若是数据放起来就没有价值了啊,因此咱们仍是是要分析计算挖掘数据里面的价值,可是数据的最终价值是要变现啊,money! money! money! ,怎么变现?固然是提供给业务方喽,那么谁是业务代码的编写者,好像是曾经的我,Java Developer网络

MMP,搞了半天,这是闭环啊,又回到了老本行,有点懵?别慌,来张图

这张图简要分析了数据的实时/离线处理过程,乍一看这个流程,这有啥难的,不就是五个流程么,

image-20201130211016086

  • 数据源

数据源能够是多种多样的,按照结构划分能够分为三类:

  • 非结构化数据:图片视频
  • 半结构化数据:日志数据
  • 结构化数据:关系数据
  • 数据采集

数据采集经常使用的是Flume,可是考虑数据流量过大,咱们一般使用Kafka作缓冲。

数据采集确定是一端进数据,一端出数据,找了官方的一张图,结构以下:

image-20201129202332429

Source端是数据的入口,Sink端是数据的出口。中间的Channel是进行数据的清理的管道。

上面分析中咱们提到过,当数据量过大的时候,咱们一般会对数据进行缓冲,保证数据的进出适配。咱们可使用Kafka这个组件,Kafka是一个很是优秀的数据队列与缓冲组件。

  • 数据存储

既然是大数据,那确定不是一台服务器可以解决的,确定是分布式存储HDFS,在大数据刚出来,就有人不少人认为大数据=hadoop,可见当时的hadoop的火热程度,实时上,这是由于hadoop同时具有了数据的存储与计算。Hadoop的框架最核心的设计就是:HDFSMapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

  • 数据计算

除了Hadoop自身的计算组件,有一款专门进行数据内存计算的组件--Spark,它能够同时提供离线计算在线计算

  • 数据应用

数据的应用就比较普遍了,咱们能够把处理好的数据放入MySQL,使用Java EE那套技术根据业务的须要具体操做便可;举一个简单的例子,咱们能够把处理好的数据可视化(Echarts、D3),这也算是发挥它的价值。

上面仅仅是粗略的介绍,并无详细的介绍每一个步骤所对应的技术,要想学好大数据,本身必需要规划一个清晰的学习路线,坚持下去。下面,咱们就聊一聊如何学习大数据,这个路线适合任何阶段的学习者。

大数据技术路线

大数据的技术路线仍是很是庞大的,在这里,我要特别感谢尚硅谷韩顺平老师提供的技术路线,基本上包含了:入门-->进阶-->精通-->成神

话很少说,先看下整体学习路线:

路线整体与分支

image-20201130221728168

上面这张思惟导图包含了咱们学习大数据路线所须要的所有知识,可能除了计算机基础JAVA基础,对其它技术体系可能有一点点感到迷茫,不要慌下面咱们一一分析:

路线分支庖丁解牛

计算机基础

按照正常状况下,若是你想当个普通的程序员,这部份内容其实不学也行,由于技术的天花板很低,当达到必定水平后,就会原地踏步,停滞不前。可是若是你想在这个领域有所建树,发光发热,就得好好学习这些基础知识,这是为啥呢?你想一想看,在这个文科可使用Python来进行数据分析的时代,不搞点技能怎么傍身。固然,这是次要的,最主要的缘由是当咱们把某个领域学的必定阶段的时候,这时你接触的就会越接近于底层,举个例子:当你学习Java中的内存管理、线程、进程和锁的知识点时,若是你不了解操做系统的知识,理解起来仍是挺难的。

下面,咱们介绍下具体学习那些基础,这里只列出书籍,每一个人根据本身的学习状况具体学习便可

  • 计算机网络
  • 操做系统
  • 数据结构与算法
  • 计算机组成原理
  • 离散数学及其应用
  • 编译原理

image-20201130225353514

JAVA基础路线

学习大数据是必需要学JAVA的,为何这么说呢?学习大数据,咱们或多或少都据说过Hadoop,不少同窗甚至将Hadoop和大数据画了等号,可见Hadoop是必需要学的,并且咱们知道Hadoop和其余大数据处理技术不少的部分都是由Java语言来实现的,因此在学习Hadoop的一个前提条件,就是掌握Java语言

那么,咱们应该学习Java的那些内容呢,别单担忧,贴心的Simon郎为你画了张思惟导图

image-20201130230301174

JAVA EE核心路线

做为一个大数据工程师,理论上讲,JAVA EE的技术不是必须的,为何说呢,你想啊,JAVA EE开发是Java语言中的一个应用领域,好比开发WEB程序;大数据开发也是Java语言中的一个应用领域,好比开发海量数据处理程序。二者就比如是学习了中文,一个用于写段子,一个英语写诗,二者没太大关系啊,都要依赖语言(Java)。

可是问题来了,既然二者都是Java语言的应用,那么为何大数据路线中还要学习JAVA EE呢,个人理由很简单,大数据处理的数据是供给具体的业务使用的,若是你一点都不懂,说的过去么?再说了,JAVA EE中有不少框架的思想都是挺值得借鉴的,因此,我以为,学习大数据路线上适当的学习JAVA EE,会有着不错的效果,至于具体学习到什么程度,本身能够把握。

image-20201130231542821

Hadoop生态体系学习路线

学习大数据确定绕不开Hadoop,可见Hadoop的地位是多么重要,可是对于接触大数据时间较短或者还没有接触过大数据的同窗来讲,若是问他们咱们应该学习Hadoop的那些内容,分布式存储计算必定会说出来,可是仅仅这两个概念仍是太笼统了,那么咱们应该怎样把控Hadoop的学习呢,莫慌,且听Simon郎慢慢道来。

话很少说,先看一张Hadoop生态体系的脑图。

image-20201201224043405

妈耶,咋那么多内容啊,快把我干懵逼了。千万别懵,虽然看起来不少,可是能够用一句总结:Hadoop是一个分布式计算开源框架,提供了一个分布式系统子项目(HDFS)和支持MapReduce分布式计算软件架构。既然脑图的内容有点多,我们就介绍几个在Hadoop家组中占有地位较高的几个组件,若是小伙伴对其它组件感兴趣,能够自行查阅。

  • Hive

Hive是基于Hadoop的一个数据仓库工具,能够将结构化的数据文件映射为一张数据库表,经过类SQL语句快速实现简单的MapReduce统计,没必要开发专门的MapReduce应用,十分适合数据仓库的统计分析。

  • Hbase

Hbase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用Hbase技术可在廉价PC Server上搭建起大规模结构化存储集群。

  • Sqoop

Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,能够将一个关系型数据库(MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也能够将HDFS的数据导进到关系型数据库中

  • Zookeeper

Zookeeper 是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中常常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。

  • Ambari

Ambari是一种基于Web的工具,支持Hadoop集群的供应、管理和监控。

  • Oozie

Oozie是一个工做流引擎服务器, 用于管理和协调运行在Hadoop平台上(HDFS、Pig和MapReduce)的任务。

  • Hue

Hue是一个基于WEB的监控和管理系统,实现对HDFS,MapReduce/YARN, HBase, Hive, Pig的web化操做和管理。

.........

Hadoop生态体系先介绍这么多,对其它内容感兴趣的同窗自行补充

Spark生态体系学习路线

学习完Hadoop后,稍做调整后,就能够学习Spark了,这时,可能就有同窗会问,Spark和Hadoop有啥区别呢?咱们为何还要学Spark呢?要学习Spark那些内容呢?

别慌,咱么一一解决

1. Spark和Hadoop有什么区别?

简单理解,Spark是在Hadoop基础上的改进,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具备的优势;但不一样于MapReduce的是中间输出和结果能够保存在内存中,从而再也不须要读写HDFS,所以Spark能更好地适用于数据挖掘与机器学习等须要迭代的map reduce的算法。

2.为何要学Spark

基于MapReduce的计算引擎一般会将中间结果输出到磁盘上,进行存储和容错。出于任务管道承接的考虑,当一些查询翻译到MapReduce任务时,每每会产生多个Stage,而这些串联的Stage又依赖于底层文件系统(如HDFS)来存储每个Stage的输出结果。

Spark是MapReduce的替代方案,并且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。

要学习Spark的那些内容呢?

首先要学的就是Scala,由于Spark就是Scala写的,因此要好好学,这对于咱们分析源码很是有帮助。这时你又有疑问,不是已经学了Java了么,怎么还学Scala,你个骗子!

别骂我,可是Scala是基于Java写的,难道学习Java还忽悠你了不成!

其次要学的就是Spark的基础知识,先把地基打牢,才能更上一层楼么。学完Spark后,就能够着手学习较有挑战性的SparkCoreSparkSQLSparkStreamingMLib

  • SparkCore

SparkCore将分布式数据抽象为弹性分布式数据集(RDD),实现了应用任务调度、RPC、序列化和压缩,并为运行在其上的上层组件提供API。

  • SparkSQL

SparkSQL 是Spark来操做结构化数据的程序包,可让我使用SQL语句的方式来查询数据,Spark支持 多种数据源,包含Hive表,parquest以及JSON等内容。

  • SparkStreaming

SparkStreaming是Spark提供的实时数据进行流式计算的组件。

  • MLlib

MLlib提供经常使用机器学习算法的实现库。

image-20201201232659713

Flink生态体系学习路线

立刻2021年了,若是学习大数据还不知道flink就有点过度了,如今各个大厂都在尝试着使用flink,那么flink到底是什么呢?

先看看官方的定义:flink是一个框架和分布式的处理引擎,用于对无界和有界数据流进行有状态的计算

定义明确了flink的做用是计算,想想,咱们在上面已经介绍了Hadoop中的MapReduce和Spark均可以用于计算,怎么还要学,它的优点是什么呢?

其实蛮难的理解的,我查了不少的资料,我发现云栖社区的蒋晓伟老师的说的就挺明白,问题和回答的原话以下:

  • Q1:相比Spark、Hadoop、Storm等,是什么样的场景需求让阿里搜索团队选择了Flink?

蒋晓伟:首先咱们但愿有个流计算和批处理的一体化处理方案。Spark和Flink都具备流和批处理能力,可是他们的作法是相反的。**Spark Streaming是把流转化成一个个小的批来处理,这种方案的一个问题是咱们须要的延迟越低,额外开销占的比例就会越大,这致使了Spark Streaming很难作到秒级甚至亚秒级的延迟。Flink是把批看成一种有限的流,这种作法的一个特色是在流和批共享大部分代码的同时还可以保留批处理特有的一系列的优化。**由于这个缘由,若是要用一套引擎来解决流和批处理,那就必须以流处理为基础,因此咱们决定先选择一个优秀的流处理引擎。从功能上流处理能够分为无状态的和有状态两种。在流处理的框架里引入状态管理大大提高了系统的表达能力,让用户可以很方便地实现复杂的处理逻辑,是流处理在功能上的一个飞跃。流处理引擎对一致性的支持能够分为:best effort,at least once 和 exactly once。Exactly once的语义才能真正保证彻底的一致性,Flink采用的架构比较优雅地实现了exactly once的有状态流处理。另外在保证了一致性的前提下Flink在性能上也是至关优秀的。总结一下,咱们以为在流处理方面Flink在功能,延迟,一致性和性能上综合来看是目前社区最优秀的。因此咱们决定采用它来实现流和批的一体化方案。最后,还有一个很重要的缘由是Flink有一个比较活跃的社区。

  • Q2:如何看待Flink、Spark、Hadoop、Storm等技术发展和不一样场景下的优点对比?好比与Spark相反,Flink把批处理化做流处理,这种方式在使用时是否有什么限制?

蒋晓伟:大数据是从批处理开始的,因此不少系统都是从批处理作起,包括Spark。在批处理上Spark有着较深的积累,是一个比较优秀的系统。随着技术的发展,不少原来只有批处理的业务都有了实时的需求,流处理将会变得愈来愈重要,甚至成为大数据处理的主要场景。**Flink把批看成流来处理有个很重要的优势是若是咱们在流中引入一个blocking的算子,咱们还能接着作批处理特有的优化,这个是以流处理为基础的计算引擎的一大优点。**因此我认为在架构上这种设计在批处理上是能够作到最优的,并且比传统的作法还有一些特别的优点,固然工程上的实现也很重要。

看了上面两个问答,你们应该对为何使用flink有个比较宏观的了解,那咱们具体学习什么呢,我以为啊,学它的不一样点就好啊

image-20201202212033153

技术的学习是创建在职业规划上的,那么做为还未入门的大数据从业者,应该怎么规划本身呢?

大数据职业规划

据我了解,目前市面存在的大数据的岗位有如下几种:

  • 大数据分析师
  • 大数据挖掘式/算法工程师
  • 大数据工程师
  • 大数据运维工程师
  • 大数据仓库工程师
  • 大数据产品经理

由于市面上的岗位需求以大数据工程师居多,在这里,我会着重介绍大数据工程师的职业规划,对其余岗位刚兴趣的能够自行查阅相关资料。

  • 大数据工程师职位介绍

大数据工程师具体的工做内容取决于你在工做数据流中的那个环节,数据流的工做内容大体能够分为:数据采集--->数据清洗--->数据存储--->数据分析和统计--->数据但是化

  • 分类

正常状况下,大数据工程师按照不一样的工具是要分类,如Hadoop工程师Spark工程师Flink工程师,具体的使用工具取决于所在的部门,可是若是想要成为一名优秀的大数据工程师,这些工具都是须要掌握的。

  • 职业发展路线

人们常说,程序员到了35岁,就要转行送外卖开滴滴了,虽然这是一句调侃,可是人到中年,危机意识仍是要有的,搞很差部门下次优化的就是你。

就像文中开头所说,解决焦虑的最好办法就是面对焦虑,既然知道有35岁危机,那么应该早早准备好本身的职业规划,并坚决不移的坚持下去。从大数据工程师的角度看,若是你一直从事大数据这个行业,有两大方向供你选择

  • 偏技术方向

大数据工程师--->大数据算法工程师--->大数据项目经理--->大数据架构师--->资深架构师--->大数据科学家

  • 偏业务方向

大数据工程师--->大数据产品经理--->资深大数据产品经理--->合伙人

总结

相信你们看完了上述内容后必定会对大数据有个宏观的认识,细心的同窗也可能发现了大数据路线中还缺乏两个模块,项目源码,怎么说呢,我也有点发愁,因此我准备发完文章后好好去整理一下,既然整理了,那就所有搞完吧。

我会尽可能在下次发文的时候整理好学习大数据所需的资料,包括文档视频书籍等。

好了,今天的文章就到这里了,我是Simon郎,一个Java开发,却在秋招出轨大数据的应届生,若是不嫌弃我,欢迎关注在看点赞

参考文献

flume.apache.org/

kafka.apache.org/documentati…

zhuanlan.zhihu.com/p/31545435

zhuanlan.zhihu.com/p/94842150

blog.csdn.net/sinat_26811…

www.bilibili.com/video/BV1zE…

相关文章
相关标签/搜索