从零开始的大数据技术学习路线指南:带你轻松成为大数据开发工程师!1

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 从零开始的大数据技术学习路线指南:带你轻松成为大数据开发工程师!1

文章目录


一、前言

二、大数据的发展史

2.1 启蒙阶段:数据仓库的出现

2.2 技术变革:Hadoop诞生

2.3 数据工厂时代:大数据平台兴起

2.4 数据价值时代:阿里提出数据中台

三、大数据方面核心技术有哪些?

1. Java 语言

2. MySQL 数据库

3. Linux 操作系统

4. Hadoop 技术学习

5. 数据仓库 Hive

6. 数据采集 Sqoop / Flume / DataX

7. 快一点吧 Spark

8. 数据传输 Kafka

10. 任务调度 Oozie / Azkaban

11. 实时数据的处理 Flink / Spark Streaming

12. 数据对外(支撑业务)

13. 机器学习 Spark MlLib

四、大数据下的数仓体系架构

五、学习指南


一、前言


之前写了篇面经 《一个月面试近20家大中小厂,在互联网寒冬突破重围,成功上岸!》,有不少小伙伴留言和私信我关于大数据学习路线,以及咨询我一些关于有工作经验想转行大数据的问题,只言片语也讲不清,我花了一个月整理了一份我当初学习的大数据学习路线,从最基础的大数据集群搭建开始,希望能帮助到大家。


不过在开始之前,我还是希望大家能想清楚,如果自己很迷茫,为了什么原因想往大数据方向发展,还有就是我就想问一下,你的专业是什么,对于计算机/软件,你的兴趣是什么?


是计算机专业,对操作系统、硬件、网络、服务器感兴趣?

是软件专业,对软件开发、编程、写代码感兴趣?

还是数学、统计学专业,对数据和数字特别感兴趣?


欢迎大家在评论区留言讨论 ( •̀ ω •́ )✧


这其实也就关系到大数据的三个发展方向:


平台搭建/优化/运维/监控

大数据开发/设计/架构

数据分析/挖掘


现如今,正式为了应对大数据的这几个特点,开源的大数据框架越来越多,越来越强,先列举一些常见的:


文件存储:Hadoop HDFS、Tachyon、KFS


离线计算:Hadoop MapReduce、Spark


流式、实时计算:Storm、Spark Streaming、Flink


K-V、NOSQL数据库:HBase、Redis、MongoDB


资源管理:YARN、Mesos


日志收集:Flume、Scribe、Logstash、Kibana


消息系统:Kafka、StormMQ、ZeroMQ、RabbitMQ


查询分析:Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid


分布式协调服务:Zookeeper


集群管理与监控:Ambari、Ganglia、Nagios、Cloudera Manager


数据挖掘、机器学习:Mahout、Spark MLLib


数据同步:Sqoop


任务调度:Oozie


……


眼花了吧,上面的有30多种吧,别说精通了,全部都会使用的,估计也没几个。


就我个人而言,主要目前是在第二个方向(开发/设计/架构),那我就从大数据的发展史讲起。由于自己经验有限,本文内容参考了圈内不少老师的观点,供大家参考和互相学习。


二、大数据的发展史


关于大数据的发展史,我觉得骆俊武老师在《AI 时代,还不了解大数据?》一文中讲的非常清楚。大数据在它近三十年的发展史中,共经历了5个阶段。


2020052316335112.png


2.1 启蒙阶段:数据仓库的出现


20世纪90年代,商业智能(也就是我们熟悉的BI系统)诞生,它将企业已有的业务数据转化成为知识,帮助老板们进行经营决策。比如零售场景中:需要分析商品的销售数据和库存信息,以便制定合理的采购计划。


显然,商业智能离不开数据分析,它需要聚合多个业务系统的数据(比如交易系统、仓储系统),再进行大数据量的范围查询。而传统数据库都是面向单一业务的增删改查,无法满足此需求,这样就促使了数据仓库概念的出现。


传统的数据仓库,第一次明确了数据分析的应用场景,并采用单独的解决方案去实现,不依赖业务数据库。


2.2 技术变革:Hadoop诞生


20200523170317137.png


2000年左右,PC互联网时代来临,同时带来了海量信息,很典型的两个特征:


数据规模变大:Google、雅虎等互联网巨头一天可以产生上亿条行为数据。


数据类型多样化:除了结构化的业务数据,还有海量的用户行为数据,以图像、视频为代表的多媒体数据。


很显然,传统数据仓库无法支撑起互联网时代的商业智能。2003年,Google公布了3篇鼻祖型论文(俗称「谷歌三驾马车」),包括:分布式处理技术MapReduce,列式存储BigTable,分布式文件系统GFS。这3篇论文奠定了现代大数据技术的理论基础。


苦于Google并没有开源这3个产品的源代码,而只是发布了详细设计论文。2005年,Yahoo资助Hadoop按照这3篇论文进行了开源实现,这一技术变革正式拉开了大数据时代的序幕。


Hadoop相对于传统数据仓库,有以下优势:


完全分布式,可以采用廉价机器搭建集群,完全可以满足海量数据的存储需求。


弱化数据格式,数据模型和数据存储分离,可以满足对异构数据的分析需求。


随着Hadoop技术的成熟,2010年的Hadoop世界大会上,提出了「数据湖」的概念。


关于数据湖的理论,大家可以看我的这篇博客。


初探数据湖(Data Lake),到底有什么用?让我们来一窥究竟…


企业可以基于Hadoop构建数据湖,将数据作为企业的核心资产。由此,数据湖拉开了Hadoop商业化的大幕。


2.3 数据工厂时代:大数据平台兴起


商用Hadoop包含上十种技术,整个数据研发流程非常复杂。为了完成一个数据需求开发,涉及到数据抽取、数据存储、数据处理、构建数据仓库、多维分析、数据可视化等一整套流程。这种高技术门槛显然会制约大数据技术的普及。


此时,大数据平台(平台即服务的思想,PaaS)应运而生,它是面向研发场景的全链路解决方案,能够大大提高数据的研发效率,让数据像在流水线上一样快速完成加工,原始数据变成指标,出现在各个报表或者数据产品中。


2.4 数据价值时代:阿里提出数据中台


2016年左右,已经属于移动互联网时代了,随着大数据平台的普及,也催生了很多大数据的应用场景。


此时开始暴露出一些新问题:为了快速实现业务需求,烟囱式开发模式导致了不同业务线的数据是完全割裂的,这样造成了大量数据指标的重复开发,不仅研发效率低、同时还浪费了存储和计算资源,使得大数据的应用成本越来越高。


极富远见的马云爸爸此时喊出了「数据中台」的概念,「One Data,One Service」的口号开始响彻大数据界。数据中台的核心思想是:避免数据的重复计算,通过数据服务化,提高数据的共享能力,赋能业务。


关于阿里数据中台,可以参考这篇转载自谭虎、陈晓勇老师的:


详解阿里云数据中台,一篇文章全面了解大数据“网红”


三、大数据方面核心技术有哪些?


大数据的概念比较抽象,而大数据技术栈的庞大程度将让你叹为观止。


大数据技术的体系庞大且复杂,基础的技术包含数据的采集、数据预处理、分布式存储、NoSQL数据库、数据仓库、机器学习、并行计算、可视化等各种技术范畴和不同的技术层面。首先给出一个通用化的大数据处理框架,主要分为下面几个方面:数据采集与预处理、数据存储、数据清洗、数据查询分析和数据可视化。


20200523174954314.png


数据采集:这是大数据处理的第一步,数据来源主要是两类,第一类是各个业务系统的关系数据库,通过Sqoop或者Cannal等工具进行定时抽取或者实时同步;第二类是各种埋点日志,通过Flume进行实时收集。

数据存储收集到数据后,下一步便是将这些数据存储在HDFS中,实时日志流情况下则通过Kafka输出给后面的流式计算引擎。

数据分析:这一步是数据处理最核心的环节,包括离线处理和流处理两种方式,对应的计算引擎包括MapReduce、Spark、Flink等,处理完的结果会保存到已经提前设计好的数据仓库中,或者HBase、Redis、RDBMS等各种存储系统上。

数据应用:包括数据的可视化展现、业务决策、或者AI等各种数据应用场景。


通过上述的内容,可能大家对大数据都有了初步的了解,接下来就是核心的部分,因为任何学习过程都需要一个科学合理的学习路线,才能够有条不紊的完成我们的学习目标。大数据所需学习的内容纷繁复杂,难度较大,有一个合理的大数据学习路线图帮忙理清思路就显得尤为必要。


1. Java 语言


以Java语言为基础掌握面向对象编程思想所涉及的知识,以及面向对象编程,然后主流的SSM、Spring Boot等开源框架最好也能掌握。


2. MySQL 数据库


MySQL数据库掌握关系型数据库的原理,主要是各种复杂SQL语句的编写,这会对后面学Hive数仓的HQL起到事半功倍的效果。


3. Linux 操作系统


因为大数据相关软件都是在Linux上运行的,所以Linux要学习的扎实一些,学好Linux对你快速掌握大数据相关技术会有很大的帮助,能让你更好的理解Hadoop、Hive、HBase、Spark等大数据软件的运行环境和网络环境配置,能少踩很多坑,学会Shell就能看懂脚本这样能更容易理解和配置大数据集群。


4. Hadoop 技术学习


这是现在流行的大数据处理平台几乎已经成为大数据的代名词,所以这个是必学的。Hadoop里面包括几个组件HDFS、MapReduce和Yarn。


HDFS是存储数据的地方就像我们电脑的硬盘一样文件都存储在这个上面,MapReduce是对数据进行处理计算的,它有个特点就是不管多大的数据只要给它时间它就能把数据跑完,但是时间可能不是很快所以它叫数据的批处理。Yarn是体现Hadoop平台概念的重要组件有了它大数据生态体系的其它软件就能在Hadoop上运行了,这样就能更好的利用HDFS大存储的优势和节省更多的资源,比如我们就不用再单独建一个Spark的集群了,让它直接跑在现有的HadoopYarn上面就可以了。


4.1 学会百度与Google


不论遇到什么问题,先试试搜索并自己解决。Google首选,翻不过去的,就用百度吧。


4.2 参考资料首选官方文档


特别是对于入门来说,官方文档永远是首选文档。相信搞这块的大多是文化人,英文凑合就行,实在看不下去的,请参考第一步。


4.3 先让Hadoop跑起来


Hadoop可以算是大数据存储和计算的开山鼻祖,现在大多开源的大数据框架都依赖Hadoop或者与它能很好的兼容。


关于Hadoop,你至少需要搞清楚以下是什么:


Hadoop 1.0、Hadoop 2.0 MapReduce、HDFS NameNode、DataNode

JobTracker、TaskTracker Yarn、ResourceManager、NodeManager


自己搭建Hadoop,请使用第一步和第二步,能让它跑起来就行。建议先使用安装包命令行安装,不要使用管理工具安装。另外:Hadoop1.0知道它就行了,现在都用Hadoop 2.0。


4.4 试试使用Hadoop


HDFS目录操作命令;上传、下载文件命令;提交运行MapReduce示例程序;

打开Hadoop WEB界面,查看Job运行状态,查看Job运行日志。知道Hadoop的系统日志在哪里。


4.5 你该了解它们的原理了


MapReduce:如何分而治之;HDFS:数据到底在哪里,什么是副本;Yarn到底是什么,它能干什么;NameNode到底在干些什么;ResourceManager到底在干些什么;


4.6 自己写一个MapReduce程序


请仿照WordCount例子,自己写一个(照抄也行)WordCount程序,打包并提交到Hadoop运行。你不会Java?Shell、Python都可以。如果你认真完成了以上几步,恭喜你,你的一只脚已经进来了。呐,下面是我Hadoop专题的系列博客,希望能帮助到你打怪兽哈!…(* ̄0 ̄)ノ


【Hadoop】(一)分布式文件系统 HDFS


【Hadoop】(二)Hadoop 分布式安装


【Hadoop】(三)资源管理器 YARN 和分布式计算框架 MapReduce


【Hadoop】(四)Hadoop 序列化 及 MapReduce 序列化案例实操


【Hadoop】(五)MapReduce 如何解决数据倾斜问题


【Hadoop】(六)详解 HDFS 的数据流 (面试重点)


【Hadoop】(七)Yarn 详解


后面大数据技术栈的专题博客,我就不一一展开了,都是干货!


5. 数据仓库 Hive


这个东西对于会SQL语法的程序猿来说简直就是神器,它能让你处理大数据变的很简单,不会再费劲的编写MapReduce程序。


通过前面的学习,我们已经了解到了,HDFS是Hadoop提供的分布式存储框架,它可以用来存储海量数据,MapReduce是Hadoop提供的分布式计算框架,它可以用来统计和分析HDFS上的海量数据,而Hive则是SQL On Hadoop,Hive提供了SQL接口,开发人员只需要编写简单易上手的SQL语句,Hive负责把SQL翻译成MapReduce,提交运行。


简单点来说就是,Hive的底层是MapReduce,你只要写HQL(和SQL差不了多少)就完事了! Σ(っ °Д °;)っ


-------> Hive 系列专题 (重要) !


此时,你的“大数据平台”是这样的 ( •̀ ω •́ )✧


20200523205508670.png


6. 数据采集 Sqoop / Flume / DataX


Sqoop主要用于把MySQL里的数据导入到Hadoop里的。当然你也可以不用这个,直接把MySQL数据表导出成文件再放到HDFS上也是一样的,当然生产环境中使用要注意MySQL的压力。


Flume是一个分布式的海量日志采集和传输框架,因为“采集和传输框架”,所以它并不适合关系型数据库的数据采集和传输。Flume可以实时的从网络协议、消息系统、文件系统采集日志,并传输到HDFS上。因此,如果业务有这些数据源的数据,并且需要实时的采集,那么就应该考虑使用Flume。


阿里开源的DataX也非常好用,有兴趣的可以研究和使用一下。


-------> Flume 系列专题


-------> Sqoop 系列专题


如果你完成了上面的学习,此时,你的“大数据平台”应该是这样的(^∀^●)ノシ


20200523211819308.png



相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
13天前
|
存储 机器学习/深度学习 SQL
大数据处理与分析技术
大数据处理与分析技术
52 2
|
1月前
|
存储 分布式计算 数据可视化
大数据常用技术与工具
【10月更文挑战第16天】
110 4
|
15天前
|
存储 分布式计算 NoSQL
【赵渝强老师】大数据技术的理论基础
本文介绍了大数据平台的核心思想,包括Google的三篇重要论文:Google文件系统(GFS)、MapReduce分布式计算模型和BigTable大表。这些论文奠定了大数据生态圈的技术基础,进而发展出了Hadoop、Spark和Flink等生态系统。文章详细解释了GFS的架构、MapReduce的计算过程以及BigTable的思想和HBase的实现。
|
9天前
|
机器学习/深度学习 存储 大数据
云计算与大数据技术的融合应用
云计算与大数据技术的融合应用
|
15天前
|
SQL 存储 算法
比 SQL 快出数量级的大数据计算技术
SQL 是大数据计算中最常用的工具,但在实际应用中,SQL 经常跑得很慢,浪费大量硬件资源。例如,某银行的反洗钱计算在 11 节点的 Vertica 集群上跑了 1.5 小时,而用 SPL 重写后,单机只需 26 秒。类似地,电商漏斗运算和时空碰撞任务在使用 SPL 后,性能也大幅提升。这是因为 SQL 无法写出低复杂度的算法,而 SPL 提供了更强大的数据类型和基础运算,能够实现高效计算。
|
18天前
|
存储 大数据 定位技术
大数据 数据索引技术
【10月更文挑战第26天】
40 3
|
18天前
|
存储 大数据 OLAP
大数据数据分区技术
【10月更文挑战第26天】
51 2
|
21天前
|
消息中间件 分布式计算 大数据
数据为王:大数据处理与分析技术在企业决策中的力量
【10月更文挑战第29天】在信息爆炸的时代,大数据处理与分析技术为企业提供了前所未有的洞察力和决策支持。本文探讨了大数据技术在企业决策中的重要性和实际应用,包括数据的力量、实时分析、数据驱动的决策以及数据安全与隐私保护。通过这些技术,企业能够从海量数据中提取有价值的信息,预测市场趋势,优化业务流程,从而在竞争中占据优势。
65 2
|
23天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
79 2
|
24天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
61 1
下一篇
无影云桌面