北京列举网 > 教育培训 > 电脑/网络 > 好程序员大数据基本概念及技术
北京
[切换城市]

好程序员大数据基本概念及技术

更新时间:2017-12-25 10:07:02 浏览次数:81次
区域: 北京 > 海淀 > 清河
类别:软件工程师培训
地址:海淀区宝盛里天丰利商城三层
  大数据是当前很热的一个词。这几年来,云计算、继而大数据,成了整个社会的热点,不管什么,都要带上“大数据”三个字才显得时髦。大数据究竟是什么东西?有哪些相关技术?对普通人的生活会有怎样的影响?我们来一步步弄清这些问题。

  一、基本概念

  在讲什么是大数据之前,我们首先需要厘清几个基本概念。

  1.数据

  关于数据的定义,大概没有一个版本。为方便,此处使用一个简单的工作定义:数据是可以获取和存储的信息。

  直观而言,表达某种客观事实的数值是容易被人们识别的数据(因为那是“数”)。但实际上,人类的一切语言文字、图形图画、音像记录,所有感官可以察觉的事物,只要能被记下来,能够查询到,就都是数据(data)。

  不过数值是所有数据中容易被处理的一种,许多和数据相关的概念,例如下面的数据可视化和数据分析,早是立足于数值数据的。

  传统意义上的数据一词,尤其是相对于今天的“大数据”的“小数据”,主要指的就是数值数据,甚至在很多情况下专指统计数值数据。这些数值数据用来描述某种客观事物的属性。

  2.数据可视化

  对应英语的data visulization(或可译为数据展示),指通过图表将若干数字以直观的方式呈现给读者。比如非常常见的饼图、柱状图、走势图、热点图、K线等等,目前以二维展示为主,不过越来越多的三维图像和动态图也被用来展示数据。

  3.数据分析

  这一概念狭义上,指统计分析,即通过统计学手段,从数据中精炼对现实的描述。例如:针对以关系型数据库中以table形式存储的数据,按照某些指定的列进行分组,然后计算不同组的均值、方差、分布等。再以可视化的方式讲这些计算结果呈现出来。目前很多文章中提及的数据分析,其实是包括数据可视化的。

  4.数据挖掘

  这个概念的定义也是众说纷纭,落到实际,主要是在传统统计学的基础上,结合机器学习的算法,对数据进行更深层次的分析,并从中获取一些传统统计学方法无法提供的Insights(比如预测)。

  简单而言:针对某个特定问题构建一个数学模型(可以把这个模型想象成一个或多个公式),其中包含一些具体取值未知的参数。我们将收集到的相关领域的若干数据(这些数据称为训练数据)代入模型,通过运算(运算过程称为训练),得出那些参数的值。然后再用这个已经确定了参数的模型,去计算一些全新的数据,得出相应结果。这一过程叫做机器学习。

  机器学习的算法纷繁复杂,常用的主要有回归分析、关联规则、分类、聚类、神经网络、决策树等。

  二、大数据和大数据分析

  大数据首先是数据,其次,它是具备了某些特征的数据。目前公认的特征有四个:Volumne,Velocity,Variety,和Value,简称4V.

  1.Volume:大量。就目前技术而言,至少TB级别以下不能成大数据。

  2.Velocity:高速。1TB的数据,十分钟处理完,叫大数据,一年处理完,就不能算“大”了。

  3.Variety:多样。就内容而言,大数据已经远远不局限数值,文字、图片、语音、图像,一切在网络上可以传输显示的信息,都属于此列。从结构而言,和存储在数据库中的结构化数据不同,当前的大数据主要指半结构化和非结构化的信息,比如机器生成信息(各种日志)、自然语言等。

  4. Value:价值。如果不能从中提取出价值,不能通过挖掘、分析,得到指导业务的insights,那这些数据也就没什么用。不过现在还有另外一种提法:只要是数据就都有用,能不能获得价值,是分析人员的能力问题。

  大数据分析,顾名思义,就是将前述的数据可视化、数据分析、数据挖掘等方法作用到大数据之上。

  从某种意义上讲,大数据可谓机器学习的福音,很多原有的简单粗糙的机器学习模型,仅仅因为训练数据量级的增加就大幅提高了准确性。还有一些模型则因为准确性随着数据量增加而增加的势头尤其明显,得以脱离默默无闻而被广泛使用。

  另一方面,大数据分析对于运算量的需求激增,原有的基于单机的运算技术显然已经不能满足需求,这就催生了一些列新技术。

  三、大数据技术

  抽象而言,各种大数据技术无外乎分布式存储 + 并行计算。具体体现为各种分布式文件系统和建立在其上的并行运算框架。这些软件程序都部署在多个相互连通、统一管理的物理或虚拟运算节点之上,形成集群(cluster)。因此不妨说,云计算是大数据的基础。

  下面介绍几种当前比较流行的大数据技术:

  1.Hadoop

  Hadoop无疑是当前知名的大数据技术了。

  2003年到2004年间,Google发布了关于GFS、MapReduce和BigTable三篇技术论文(这几篇论文成为了后来云计算、大数据领域发展的重要基石)。当时一位因公司倒闭赋闲在家的程序员Doug Cutting根据前两篇论文,开发出了一个简化的山寨版GFS – HDFS,以及基于其的MapReduce计算框架,这就是Hadoop初版本。后来Cutting被Yahoo雇佣,得以依赖Yahoo的资源改进Hadoop,并将其贡献给了Apache开源社区。

  简单描述Hadoop原理:数据分布式存储,运算程序被发派到各个数据节点进行分别运算(Map),再将各个节点的运算结果进行合并归一(Reduce),生成终结果。相对于动辄TB级别的数据,计算程序一般在KB – MB的量级,这种移动计算不移动数据的设计节约了大量网络带宽和时间,并使得运算过程可以充分并行化。

  在其诞生后的近10年里,Hadoop凭借其简单、易用、、免费、社区支持丰富等特征成为众多企业云计算、大数据实施的。

  2.Storm

  Hadoop虽好,却有其“死穴”.其一:它的运算模式是批处理。这对于许多有实时性要求的业务就无法做到很好的支持。因此,Twitter推出了他们自己的基于流的运算框架--Storm.不同于Hadoop一次性处理所有数据并得出统一结果的作业(job),Storm对源源导入的数据流进行持续不断的处理,随时得出增量结果。

  3.Spark

  Hadoop的另一个致命弱点是:它的所有中间结果都需要进行硬盘存储,I/O消耗巨大,这就使得它很不适合多次迭代的运算。而大多数机器学习算法,恰恰要求大量迭代运算。

  2010年开始,UC Berkeley AMP Lab开始研发分布式运算的中间过程全部内存存储的Spark框架,由此在迭代计算上大大提高了效率。也因此成为了Hadoop的强有力竞争者。

  4.NoSQL 数据库

  NoSQL数据库可以泛指非关系型数据库,不过一般用来指称那些建立在分布式文件系统(例如HDFS)之上,基于key-value对的数据管理系统。

  相对于传统的关系型数据库,NoSQL数据库中存储的数据无需主键和严格定义的schema.于是,大量半结构化、非结构化数据可以在未经清洗的情况下直接进行存储。这一点满足了处理大量、高速、多样的大数据的需求。当前比较流行的NoSQL数据库有MongoDB,Redis,Cassandra,HBase等。

  NoSQL并不是没有SQL,而是不仅仅有(not only)SQL的意思。为了兼容之前许多运行在关系型数据库上的业务逻辑,有很多在NoSQL数据库上运行SQL的工具涌现出来,典型的例如Hive和Pig,它们将用户的SQL语句转化成MapReduce作业,在Hadoop上运行。

  四、和数据、大数据相关的职位

  和数据、数据分析相关的职位有不少,大都不是新生事物。

  1.有一个历史悠久的职位叫“统计”.一般的农村生产队都有统计员,工厂也有专门的统计职位。比如一个工厂里,每个车间每天都要上报各种原材料的使用、耗损情况、产品成品数,废品数等。这些数字被汇总给统计人员,统计员会做一个表格,说明某日、月、年的成品率、成品数等等概念。虽然看起来不够in,但实际上他们做的数据收集整理展示的工作,从根本上和现在的数据分析师是同理的。

  2.另一个相对摩登一点的职位,叫做BI (business intelligence)。这个职位,其实和传统工厂的统计差别不大,如果说有差别,就是差在数据展示上。BI都被要求使用软件工具对数据进行整理和展示。比如,某大型生产型企业的BI,他的工作是统计该企业各种产品在各个地区的销售信息。他每天从拿到各个销售网点提交的excel表,把其中数据导出到数据库里,进行一些SQL查询,然后用可视化工具将结果生成图形表格提交给业务人员参考。

  3.还有两个职位,一个叫做数据分析师(data analyst),另一个叫数据科学家(data scientist)。这两个职位,在有些机构组织中,职责不同;在另一些地方,职责相同,或相似,但级别不同。对于职责不同的地方,一般数据科学家要使用机器学习的算法,而数据分析师则专注在统计。

  目前数据科学家这个词一般都和大数据绑定在一起,包括在美国,似乎一提data scientist就是做大数据的,但是实际上未必,很多有 data scientist 头衔的人,也确实在工作中大量应用机器学习算法,但是,他们处理的并不是大数据,很可能只是几十万,几百万量级的数据库记录。

  4.(大)数据工程师(data engineer/big data engineer)。这个职位更偏重于数据本身的处理,即大规模(TB/PB级别)数据的提取、迁移、抽取和清洗。数据工程师也可以进行数据挖掘工作,或者协助数据科学家实现算法。

  5.数据质量(data quality)。担任这个职位的,是保证各层级数据完整性和准确性的人员。他们负责制定数据完整性和准确性标准,设计检测方法并实施检测。

  上述这些职位,主要指IT产业内的职位,其他还有一些在研究机构或者大公司研究部门进行算法优化和研究的人员,以及另一些相对低端的,手工清洗数据的劳动者(例如:在数据库时代,手工录入数据到数据库的人),就都不计入此列了。

  五、大数据的影响

  大数据概念的兴起正在对我们的社会产生多方面的影响:

  1.定量分析

  因“大数据”而使得人们开始关注“数据”,可谓首要的影响。尤其对于国内而言,越来越多的决策者开始重视数据的力量,会在决断同时参考各类统计、分析报表,而不再是凭直觉拍脑袋。

  2.从必然到相关

  相对于传统的小数据统计,大数据更关注与发现事物之间的相关性,而非因果关系。人类历经百万年基于数据贫乏的现状而形成的“因为……所以……”的思维习惯,在大数据时代,是否会向“……有关联……”转变?

  3.信息安全

  以今日的技术,一个人的个人信息、网页浏览记录、购物记录、对图书影片等内容的偏好,在浏览不同页面时的行为习惯,如此种种,都可以轻易被商家或某些机构获取。在大数据的笼罩之下,每个人都将无所遁形。那么,对于每个人本该拥有的隐私权,该如何保护?

  新技术解决了许多之前无法解决的问题,然而,新生事物也带来了新的问题。像所有技术一样,大数据也是一把 “双刃剑”.能否用其利除其弊,有赖于全社会的共同努力。

  好程序员特训营自2014年开班至今,一直立志培养高薪,高能,高职的程序员人才,截至目前,好程序员学员就业均薪1万3以上,学员薪资高达到2万9千元。现开设Html5、JavaEE、大数据、Android等高端精品课程,40人小班教学保证高品质,坚持100%全程面授。

  好程序员,从平凡到卓越,为梦想而拼搏!
北京电脑/网络相关信息
注册时间:2017年11月02日
UID:438687
---------- 认证信息 ----------
邮箱已认证 手机已认证
查看用户主页