原文地址:Big Data Learning Path for all Engineers and Data Scientists out there
介绍
大数据领域十分庞大,对于任何开始学习大数据及其相关技术的人来说都是一个相当艰巨的任务。大数据技术繁多而使你不知从何处开始。
这是我写这篇文章的原因。本文为您提供了开始旅程学习大数据的指导途径,并将帮助您在大数据行业获得一份工作。我们面临的最大挑战是根据我们的兴趣和技能来确定正确的角色。
为了解决这个问题,我将考虑到工程师和计算机毕业生的不同情况的基础上,详细的解释每个大数据角色。
我试图去回答所有你遇到的学习大数据遇到的问题。
内容列表
- 如何开始?
- 在大数据行业有哪些角色?
- 你的背景如何?什么岗位更适合你?
- 根据你的情况选择角色
- 如何成为一个大数据工程师
- 大数据术语
- 您需要知道的系统和架构
- 学习设计解决方案和技术
- 大数据学习途径
- 学习资源
1.如何开始?
大多数人在学习大数据前第一个问题总是:“我应该学习Hadoop,分布式计算,Kafka,NoSQL还是Spark?”
那么,我一般只有一个答案:“这取决于你想做什么”。
那么,让我们以有条不紊的方式来解决这个问题。我们将一步一步来完成这个学习过程。
2.在大数据行业有哪些职能?
在大数据行业里有很多职能,但总体来说它们被分为两类:
- 大数据工程
- 大数据分析
这些领域相互依赖但又有不同。
大数据工程主要围绕大量数据的设计、部署、获取、维护(存储),大数据工程需要设计和部署系统使相关数据可用于面向消费者和内部应用程序。
然而,大数据分析主要围绕来自大数据工程设计和部署的系统的大量数据。大数据分析涉及分析趋势,模式和建立各种分类,预测和预测系统。
因此,简单来说,大数据分析涉及数据的高级计算。 而大数据工程涉及系统和设置的设计和部署。
3.你的背景如何?什么岗位更适合你?
现在,我们知道在这行业中有哪些类型的职能。让我们尝试定义适合你的方面,以便你能够分析出,在这个行业里,哪儿更适合你。
总的来说,根据个人的教育背景及行业经验,可以分为以下几种:
-
教育背景(不仅仅是你的大学教育背景,也包含兴趣爱好)
计算机科学相关
数学相关
-
行业经验
新手(技术小白)
数据科学家
计算机工程师(在数据相关项目里工作)
因此,通过以上分类,你可以按以下方式定义你的背景:
例1: “我是一个计算机研究生,但是没有扎实的数学技能相关经验”
你对计算机科学和数学感兴趣,但是没有相关经验,将被定义为“新手(技术小白)”
例2: “我是一个计算机研究生,进行一些数据库相关工作”
你的兴趣在计算机科学,你比较适合计算机工程师(在数据相关项目里工作)
例3: “我是在数据科学方面工作的统计学家”
你的兴趣在数学,你比较适合数据科学家
4.职能列表
4.1 大数据工程
如果您有良好的编程技能,并了解计算机如何通过互联网进行互动(基础知识),但您对数学和统计学不感兴趣。在这种情况下,您应该去大数据工程。
4.1 大数据分析
如果您善于编程,并且您的教育和兴趣在于数学和统计学,那么您应该去做大数据分析。
5.如何成为一个大数据工程师
首先我们得考虑为了在这个行业获得一个位置,一个大数据工程师应该知道和学习的有哪些。第一步,也是最重要的一步是要明白自己的需求。你不能不明白自己的需求就开始学习,否则,你将一无所获。
为了确定自己的需求,你必须知道大数据普通的行业术语,以此来明白大数据实际上是什么。
5.1 大数据术语
大数据项目有两个主要方面 - 数据要求和处理要求。
-
5.1.1 数据要求
结构:如果数据是按照预定义的数据格式排列存储(即具有表结构),则称为结构化数据。如果它存储在文件中没有固定的模式,则称为非结构化数据,一般数据分为这两种结构,当然,像JSON这样的则称为半结构化数据。
大小:系统所处理的数据量评估,例如说大概一天会有100M以内的数据需要系统处理,那么则评估为S,往上以此增加为M,L,XL,XXL和最后的实时流处理等。
Sink吞吐量:定义系统可以接收数据的速率,低速率的称为L(如同2G网络,中速的为M(如同3G)高速的称为H(如同4G或者以上)。
源吞吐量:定义可以将数据更新和转换到系统的速率,如同Sink吞吐量一样分为三个等级。
-
5.1.2 处理要求
查询时间:系统执行查询所需的时间,其实等同于查询效率(类型: Long/ Medium /Short)。
处理时间:处理数据所需的时间(类型: Long/ Medium /Short)。
精度:数据处理的准确性,有些数据需要非常精确,有些只要大概的一个统计值来替代即可,则分为精确/近似。
5.2 你应该知道的系统和结构
情景1: 通过从客户数据,潜在客户数据,呼叫中心数据,销售数据,产品数据,博客等多个数据源创建数据湖,设计一个分析公司销售业绩的系统。
5.3 学习设计方法和技术
上述情景解决方法:销售数据的数据湖(这只是我个人的解决方法,你可能有更优雅的解决方法)
那么,一个数据工程师如何来处理这种问题呢?
需要记住一点的是,大数据系统不仅仅被设计成能够无缝集成来自不同的资源并一直可用,而且在某种程度上能够对开发应用时,数据的分析和数据使用时更加简单、快速及可用(这种情况也称为智能仪表盘)。
最终目标:
通过集成不同资源的数据创建数据湖
在定期的间隔时间里,自动的更新数据(可能是一周)
分析的数据可用性(全天候,甚至每天)
进行架构,为了简单访问和无缝部署一个分析仪表盘
现在我们知道我们的最终目标是什么,让我们尝试在更正式的方式来制定我们的要求。
5.3.1 数据相关要求
结构:大部分数据是结构化的且定义了一个数据模型,但数据源,如网络日志,客户互动/呼叫中心数据,销售目录中的图像数据,产品广告数据。图像和多媒体广告数据的可用性和要求可能取决于公司。
结论: 需要兼顾结构化和非结构化数据
大小:L 或 XL(选择Hadoop)
Sink吞吐量:高
质量:中等的(Hadoop & Kafka)
完整性:不完整
5.3.2 处理相关要求
查询时间:Medium 到 Long
处理时间:Medium 到 Short
精确度:精确
当不同的资源被集成,重要的是不同的数据将以不同的速率进入系统。例如,网络日志以高级别粒度的连续流进入;
基于以上对系统的要求分析,我们推荐以下大数据配置;
6.大数据学习路径
现在,你已经明白了大数据行业、不同角色职能和一个大数据从业者的要求;那么看下我们如何才能成为一名大数据工程师
我们知道,大数据领域技术很杂乱,因此,学习和你大数据工作职能相关的技术就非常重要。它相对于一些像数据科学和机器学习这些常规领域有些不同,你需要在某些地方开始,但要努力完成这个领域的每件事情。
为了找到属于你的路径,应该遍历下面这颗的知识树:
在这个树形图的帮助下,您可以根据您的兴趣和目标选择路径。 然后,您可以开始学习大数据的旅程。点此下载技术信息图表
任何想要部署应用程序的工程师必须掌握的基本概念之一是Bash脚本,你必须非常了解Linux和bash脚本,这是处理大数据的基本要求。
核心在于,大部分大数据技术是通过Java或者Scala实现的,但是不必担心,如果你不想使用这些语言,我们可以选择Python 或者 R,因为目前大多数大数据技术支持Python 或者 R。
因此,你可以使用上面提到的语言开始,我比较推荐使用Python或者Java。
另外,你需要熟悉在云端服务器工作,因为如果你没有在云端处理过大数据,没有人会重视你。可以尝试使用AWS、或阿里云等提供商的小型数据集,大多数都有一个小型的免费服务版本让你练习。如果您愿意,您可以暂时跳过此步骤,但在找工作之前请务必在云端工作。
还有,你需要学习分布式文件系统,最流行的DFS是Hadoop 提供的文件系统,在这一阶段,你也可以学习一些你领域相关的NoSQL数据库。
到目前为止这些,是每个大数据工程师必须知道的基础知识。
现在,你决定是否要处理数据流或存储着的大量数据,这是用于定义大数据(Volume,Velocity,Variety和Veracity)的四个维度中两个之间的选择。
假设你决定使用数据流来开发实时或近实时分析系统。那么你应该采取Kafka路径,或者你采取Map reduce路径,你就需要按照你创建的路径学习。请注意,在MapReduce路径中,不需要Pig和Hive都学习,只学习其中之一就足够了。
总结:学习知识树的方式
先从起始路径开始,用深度优先策略遍历。
到下一个节点前先停止,检查文章最后学习资源附录中给出的资源。
如果你充分了解并且在使用该技术方面有相当的信心,那么请转到下一个节点。
在每个节点尝试完成至少3个编程问题。
转入下一个节点学习。
到达路径尾端节点。
从另外一条路径再开始。
最后一步,说实话,没有应用仅仅是流处理或者低速延迟处理,因此,您在技术上需要成为执行完整的lambda架构的高手。
而且,这并不是学习大数据的唯一路径,你可以拥有自己的一套学习路径。但是,这个路径,可以适用于任何人。
如果你想进入大数据分析领域,也可以使用这一套学习路径。
对于能够处理大数据的数据科学家,需要在下面部分的树中有机器学习、深度学习、可视乎研究等,先要将重点放在机器学习上。
7.资源
1.Bash Scripting
- Bash Guide for Beginners by Machtelt Garrels
2.Python
- Python for Everybody Specialization by Coursera
- Learning Path for Data Science in Python for Coursera
3.Java
- Introduction to Programming with Java 1 : Starting to Code with Java by Udemy
- Intermediate and Advanced Java Programming by Udemy
- Introduction to Programming with Java 2 by Udemy
- Object Oriented Java Programming: Data Structures and Beyond Specialization by Coursera
4.Cloud
- Big Data Technology Fundamentals by Amazon Web Services
- Big Data on AWS by Amazon Web Services
5.HDFS
- Big Data and Hadoop Essentials by Udemy
- Big Data Fundamentals by Big Data University
- Hadoop Starter Kit by Udemy
- Apache Hadoop Documentation
- Book – Hadoop Cluster Deployment
6.Apache Zookeeper
- Apache Zookeeper Documentation
- Book – Zookeeper
7.Apache Kafka
- The complete Apache Kafka course for beginners by Udemy
- Learn Apache Kafka Basics and Advanced topic by Udemy
- Apache Kafka Documentation
- Book – Learning Apache Kafka
8.SQL
- Managing Big Data with MySQL by Coursera
- SQLCourse by SQLcourse.com
- Beginner’s Guide to PostgreSQL by Udemy
- High-Performance MySQL
9.Hive
- Accessing Hadoop Data using Hive by Big Data University
- Learning Apache Hadoop Ecosystem Hive by Udemy
- Apache Hive Documentation
- Programming Hive
10.Pig
- Apache Pig 101 by Big Data University
- Programming Hadoop with Apache Pig by Udemy
- Apache Pig Documentation
- Book- Programming Pig
11.Apache Storm
- Real-time analytics with Apache Storm by Udacity
- Apache Storm Documentation
12.Apache Kinesis
- Apache Kinesis Documentation
- Amazon Kinesis Streams Developer Resources by Amazon Web Services
13.Apache Spark
- Data Science and Engineering with Apache by edx
- Apache Spark Documentation
- Book – Learning Spark
14.Apache Spark Streaming
- Apache Spark Streaming Documentation
结语
我希望你能喜欢这篇文章,在这个路径的帮助下,能够开始你的大数据学习旅程,文章里也包含了你在找工作时需要的一些主要概念。