大数据需要学什么?

注意本文非广告,阅读时间四分钟左右,适合大数据入门级读者阅读

大数据需要学习什么?很多人问过我这个问题。每一次回答完都觉得自己讲得太片面了,总是没有一个合适的契机去好好总结这些内容,直到开始写这篇东西。大数据是近五年兴起的行业,发展迅速,很多技术经过这些年的迭代也变得比较成熟了,同时新的东西也不断涌现,想要保持自己竞争力的唯一办法就是不断学习。

思维导图

下面的是我整理的一张思维导图,内容分成几大块,包括了分布式计算与查询,分布式调度与管理,持久化存储,大数据常用的编程语言等等内容,每个大类下有很多的开源工具,这些就是作为大数据程序猿又爱又恨折腾得死去活来的东西了。

大数据需要的语言

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难以实现的日常脚本。

分布式计算

什么是分布式计算?分布式计算研究的是如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多服务器进行处理,最后把这些计算结果综合起来得到最终的结果。

举个栗子,就像是组长把一个大项目拆分,让组员每个人开发一部分,最后将所有人代码merge,大项目完成。听起来好像很简单,但是真正参与过大项目开发的人一定知道中间涉及的内容可不少。

比如这个大项目如何拆分?任务如何分配?每个人手头已有工作怎么办?每个人能力不一样怎么办?每个人开发进度不一样怎么办?开发过程中组员生病要请长假他手头的工作怎么办?指挥督促大家干活的组长请假了怎么办?最后代码合并过程出现问题怎么办?项目延期怎么办?项目最后黄了怎么办?

仔细想想上面的夺命十连问,其实每一条都是对应了分布式计算可能会出现的问题,具体怎么对应大家思考吧我就不多说了,其实已经是非常明显了。也许有人觉得这些问题其实在多人开发的时候都不重要不需要特别去考虑怎么办,但是在分布式计算系统中不一样,每一个都是非常严重并且非常基础的问题,需要有很好的解决方案。

最后提一下,分布式计算目前流行的工具有:

  • 离线工具Spark,MapReduce等
  • 实时工具Spark Streaming,Storm,Flink等

这几个东西的区别和各自的应用场景我们之后再聊。

分布式存储

传统的网络存储系统采用的是集中的存储服务器存放所有数据,单台存储服务器的io能力是有限的,这成为了系统性能的瓶颈,同时服务器的可靠性和安全性也不能满足需求,尤其是大规模的存储应用。

分布式存储系统,是将数据分散存储在多台独立的设备上。采用的是可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

上图是hdfs的存储架构图,hdfs作为分布式文件系统,兼备了可靠性和扩展性,数据存储3份在不同机器上(两份存在同一机架,一份存在其他机架)保证数据不丢失。由NameNode统一管理元数据,可以任意扩展集群。

主流的分布式数据库有很多hbase,mongoDB,GreenPlum,redis等等等等,没有孰好孰坏之分,只有合不合适,每个数据库的应用场景都不同,其实直接比较是没有意义的,后续我也会有文章一个个讲解它们的应用场景原理架构等。

分布式调度与管理

现在人们好像都很热衷于谈"去中心化",也许是区块链带起的这个潮流。但是"中心化"在大数据领域还是很重要的,至少目前来说是的。

  • 分布式的集群管理需要有个组件去分配调度资源给各个节点,这个东西叫yarn;
  • 需要有个组件来解决在分布式环境下"锁"的问题,这个东西叫zookeeper;
  • 需要有个组件来记录任务的依赖关系并定时调度任务,这个东西叫azkaban。

当然这些“东西”并不是唯一的,其实都是有很多替代品的,我这里只举了几个比较常用的例子。

说两句

回答完这个问题,准备说点其他的。最近想了很久,准备开始写一系列的文章,记录这些年来的所得所想,感觉内容比较多不知从哪里开始,就画了文章开头的思维导图确定了大的方向,大家都知道大数据的主流技术变化迭代很快,不断会有新的东西加入,所以这张图里内容也会根据情况不断添加。细节的东西我会边写边定,大家也可以给我一些建议,我会根据写的内容实时更新这张图以及下面的目录。

关于分组

上面的大数据组件分组其实是比较纠结的,特别是作为一个有强迫症的程序猿,有些组件好像放在其他组也可以,而且我又不想要分太多的组看起来会很乱,所以上面这张图的分组方式会稍主观一些。分组方式肯定不是绝对的。

举个例子,像kafka这种消息队列一般不会和其它的数据库或者像HDFS这种文件系统放在一起,但是它们同样都具备有分布式持久化存储的功能,所以就把它们放在一块儿了;还有openTsDB这种时序数据库,说是数据库实际上只是基于HBase上的一个应用,我觉得这个东西更侧重于查询和以及用何种方式存储,而不在于存储本身,所以就主观地放在了“分布式计算与查询”这一类,还有OLAP的工具也同样放在了这一组。

同样的情况还存在很多,大家有异议也可以说出来讨论下。

目的

大家都知道大数据的技术日新月异,作为一个程序猿想要保持竞争力就必须得不断地学习。写这些文章的目的比较简单,一是可以当做一个笔记,梳理知识点;二是希望能帮到一些人了解学习大数据。每一篇的篇幅不会太长,阅读时间控制在5到10分钟。我的公众号大叔据,会同步更新。喜欢看公众号文章的同学可以关注下,文章的篇幅不会太长,不会占用你太多的阅读时间,每天花一点时间学习,长期积累总是会有收获的。

原文地址:https://www.cnblogs.com/uncleData/p/9693320.html

时间: 2024-10-17 23:01:48

大数据需要学什么?的相关文章

云计算是什么?云计算与大数据要学啥?

云计算是什么?云计算与大数据要学啥?云计算的虚拟空间无限大,物联网和互联网产生的大量数据,要找一个地方集中存储和处理,就要用云来存储.比如我们平时手机或电脑存储空间不够的情况下,会把一些图片及视频存在云盘,云端. 云计算,简单说就是把你自己电脑里的或者公司服务器上的硬盘.CPU都放到网上,统一动态调用,现在最有名的云计算服务商是亚马逊的AWS.以前你要玩最新的大型3D游戏或者做了个大型3D动画需要渲染,首先想到的都是重新买一台更高配置电脑或者换个显卡等: 有了云计算之后,你只需要一台显示器,连到

大数据专业学什么,应该学习什么语言

大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的信息资产.目前,大数据算是非常火的专业,下面我将和大家谈谈大数据专业学什么? 大数据专业分为两种,其一是大数据开发,其二是数据分析与挖掘. 1.大数据开发:Ja-va.大数据基础.Hadoop体系.Scala.kafka.Spark等内容: 2.数据分析与挖掘:Python.关系型数据库MySQL.文档数据库Mon

云计算与大数据要学啥?零基础能学云计算吗?

云计算从字面上可以拆成"云"和"计算"两个部分,要理解它的概念,需要从IT的传统技术讲起,了解什么"软件".什么是"网络". "云计算"中的"云"指的就是计算机网络.位于计算机网络中的设备通常称为云端,位于人们身边的输入/输出设备通常称为终端.就像我们不关心信是经历了哪些机构送出的,只关心信寄出之后对方什么时候能够收到一样:我们并不关心计算机网络具体是由什么组成的,我们只关心申请的宽带带

大数据学习路线×××?大数据需要学什么

这几年来大数据非常的热门,到处都有大数据分析的演讲. 演讲内容通常是宣传各种大数据分析成功的案例. 但实际上大数据该怎么做呢? 大部份的讨论似乎都仅止于怎么搜集大量的数据, 然后用个工具(hadoop/spark)后就会马上变出商机和钱来.大数据技术最重要的核心在于如何设计可以高性能处理大量数据的程式 (highly scalable programs.) 学习大数据开发不能急于求成,要分阶段分步骤来一步步完成,大概可以分为四步: 第一个阶段:了解大数据的基本概念 首先,学习一门课程的时候,要对

大数据要学什么?看看这份大数据课程大纲

大数据领域每年都会涌现出大量新的技术,成为大数据获取.存储.处理分析或可视化的有效手段.大数据技术能够将大规模数据中隐藏的信息和知识挖掘出来,为人类社会经济活动提供依据,提高各个领域的运行效率,甚至整个社会经济的集约化程度.正是由于大数据技术展现的优势 ,让越来越多的人选择进入到大数据行业,那么对于大数据技术的学习,应该怎么学呢?又有哪些内容要学呢? 在这里还是要推荐下我自己建的大数据学习交流群:529867072,群里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发

云计算与大数据要学啥?云计算与大数据的关系

在谈到创造式前沿科技的时刻,咱们会发现一个现象,"云计算.大数据.人力智能"这三个概念常是"绑缚式"呈现,它们之间似乎有甚么紧密的关联,在谈到云计算的时刻会提到大数据:谈到人力智能的时刻也会提到大数据:谈到人力智能的时刻也会提到云计算.那么,这三个概念之间究竟有甚么联系呢? 首先来讲云计算,云计算最初的方针是对资本的经管,在不断进级迭代和应用拓展的过程当中,云计算的内在变得愈来愈丰硕. 按照云计算的部署结构又可将其分为:公有云.私有云.混合云等三种结构.比如要充分发

什么是云计算和大数据?云计算与大数据要学啥?

近年来,云计算可谓是出尽了风头.无论是IT设备厂商.电信运营商,还是服务提供商.内容提供商,都纷纷"找门子"与云计算"拉关系",大家削尖了脑袋拼命地往云计算这艘船上挤,如果自己的产品.理念或者技术与云计算根本沾不上边,那简直都羞于见人.云计算似乎无所不能,无处不在,一时间风靡全球.国内外各大媒体更是争先恐后地追捧云计算的独特魅力. 云计算就是把数据以最廉价的成本变成财富.这就像老板跟更秘书的关系一样一样的,大数据必然无法用单台的计算机进行处理,必须采用分布式计算架构

大数据难学吗?如何学习大数据?(附学习路线)

因为大数据前景好,薪资高,很多人想通过参加学习大数据,然后进入大数据行业发展.但是因为大数据的门槛较高,对于学习人员有一定的要求,那么学习大数据需要什么基础知识呢?大家一起来了解下对于大数据学习者本身的学历水平的要求.目前大多数的机构,对于大数据学习者要求必须是大专学历以上,而且大专学历还要求是理工科相关专业的,如果是本科及本科以上的,则对专业要求适当的放宽.同时大数据分为两大方向:大数据开发和数据分析.这两大方向的对于基础知识的要求不同,数据分析偏向应用层面,对于编程要求不高,相较而言对于基础

云计算与大数据,云计算与大数据要学啥?

云计算满天飞,很多平台不叫个云都对不起时代,跟不上潮流.但你问问对方什么是云,什么叫云计算,1000个人有1000个不同的说法.什么电厂模式.无限计算能力,虚拟化,资源池化. 云计算概念的提出始于2006年8月9日,Google首席执行官埃里克·施密特在搜索引擎大会首次提出"云计算"的概念.而Google"云端计算"源于Google工程师克里斯托弗·比希利亚所做的"Google 101"项目.这就是云计算最初的起源. 后来云计算主要经历了电厂模式