大数据是近五年兴起的行业,发展迅速,很多技术经过这些年的迭代也变得比较成熟了,同时新的东西也不断涌现,想要保持自己竞争力的唯一办法就是不断学习。但是,大数据需要学习什么?
我还是要推荐下我自己创建的大数据分享群142973723,这是大数据学习交流的地方,不管你是小白还是大牛,小编都欢迎,不定期分享干货,包括我整理的一份适合零基础学习的大数据资料和入门教程。
下面的是我之前整理的一张思维导图,内容分成几大块,包括了分布式计算与查询,分布式调度与管理,持久化存储,大数据常用的编程语言等等内容,每个大类下有很多的开源工具。
02 大数据需要的语言Java
java可以说是大数据最基础的编程语言,据我这些年的经验,我接触的很大一部分的大数据开发都是从Jave Web开发转岗过来的(当然也不是绝对我甚至见过产品转岗大数据开发的,逆了个天)。
一是因为大数据的本质无非就是海量数据的计算,查询与存储,后台开发很容易接触到大数据量存取的应用场景
二就是java语言本事了,天然的优势,因为大数据的组件很多都是用java开发的像HDFS,Yarn,Hbase,MR,Zookeeper等等,想要深入学习,填上生产环境中踩到的各种坑,必须得先学会java然后去啃源码。
说到啃源码顺便说一句,开始的时候肯定是会很难,需要对组件本身和开发语言都有比较深入的理解,熟能生巧慢慢来,等你过了这个阶段,习惯了看源码解决问题的时候你会发现源码真香。
Scala
scala和java很相似都是在jvm运行的语言,在开发过程中是可以无缝互相调用的。Scala在大数据领域的影响力大部分都是来自社区中的明星Spark和kafka,这两个东西大家应该都知道(后面我会有文章多维度介绍它们),它们的强势发展直接带动了Scala在这个领域的流行。
Python和Shell
shell应该不用过多的介绍非常的常用,属于程序猿必备的通用技能。python更多的是用在数据挖掘领域以及写一些复杂的且shell难以实现的日常脚本。
03 分布式计算
什么是分布式计算?分布式计算研究的是如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多服务器进行处理,最后把这些计算结果综合起来得到最终的结果。
举个栗子,就像是组长把一个大项目拆分,让组员每个人开发一部分,最后将所有人代码merge,大项目完成。听起来好像很简单,但是真正参与过大项目开发的人一定知道中间涉及的内容可不少。
分布式计算目前流行的工具有:
离线工具Spark,MapReduce等
实时工具Spark Streaming,Storm,Flink等
这几个东西的区别和各自的应用场景我们之后再聊。
04 分布式存储
传统的网络存储系统采用的是集中的存储服务器存放所有数据,单台存储服务器的io能力是有限的,这成为了系统性能的瓶颈,同时服务器的可靠性和安全性也不能满足需求,尤其是大规模的存储应用。
分布式存储系统,是将数据分散存储在多台独立的设备上。采用的是可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
上图是hdfs的存储架构图,hdfs作为分布式文件系统,兼备了可靠性和扩展性,数据存储3份在不同机器上(两份存在同一机架,一份存在其他机架)保证数据不丢失。由NameNode统一管理元数据,可以任意扩展集群。
主流的分布式数据库有很多hbase,mongoDB,GreenPlum,redis等等等等,没有孰好孰坏之分,只有合不合适,每个数据库的应用场景都不同,其实直接比较是没有意义的,后续我也会有文章一个个讲解它们的应用场景原理架构等。
05 分布式调度与管理
现在人们好像都很热衷于谈"去中心化",也许是区块链带起的这个潮流。但是"中心化"在大数据领域还是很重要的,至少目前来说是的。
分布式的集群管理需要有个组件去分配调度资源给各个节点,这个东西叫yarn;
需要有个组件来解决在分布式环境下"锁"的问题,这个东西叫zookeeper;
需要有个组件来记录任务的依赖关系并定时调度任务,这个东西叫azkaban。
当然这些“东西”并不是唯一的,其实都是有很多替代品的,只是举了几个比较常用的例子。
大数据产业在科学发展的趋势中越来越受欢迎。大数据工程师需要学习哪些知识和技能?
首先,数据可视化。
R语言不仅是一种编程语言,而且具有强大的统计计算功能和方便的数据可视化系统。这里,我推荐你读一本叫做R数据可视化手册的书。《R数据可视化手册》主要关注R的图形系统,指导读者通过图形系统实现数据可视化。本书提供了超过150种快速绘制高质量图形的技术,每种技术都用于满足特定的绘图要求。
Python已经看到了许多新的Python数据可视化库,它们已经弥补了一些空白。事实上,MatPoTLIB已经成为数据可视化最重要的数据库。此外,还有许多其他的库,如VISPY、BoKeh、Seabn、PyGa、Pyura和NETWorkX。这些库中的一些是建立在MatPultLB上的,有些还具有其他功能。
ECTARS和D3.JS是基于HTML5的两个纯Java图表库。它们提供直观、生动、交互式和可定制的数据可视化图表。创新的拖放计算、数据视图、范围漫游等特性极大地增强了用户体验,赋予用户挖掘和集成数据的能力。它具有Mashup图、拖放计算、数据视图制作、动态类型切换、图例切换、数据区域选择、范围漫游、多维堆栈等功能。
在Excel中可以选择大量的公式和函数。Microsoft Excel可用于执行计算、分析信息以及管理电子表格或网页中的数据信息列表和数据图表。它可以实现许多方便的功能,给用户带来方便。事实上,Excel可以完全满足日常工作中图表制作和数据可视化的需要。因此,要进入大数据产业,学习Excel是基础。大数据学习小群142973723
二。机器学习
机器学习的基础包括聚类、时间序列、推荐系统、回归分析、文本挖掘、决策树、支持向量机、贝叶斯分类和神经网络。这些基本知识仅仅通过听名字是无法理解的,但如果你掌握了统计和概率的基本知识,你就可以很容易地掌握这些不可理解的名词。因此,有必要对机器学习前的统计和概率进行研究。
在完成统计学和概率学的基础研究之后,你可以选择一个或两个机器学习工具进行实践。百度的谷歌和百度脑的张量是优秀的机器学习框架。
三。算法
对于程序员来说,该算法并不太奇怪,首先,我们需要了解什么是数据结构,包括堆栈、队列、链表、哈希表、二叉树、红黑树、B树。然后,我们需要学习常见的算法,包括排序(插入排序、桶排序、堆排序、快速排序)、最大子阵列、最长公共子序列、最短路径和矩阵存储操作。