IDC将大数据技术定义为:“为更经济地从高频率的、大容量的、不同结构和类型的数据中获取价值而设计的新一代架构和技术。” 大数据的关键在于种类繁多、数量庞大、使用传统的数据分析工具无法在可容忍的时间内处理相应的数据。大数据分析主要涉及两个不同的领域:一是如何将海量的数据存储起来,二是如何在短时间内处理大量不同类型的数据,即解决大数据存储与大数据处理等问题
大量化(Volume)指数据的数量巨大。日新月异的信息存储技术使得存储大量数据的成本越来越低,特别是分布式存储技术的日益成熟,逐渐使得存储 PB、EB 甚至 ZB 级别的数据成为可能多样性(Variety)指数据的种类繁多。只需要连上互联网,就可以随时随地查看并获取想要的数据,但与此同时也面临了一系列的挑战。互联网上的数据虽多,但大部分数据的呈现形式为非结构化或半结构化的。如何将不同的数据结构归结到统一的结构中是一个重要的问题
快速化(Velocity)是指目前大数据时代,数据越来越实时化,数据的产生与处理速度逐渐能够满足人们 的需求价值密度低(Value)是大数据中最为关键的一点, 虽然真实世界中的数据量极大,但真正有价值的内容 却较少。以监控视频为例,虽然监控视频的内容极其之大,但实际有价值的部分可能不过几分钟。如何利用云计算等技术从大量的数据中提取出最为关键、最有价值的部分,并将信息转换成知识是值得研究的内容
传统的数据分析处理流程中,数据的来源是多种多样的(数据库、社交媒体等),但由于数据价值密度低的特点,通常获取到的数据并不能直接使用进行分析,还需要进行一些列预处理。例如,将无用或者重复的数据过滤并去除,将大量的数据分类并进行管理,根据业务需要对相同类型的数据进行聚合,将非结构化或半结构化的数据结构化并存储到数据库中,或者将原结构化的数据从原有表现形式统一成另一种表示形式,从而使数据井井有条以便于数据分析工作的开展。完成数据整合后,就可以使用统计建模方法建立模型,用数据集进行训练,估计出模型参数。模型建立完成后,在模型投入使用之前还需要对其进行数据检验。最后,训练好的模型要接受新数据的检验, 这一阶段也叫模型评估,它可以用于决策、推荐,也可以通过新收集的数据重新估计参数更新模型
通过数据建模进行统计分析具有重要商业意义:用户行为数据是大数据中一种较为常见的类型,通过大数据技术可以对用户行为数据(例如商品购买记录, 网页访问记录等等)进行分析,从而挖掘出用户与商品之间的关联性,并以此推荐出用户喜爱的商品
大数据技术的主要流程可以分为
数据生成和获取 大数据来源多种多样,可以来自物联网、互联网、各类传感器等,同时数据的方式也是多种多样的(数字、文字、声音、图片、视频等),归纳起来其主要来源于三个方面
目前大数据的主要研究对象集中在社交数据和自然数据,同时生命和生物的大数据对医学方面的贡献也不容小视
数据预处理 现实中收集到的真实数据通常都是不完整的脏数据,没有办法直接进行数据挖掘和处理,为了提高数据的质量,需要对采集到的原始数据进行预处理。数据预处理的内容主要有
数据预处理的主要方法
数据存储 传统的数据存储方式可以分为块存储、文件存储、对象存储,大数据的存储方式可以分为
大数据存储技术路线包括
数据分析挖掘 从海量数据中提取出隐含其中的、具有潜在价值的信息,是统计学、人工智能、数据库技术的综合运用
大数据的计算分析框架主要包括
数据结果应用 大数据已被广泛认为是创造新价值的利器,具有无可估量的资源价值,推动各个领域的快速发展,例如医疗、教育、商业、工业、农业、智能电网、工业互联网、排水系统、智能交通等工业等领域
大数据中蕴含的巨大价值成为人们存储和处理大数据的驱动力,大数据时代数据处理的理念:要全体不要抽样、要效率不要绝对精确、要相关不要因果。目前,对大数据处理形式主要是对静态数据的批量处理、对在线数据的实时处理、对图数据的综合处理以及结合批处理和流处理两种架构的混合处理模式,其中,在线数据的实时处理又包括对流式数据的处理和实时交互计算两种。以下介绍各种数据形式的特征和各自典型应用及相应的代表性系统
批处理系统 利用批量数据挖掘合适的模式,得出具体的含义,制定明智的决定,最终做出有效的措施实现业务目标是大数据批处理的首要任务。大数据的批量处理系统适合于先存储后计算,实时性要求不高,同时数据的准确性和全面性更为重要的场景
批量数据的3个特征:数据体量巨大、数据精确度高、数据价值密度低--需要通过合理的算法才能从批量的数据中抽取有用的价值。批处理往往比较耗时,而且不提供用户与系统的交互手段,所以当发现处理结果和预期或与以往的结果有很大差别时,适合相对成熟的作业
典型应用 物联网、云计算、互联网以及车联网等无一不是大数据的重要来源,当前批量数据处理可以解决前述领域的诸多决策问题并发现新的洞察。批处理系统适用于较多的应用场景
典型代表性系统
Hadoop MapReduce采用了主从式结构,集群中存在两种类型的节点,主节点(Master Node)与工作节 点(WorkerNode),其作业运行机制如图所示。Master是整个集群中唯一的管理者,主要工作有任务调度,状态监控等。Worker 则负责计算工作与任务状态回复。在 Map 阶段,主节点将输入数据分割,并将原 问题分成多个类似的子问题,然后将分割好的数据与 任务交给工作节点进行计算。在 Reduce 阶段,主节 点将工作节点计算好的中间结果收集起来并聚合成 最终的结果
这种编程模型广受欢迎并迅速得到应用在技术上有3方面的原因:MapReduce采用无共享大规模集群系统,集群具有良好的性价比和可伸缩性;MapReduce模型简单、易于使用,它不仅用于处理大规模数据,而且能将很多繁琐的细节隐藏起来(比如,自动并行化、负载均衡和灾备管理等),极大地简化了程序员的开发工作。并且大量数据处理问题,包括很多机器学习和数据挖掘算法,都可以使用MapReduce实现;虽然基本的MapReduce模型只提供一个过程性的编程接口,但在海量数据环境、需要保证可伸缩性的前提下,通过使用合适的查询优化和索引技术,MapReduce仍能够提供很好的数据处理性能
HDFS虽然有许多优势,但也存在一些缺点
HDFS 采用的是主从式架构。一个集群中存在一个NameNode,和多个DataNode,如下图所示。NameNode作为一个中心服务器,负责管理整个集群文件的读写等操作,存储着各个数据节点的信息,同时也负责处理用户的请求,进行数据节点的调度。作为整个集群的管理者,NameNode的主要任务是对元数据的管理,而不作为存储数据的节点,这样减少了自身的负载。这种结构极大地简化了系统架构, 但与此同时也带来了单点故障等问题。HDFS系统架构如下
流处理系统 Google于2010年推出了Dremel,引领业界向实时数据处理迈进。实时数据处理是针对批量数据处理的性能问题提出的,可分为流式数据处理和交互式数据处理两种。在大数据背景下,流失数据处理源于服务器日志的实时采集,交互式数据处理的目标是将PB级数据的处理时间缩短到秒级
流式数据的特征 流式数据是一个无穷的数据序列,序列中的每一个元素来源各异,格式复杂,序列往往包含时序特性,或其他的有序标签(如IP报文中的序号)。流式数据在不同的场景下往往体现出不同的特征,如流速大小、元素特性数量、数据格式等,但大部分流式数据都含有共同的特征,根据这些共性便可用来设计通用的流式数据处理系统
典型应用 流式计算的应用场景较多,典型的有两类
典型代表性系统
Storm作为一套分布式、可靠、可容错的用于处理流式数据的系统。其流式处理作业被分发至不同类型的组件,每个组件负责一项简单的、特定的处理任务。Storm集群的输入流名为Spout的组件负责,Spout将数据传递给Blot组件,后者将以指定的方式处理这些数据,如持久化或者处理并转发给另外的Bolt。Storm集群可以看成一条由Bolt组件组成的链(成为一个Topology),每个Bolt对Spout产生出来的数据做某种方式的处理。Storm的Topology图如下
Storm可用来实时处理新数据和更新数据库,兼具容错性和扩展性,也可用于连续计算,对数据流做连续查询,在计算时将结果以流的形式输出给用户,还可以用于分布式RPC,以并行的当时运行复杂运算。Storm的主要特定:简单的编程模型、容错性、水平扩展、快速可靠的消息处理。一个
Strom集群分为三类节点
Storm系统架构如下图所示
交互式数据处理的特征 数据处理灵活、直观、便于控制。系统与操作人员以人机对话的方式一问一答,存储在系统中的数据文件能够被及时处理修改,同时处理结果可以立即被使用。交互式数据处理具备的这些特性能够保证输入的信息得到及时处理,使交互方式继续进行下去
典型应用
典型代表性处理系统
Spark的计算架构具有3个特点:Spark拥有轻量级的集群计算框架、Spark包含大数据领域的数据流计算和交互式计算、Spark有很好的容错机制
混合处理框架 结合批处理和流处理两种架构的混合架构。在处理数据时,分别将数据送入批处理层和实时处理层,这样可以使得得到的结果更加快速且精确,对不同业务需求进行了良好的平衡
典型代表性系统
图数据处理框架 图由于自身的结构特征,可以很好地表示事物之间的关系,在近几年已经成为各学科研究的热点。图中点和边的强关联性,需要图数据处理系统对图数据进行一系列的操作,包括图数据的存储、图查询、最短路径查询、关键字查询、图模式挖掘以及图数据的分类、聚类等
图数据的特征 图数据中主要包括图中的节点以及连接节点的边,通常具有3个特征
典型应用 图能很好地表示各实体之间的关系,因此,在各个领域得到了广泛的应用,如在计算领域、自然科学领域以及交通领域
典型代表性图数据处理系统 目前主要的图数据有GraphLab、Giraph(基于Pregel克隆)、 Neo4j、HyperGraphDB、InfiniteGraph、Cassovary、 Trinity及Grappa等。主要介绍以下三种图数据库系统
大数据领域各类处理系统层出不穷,各有特色,总体有3个发展趋势
要挖掘大数据的价值必然要对大数据进行内容上的分析与计算,深度学习和知识计算是大数据分析的基础,而可视化既是数据分析份关键技术也是数据分析结果呈现的关键技术,以下是对它们的简单介绍
深度学习 利用层次化的架构学习出对象在不同层次上的表达,这种层次化的表达可以帮助解决更加抽象的问题,在层次化中,高层的概念通常是通过低层的概念来定义的,深度学习通常使用人工神经网络,常见的具有多个隐层的多层感知机(MLP)就是典型的深度架构。深度学习的起源要追溯到神经网络,20世纪80年代,向后传播(BP)算法的提出使得人们开始尝试训练深层次的神经网络。然而,BP算法在训练深层网络的时候表现不够好,以至于深层感知机的效果还不如浅层感知机。于是很多人放弃使用神经网络,转而使用凸的更容易得到全局最优解的浅层模型,提出诸如支持向量机、boosting等浅层方法,以致于此前大部分的机器学习技术都使用浅层架构。2006年,Hinton等人使用无监督的逐层贪婪的预训练(greedy layer-wise pre-trian)方法成功减轻了深度模型优化困难的问题,从而掀起深度学习的浪潮。
近几年,深度学习在语音、图像以及自然语言理解等应用领域取得一系列重大进展。从2009年开始,巍然研究院的Dahl等人率先在语音处理中使用深度神经网络(DNN),将语音识别的错误率显著降低,从而使得语音处理成为成功应用深度学习的第一领域;在图像领域,Hinton等人使用深层次的卷积神经网络(CNN)在ImageNet评测上取得巨大突破,将错误率从26%降低到15%,重要的是,这个模型中并没有任何手工构造特征的过程,网络的输入就是图像的原始像素值。Google Brain项目中,Le等人尝试使用完全无标注的图像训练得到人脸特征检测器,使用这些学习到的特征可以在图像分类中取得非常好的效果;Google的深度学习系统(DistBelief)在获取数百万YouTube视频数据后,能够精准地识别出这些视频中的关键元素--猫;在自然语言领域,Bengio等人使用神经网络并结合分布式表达式(distributed representation)的思想训练语言模型并取得很好的效果,不过当时还没有使用到更深层次的模型;2008年,Collobert等人训练了包含一个卷积层的深度神经网络,利用学习得到的中间表达式同时解决多个NLP问题;在国内,2011年科大讯飞首次将DNN技术运用到语音云平台,并提供给开发者使用,并在讯飞语音输入法和讯飞口讯等产品中得到应用;百度成立IDL(深度学习研究院),专门研究深度学习算法,目前已有多项深度学习技术在百度产品上线。深度学习对百度影响深远,在语音识别、OCR识别、人脸识别、图像搜索等应用上取得突出效果;此外,国内搜狗、云之声等纷纷开始在产品中使用深度学习技术
知识计算 基于大数据的知识计算是大数据分析的基础,知识计算是国内外工业界开发和学术界研究的一个热点,要对数据进行高端分析,就需要从大数据中先抽取出有价值的知识,并把它构建成可支持查询、分析和计算知识库。目前,世界各国各个组织建立的知识库多达50余种,相关的应用系统更是达到上百种。其中,代表性的知识库或应用系统有KnowItAll、TextRunner、Nell、Probase、Satori、Prospera、Sofie及一些基于维基百科等在线百科知识构建的知识库,如DBpedia、Yago、Omega和WikiTaxonomy;此外,一些商业网站、公司和政府也发布了类似的知识搜索和计算平台,如Evi公司的TrueKnowledge知识搜索平台、美国官方政府网站Data.gov、Wolfram的知识计算平台wolframalpha、Google的知识图谱Knowledge Graph、Facebook推出的类似的实体搜索服务 Graph Search等;在国内,中文知识图谱的构建与知识计算也有大量的研究和开发工作,代表性的有中国科学院计算技术研究所的OpenKN、上海交大最早构建的中文知识图谱平台zhishi.me,百度推出了中文知识图谱搜索,搜狗推出的知立方平台、复旦大学GDM实验室推出的中文知识图谱展示平台等
支持知识计算的基础是构建知识库,这包括3个部分,即知识库的构建、多源知识的融合与知识库的更新,知识库的构建就是要构建几个基本的构成要素,包括抽取概念、实例、属性和关系。从构建方式上,可以分为:手工构建--依靠专家编写一定的规则,从不同的来源收集相关的知识信息,构建知识的体系结构,典型的例子是知网、同义词词林、概念层次网络和中文概念词典、OpenCyc等;自动构建--基于知识工程、机器学习,人工智能等理论自动从互联网上采集并抽取概念、实例、属性和关系,著名的例子是Probase、Tago等。手工构建知识库,需要构建者对知识的领域有一定的了解,才能编写出合适的规则,开发过程中也需要投入大量的人力物力;相反自动构建的方法依靠自动的学习经过标注的语料来获取规则,如属性抽取规则、关系抽取规则等,在一定程度上可以减少人工构建的工作量。自动构建知识库的方法主要分为有监督的构建方法和半监督的构建方法两种
多源知识的融合是为了解决知识的复用问题,如前文所述,构建一个知识库的代价是非常大的,为了避免从头开始,需要考虑知识复用和共享,这就需要对多个来源的知识进行融合,即需要对概念、实例、属性和关系的冲突、重复冗余、不一致进行数据的清理工作,包括对概念、实例进行映射、消歧,对关系进行合并等,其中概念间关系或分类体系的融合是很关键的一部分,按融合方式分为手工融合和自动融合。对于规模较少的知识库,手动融合是可行的,但这是一种非常耗时且容易出错的融合方式。而建立在机器学习、人工智能和本体工程等算法上的融合方式具有更好的扩展性,相关工作包括Yago、Probase等
大数据时代数据的不断发展与变化带给知识库构建一个巨大的挑战是知识库的更新问题,知识库的更新分为两个层面:新知识加入;已有知识更新。目前专门针对开放网络知识库的更新工作较少,很多都是从数据库的更新角度展开的,如对数据库数据的增加、删除和修改工作的介绍。虽然对开放网络知识库的更新,与数据库的更新有很多相似之处,但是其本身对更新的实时性要求较高。目前这方面的工作,从更新方式来讲分为两类:基于知识库构建人员的更新;基于知识库存储的时空信息的更新
社会计算 以Faceboo、Twitter、新浪微博、微信等为代表的在线社交网络和社会媒体正深刻改变着人们传播信息和获取信息的方式,人和人之间结成的关系网络承载这网络信息的传播,人的互联成为信息互联的载体和信息传播的媒介,社会媒体的强交互性、时效性等特点使其在信息产生、消费和传播过程中发挥着越来越重要的作用。当前在线社会计算无论是学术圈和工业界都备受重视,大家关注的问题包括对在线社会网络结构、信息传播以及信息内容的分析、建模与挖掘等一系列问题
在线社会网络在微观层面上具有随机化无序的现象,在宏观层面上往往呈现出规则化、有序的现象,为了理清网络具有的这种看似矛盾的不同尺度的结构特征,探索和分析连接微观和宏观网络中观结构(也称为社区结构)成为本领域一个重要的研究方向。一般意义上讲,社区结构是指网络节点按照连接关系的紧密程度不同而自然分成若干个内部连接紧密、社区结构发现和社区结构演化性分析等基本问题。社区定义或度量大体上分为4类:基于节点的社区定义、基于节点组(社区)的社区定义、基于网络整体的社区定义、基于层次结构的社区定义
在信息传播模型的研究中,最广泛深入研究的是传染病模型,除了传染病模型,随机游走模型也是信息传播的基本模型之一,作为最基本的动力学过程之一,随机游走与网络上的许多其他动力学过程(反应-扩散过程、社团挖掘、路由选择、目标搜索)紧密相关。今年,研究人员开始注意到信息传播和传染病传播具有显著不同的特性,包括信息传播的记忆性、社会增强效应、不同传播者的角色不同、消息内容的影响等。Romero等人提出Stickniss和Persistence两个重要概念,分析不同领域内Hashtag在Twitter上的传播过程。Wu等人分析名人、机构、草根等不同群体之间的消息流向,并分析了不同类型的消息被转发的情况及其生命周期
社会媒体的出现对信息检索与数据挖掘的研究提出了新的挑战,不同于传统的Web数据,社会媒体中的数据呈现出一些新的特征:信息碎片化现象明显,文本内容特征越发稀疏;信息互联被人的互联所取代,社会媒体用户形成的社会关系网络的搜索和挖掘过程中的重要组成部分;社会媒体的易参与性使得人人具有媒体的特征,呈现出自媒体现象,个人影响力、情感与倾向性掺杂其中。针对这些特点研究人员在传统信息检索与数据挖掘计算基础上提出了一些列的新模型
鉴于用户所创造的信息往往具有很强的时效性,Yang等人提出一种时间序列聚类的方法,从Twitter数据中挖掘热门话题发展趋势的规律;用户的评价和评论中包含了大众的观点和态度,所以Bollen等人通过对Twitter中用户的信息进行情感分析,将大众情绪的变化表示为7种不同的情绪时间序列,进而发现这些序列能够预测股票市场的走势;社会媒体的检索与挖掘研究在国内也收到越来越多的重视,包括北京大学、清华大学、哈工大等大学和研究机构已经取得了一定的进展,设计的研究内容包括社会化标签系统中的标签学习和排序、信息抽取和分类、社会化多媒体检索、协作搜索和推荐等等
可视化 对抽象数据使用计算机支持的、交互的、可视化的表示形式以增强认知能力。大数据可视化不同于传统的信息可视化,面临最大的一个挑战就是规模,如何提出新的可视化方法能够帮助人们分析大规模、高维度、多来源、动态演化的信息,并辅助做出实时的决策,成为该领域最大的挑战。为解决这个问题,我们可以依赖的主要手段是两种,数据转换和视觉转换。现有研究工作主要聚焦在4个方面:通过对信息流进行压缩或者删除数据中的冗余信息对数据进行简化;通过设计多尺度、多层次的方法实现信息在不同解析度上的展示,从而使用户可自主控制展示解析度;利用创新的方法把数据存储在外存,并让用户可以通过交互手段方便地获取相关数据,这类算法成为核外算法(out-of-core algorithm);提出新的视觉隐喻方法以全新的方式展示数据
大数据处理和分析的终极目标是借助对数据的理解辅助人们在各类应用中作出合理的决策。在次过程中,深度学习、知识计算、社会计算和可视化起到了相辅相成的作用
互联网、物联网、云计算技术的快速发展,各类应用的层出不穷引发了数据规模的爆炸式增长,使数据渗透到各个行业和各个领域,成为重要的生产因素。大数据时代依然来临,Google、 Facebook、LinkedIn为代表的互联网企业近几年推出了各种大数据处理系统,深度学习、知识计算、可视化等大数据分析技术迅速发展,已被应用于不同的行业和领域。本文根据大数据处理形式不同,分别介绍批处理、流式处理、交互式处理及图数据四种不同数据形式的特征及大数据分析系统
[1] 《大数据系统和分析技术综述》
[2] 《大数据分析的硬件与系统支持综述》
[3] 《大数据综述》
*更多内容欢迎关注微信公众号 `云时代的运维开发`*