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

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
简介: 从零开始的大数据技术学习路线指南:带你轻松成为大数据开发工程师!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 
目录
相关文章
|
29天前
|
人工智能 搜索推荐 算法
数据平台演进问题之数据库技术面临挑战如何解决
数据平台演进问题之数据库技术面临挑战如何解决
|
9天前
|
消息中间件 监控 大数据
"探索Streaming技术:如何重塑大数据未来,实时处理引领数据价值即时转化新纪元"
【8月更文挑战第10天】信息技术高速发展,数据成为推动社会进步的关键。面对数据爆炸,高效实时处理成挑战。流处理(Streaming)技术应运而生,即时处理数据流,无需积累。应用于实时监控、日志分析等场景。例如,电商平台利用流处理分析用户行为,推送个性化推荐;智能交通系统预测拥堵。结合Apache Kafka和Flink,实现从数据收集到复杂流处理的全过程。流处理技术促进数据即时价值挖掘,与AI、云计算融合,引领大数据未来发展。
27 5
|
22天前
|
机器学习/深度学习 存储 分布式计算
驾驭数据洪流:大数据处理的技术与应用
大数据处理不仅是信息技术领域的一个热门话题,也是推动各行各业创新和发展的重要力量。随着技术的进步和社会需求的变化,大数据处理将继续发挥其核心作用,为企业创造更多的商业价值和社会贡献。未来,大数据处理将更加注重智能化、实时性和安全性,以应对不断增长的数据挑战。
|
20天前
|
传感器 大数据 数据处理
大数据处理中的流计算技术:实现实时数据处理与分析
【7月更文挑战第30天】随着分布式系统、云原生技术、数据安全与隐私保护技术的不断发展,流计算技术将在更多领域得到应用和推广,为大数据处理和分析提供更加高效、智能的解决方案。
|
26天前
|
SQL 分布式计算 MaxCompute
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
|
25天前
|
存储 分布式计算 MaxCompute
构建NLP 开发问题之如何支持其他存储介质(如 HDFS、ODPS Volumn)在 transformers 框架中
构建NLP 开发问题之如何支持其他存储介质(如 HDFS、ODPS Volumn)在 transformers 框架中
|
3天前
|
分布式计算 大数据 Java
Scala 入门指南:从零开始的大数据开发
Scala 入门指南:从零开始的大数据开发
|
28天前
|
机器学习/深度学习 人工智能 数据可视化
大数据时代的数据可视化技术:趋势、挑战与未来展望
【7月更文挑战第22天】随着技术的不断进步和应用场景的不断拓展,数据可视化技术将在更多领域发挥更大的作用。未来,我们可以期待更加智能化、实时化、沉浸式和民主化的数据可视化解决方案的出现。同时,随着数据量的不断增加和数据类型的不断丰富,数据可视化技术也将面临更多的挑战和机遇。只有不断创新和优化技术才能满足日益增长的需求并推动数据可视化技术的持续发展。
|
29天前
|
人工智能 自然语言处理 数据管理
数据平台演进问题之自然语言处理技术在AI驱动的数据库中的作用是什么
数据平台演进问题之自然语言处理技术在AI驱动的数据库中的作用是什么
|
1月前
|
分布式计算 运维 DataWorks
MaxCompute操作报错合集之用户已在DataWorks项目中,并有项目的开发和运维权限,下载数据时遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。

热门文章

最新文章