1.如何开始?
人们想开始学习大数据的时候,最常问的问题是,“我应该学Hadoop(hadoop是一款开源软件,主要用于分布式存储和计算,他由HDFS和MapReduce计算框架组成的,他们分别是Google的GFS和MapReduce的开源实现。由于hadoop的易用性和可扩展性,因此成为最近流行的海量数据处理框架。hadoop这个单词来源于其发明者的儿子为一个玩具大象起的名字), 分布式计算,Kafka(Kafka是由LinkedIn开发的一个分布式基于发布/订阅的消息系统),NoSQL(泛指非关系型的数据库)还是Spark(Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处)?”
而我通常只有一个答案:“这取决于你究竟想做什么。”
因此,让我们用一种有条理的方式来解决这个问题。我们将一步步地探索这条学习之路。
2. 在大数据行业有哪些职业需求?
在大数据行业中有很多领域。通常来说它们可以被分为两类:
大数据工程
大数据分析
这些领域互相独立又互相关联。
大数据工程涉及大量数据的设计,部署,获取以及维护(保存)。大数据工程师需要去设计和部署这样一个系统,使相关数据能面向不同的消费者及内部应用。
而大数据分析的工作则是利用大数据工程师设计的系统所提供的大量数据。大数据分析包括趋势、图样分析以及开发不同的分类、预测预报系统。
因此,简而言之,大数据分析是对数据的高级计算。而大数据工程则是进行系统设计、部署以及计算运行平台的顶层构建。
3.大数据学习路径
我们知道大数据领域充斥着多种技术。 这与任何常规领域有点不同,如数据科学和机器学习中,你可以从某些地方开始并努力完成这一领域内的所有工作。
下面你会发现一个你应该通过的树状图,以找到自己的路。即使树状图中的一些技术被指向是数据科学家的强项,但是如果你走上一条路,知道所有的技术直到“树叶节点”总是很好的。 该树状图源自lambda架构范例。
任何想要调配应用程序的工程师必须知道的基本概念之一是Bash 脚本编程。你必须对linux和bash 脚本编程感到舒适。这是处理大数据的基本要求。
核心是,大部分大数据技术都是用Java或Scala编写的。但是别担心,如果你不想用这些语言编写代码,那么你可以选择Python或者R,因为大部分的大数据技术现在都支持Python和R。
因此,你可以从上述任何一种语言开始。 我建议选择Python或Java。
接下来,你需要熟悉云端工作。 这是因为如果你没有在云端处理大数据,没有人会认真对待。 请尝试在AWS,阿里云或任何其他云端供应商上练习小型数据集。 他们大多数都有一个免费的层次,可以让学生练习。
接下来,你需要了解一个分布式文件系统。最流行的分布式文件系统就是Hadoop分布式文件系统。在这个阶段你还可以学习一些你发现与所在领域相关的NoSQL数据库。
到目前为止的路径是每个大数据工程师必须知道的硬性基础知识。
现在,你决定是否要处理数据流或静止的大量数据。 这是用于定义大数据(Volume,Velocity,Variety和Veracity)的四个V中的两个之间的选择。
那么让我们假设你已经决定使用数据流来开发实时或近实时分析系统。 之后你应该采取卡夫卡(kafka)之路,或者还可以采取Mapreduce的路径。然后按照你自己创建的路径。 请注意,在Mapreduce路径中,不需要同时学习pig和hive。 只学习其中之一就足够了。
总结:通过树状图的方式。
从根节点开始,并执行深度优先的通过方式。
在每个节点停止查验链接中给出的资源。
如果你有充足的知识,并且在使用该技术方面有相当的信心,那么请转到下一个节点。
在每个节点尝试完成至少3个编程问题。
移动到下一个节点。
到达树叶节点。
从替代路径开始。
最后一步(#7)阻碍你! 说实话,没有应用程序只有流处理或慢速延迟数据处理。 因此,在技术上需要成为执行完整的lambda架构的高手。
另外,请注意,这不是学习大数据技术的唯一方法。 你可以随时创建自己的路径。 但这是一个可以被任何人使用的路径。
如果你想进入大数据分析世界,可以遵循相同的路径,但不要尝试让所有东西都变得完美。
对于能够处理大数据的数据科学家,你需要在树状图中添加一些机器学习渠道,并将重点放在机器学习渠道上。
根据你在上述树状图中使用的数据类型,添加选择NoSQL数据库。有大量的NoSQL数据库可供选择,所以它常常取决于你将要使用的数据类型。
而且为了给采用什么类型的NoSQL数据库提供一个明确的答案,你需要考虑到系统需求,如延迟,可用性,弹性,准确性当然还有你当前处理的数据类型。