当前位置 > CPDA数据分析师 > “数”业专攻 > 层出不穷的大数据分析系统

层出不穷的大数据分析系统

来源:数据分析师 CPDA | 时间:2019-10-29 | 作者:admin

大数据中蕴含的巨大价值成为人们存储和处理大数据的驱动力,大数据时代数据处理的理念:要全体不要抽样、要效率不要绝对精确、要相关不要因果。目前,对大数据处理形式主要是对静态数据的批量处理、对在线数据的实时处理、对图数据的综合处理以及结合批处理和流处理两种架构的混合处理模式,其中,在线数据的实时处理又包括对流式数据的处理和实时交互计算两种。以下介绍各种数据形式的特征和各自典型应用及相应的代表性系统。

 

批处理系统 利用批量数据挖掘合适的模式,得出具体的含义,制定明智的决定,最终做出有效的措施实现业务目标是大数据批处理的首要任务。大数据的批量处理系统适合于先存储后计算,实时性要求不高,同时数据的准确性和全面性更为重要的场景。

 

批量数据的3个特征:数据体量巨大、数据精确度高、数据价值密度低--需要通过合理的算法才能从批量的数据中抽取有用的价值。批处理往往比较耗时,而且不提供用户与系统的交互手段,所以当发现处理结果和预期或与以往的结果有很大差别时,适合相对成熟的作业。

 

典型应用 物联网、云计算、互联网以及车联网等无一不是大数据的重要来源,当前批量数据处理可以解决前述领域的诸多决策问题并发现新的洞察。批处理系统适用于较多的应用场景。

 

社交网络 Facebook、新浪微博、微信等以人为核心的社交网络产生了大量的文本、图片、音视频等不同形式的数据,对这些数据的批量处理可以对社交网络进行分析,发现人与人之间隐含的关系或者他们中存在的社区,推荐朋友或者相关主体,提升用户体验。

 

电子商务 电商系统中产生的购买历史记录、商品评论、商品网页的访问次数和驻留时间等数据,通过批量分析这些数据,每个商铺可以精准地选择其热卖商品,从而提升商品销量;也可以通过分析消费者行为,为客户推荐相关商品,以提升优质客户数量。

 

搜索引擎 Google等大型互联网搜索引擎与Yahoo!的专门广告分析系统,通过对广告相关数据的批量处理来改善广告的投放效果以提高用户的点击量。

 

能源 例如:对来自海洋深处地震时产生的数据进行批量的排序和整理,可能发现海底石油的储量。

 

医疗保健 通过对患者以往的生活方式与医疗记录进行批量处理分析,提供语义分析服务,对病人的健康提供医生、护士及其他相关人士的回答,协助医生更好地为患者进行诊断。

 

典型代表性系统

Hadoop Apache Hadoop是分布式数据处理中最著名的一款软件框架。由HDFS负责静态数据的存储,基于MapReduce编程范式,将计算逻辑分配到各数据节点进行数据计算和价值发现。Hadoop生态圈日渐丰富,包括MapReduce、分布式存储(HDFS)、Hive、HBase等。

 

MapReduce 是一种基于分治法实现的编程模型,广泛应用于大规模数据处理中(日志分析、海量数据排序等)。分治法将复杂问题分成多个类型的子问题,直到子问题的规模小到能直接得出结果,再聚合中间数据所得的最终结果就是原问题的解。

 

Hadoop MapReduce采用了主从式结构,集群中存在两种类型的节点,主节点(Master Node)与工作节 点(WorkerNode),其作业运行机制如图所示。Master是整个集群中唯一的管理者,主要工作有任务调度,状态监控等。Worker 则负责计算工作与任务状态回复。在 Map 阶段,主节点将输入数据分割,并将原 问题分成多个类似的子问题,然后将分割好的数据与 任务交给工作节点进行计算。在 Reduce 阶段,主节 点将工作节点计算好的中间结果收集起来并聚合成最终的结果。

 

层出不穷的大数据分析系统 - 层出不穷的大数据分析系统

 

这种编程模型广受欢迎并迅速得到应用在技术上有3方面的原因:MapReduce采用无共享大规模集群系统,集群具有良好的性价比和可伸缩性;MapReduce模型简单、易于使用,它不仅用于处理大规模数据,而且能将很多繁琐的细节隐藏起来(比如,自动并行化、负载均衡和灾备管理等),极大地简化了程序员的开发工作。并且大量数据处理问题,包括很多机器学习和数据挖掘算法,都可以使用MapReduce实现;虽然基本的MapReduce模型只提供一个过程性的编程接口,但在海量数据环境、需要保证可伸缩性的前提下,通过使用合适的查询优化和索引技术,MapReduce仍能够提供很好的数据处理性能。

 

HDFS 是Hadoop项目的一个子项目,是Hadoop应用下的分布式文件系统,它提供了文件系统实现的各类接口,使文件系统易于操作。它是基于流式的数据访问模式和处理超大文件的需求而开发,可以运行在廉价的机器上。主要特点如下:

 

处理超大文件 通常是GB级甚至是TB级文件,HDFS目前以及可以用来管理TB级的数据。

 

流式地访问数据 HDFS设计理念“一次写入、多次读取”,意味着当一个数据集生成之后,就会被切分成小文件块,并复制多份分发到不同的存储节点中,然后响应各种数据分析任务请求。

 

能运行在低廉的机器集群上 Hadoop对机器的硬件要求不高,但廉价的机器通常节点故障的发生概率非常高,意味着Hadoop设计时需要充分考虑数据的可靠性和安全性。

 

HDFS虽然有许多优势,但也存在一些缺点

高延迟的数据访问 HDFS是为高吞吐量而设计的,因此需要一些高延迟作为补偿代价。

 

无法高效处理小文件 在Hadoop中,需要用到NodeName来管理文件系统的元数据(描述数据的数据),以响应客户端的请求并返回文件位置,因此文件数量的多少,决定着NameNode存储多少。意味着有许多小文件存储时,NameNode的工作压力就会很大,检索元数据的处理时间会显得过长。

 

HDFS 采用的是主从式架构。一个集群中存在一个NameNode,和多个DataNode,如下图所示。

 

层出不穷的大数据分析系统1 - 层出不穷的大数据分析系统

 

NameNode作为一个中心服务器,负责管理整个集群文件的读写等操作,存储着各个数据节点的信息,同时也负责处理用户的请求,进行数据节点的调度。作为整个集群的管理者,NameNode的主要任务是对元数据的管理,而不作为存储数据的节点,这样减少了自身的负载。这种结构极大地简化了系统架构, 但与此同时也带来了单点故障等问题。HDFS系统架构如下

 

 

流处理系统 Google于2010年推出了Dremel,引领业界向实时数据处理迈进。实时数据处理是针对批量数据处理的性能问题提出的,可分为流式数据处理和交互式数据处理两种。在大数据背景下,流失数据处理源于服务器日志的实时采集,交互式数据处理的目标是将PB级数据的处理时间缩短到秒级。

 

流式数据的特征 流式数据是一个无穷的数据序列,序列中的每一个元素来源各异,格式复杂,序列往往包含时序特性,或其他的有序标签(如IP报文中的序号)。流式数据在不同的场景下往往体现出不同的特征,如流速大小、元素特性数量、数据格式等,但大部分流式数据都含有共同的特征,根据这些共性便可用来设计通用的流式数据处理系统。

 

流式数据的元组通常带有时间标签或其余含序属性

数据流中的数据格式可以是结构化的、半结构化的甚至是无结构化的

典型应用 流式计算的应用场景较多,典型的有两类

数据采集应用

金融银行业的应用

典型代表性系统

 

Storm 最早由 BackType 公司 (现已被 Twitter 公司收购)开发的分布式实时计算系统。Storm 为分布式实时计算供了一组通用原语,其用法与 Hadoop 极其类似,也被称为实时计算版的 Hadoop。它也可被用于 “流处理”中,实现实时处理消息并更新数据库。同时 Storm 可以采用任意编程语言编写。

 

Storm作为一套分布式、可靠、可容错的用于处理流式数据的系统。其流式处理作业被分发至不同类型的组件,每个组件负责一项简单的、特定的处理任务。Storm集群的输入流名为Spout的组件负责,Spout将数据传递给Blot组件,后者将以指定的方式处理这些数据,如持久化或者处理并转发给另外的Bolt。

 

Storm集群可以看成一条由Bolt组件组成的链(成为一个Topology),每个Bolt对Spout产生出来的数据做某种方式的处理。Storm的Topology图如下

 

层出不穷的大数据分析系统2 - 层出不穷的大数据分析系统

 

Storm可用来实时处理新数据和更新数据库,兼具容错性和扩展性,也可用于连续计算,对数据流做连续查询,在计算时将结果以流的形式输出给用户,还可以用于分布式RPC,以并行的当时运行复杂运算。Storm的主要特定:简单的编程模型、容错性、水平扩展、快速可靠的消息处理。一个Strom集群分为三类节点。

 

Nimbus节点 负责提交任务,分发执行代码,为每个工作结点指派任务和监控失败的任务

Zookeeper节点 负责Storm集群的协同操作

Supervisor节点 负责启动多个Worker进程,执行Topology的一部分,这个过程是通过Zookeeper节点与Nimbus节点通信完成的。因为Storm将所有的集群状态保持在Zookeeper或本地磁盘上,Supervisor节点是无状态的

 

Storm系统架构如下图所示

 

层出不穷的大数据分析系统3 - 层出不穷的大数据分析系统

 

Samza 许多流式数据处理系统都使用了Kafka作为底层的消息处理模块。Kafka的工作过程分为4个步骤:生产者将消息发往中介(broker),消息被抽象为Key-Value对,Broker将消息按Topic划分,消费者向Broker拉取感兴趣的Topic。2013年Linkedin基于Kafka和Yarn开发了自己的流式处理框架--Samza。Samza与Kafka的关系可类比MapReduce和HDFS的关系,Samza系统由3个层次组成,包括流式数据层(Kafka)、执行层(Yarn)、处理层(Samza API),其主要特性包括:高容错、高可靠、可扩展。

 

交互式计算框架

交互式数据处理的特征 数据处理灵活、直观、便于控制。系统与操作人员以人机对话的方式一问一答,存储在系统中的数据文件能够被及时处理修改,同时处理结果可以立即被使用。交互式数据处理具备的这些特性能够保证输入的信息得到及时处理,使交互方式继续进行下去。

 

典型应用

在信息处理系统领域中,主要体现了人机间的交互。传统的交互式数据处理系统主要以关系型数据库管理系统(DBMS)为主,面向两类应用:联机事务处理(OLTP)--基于关系数据库管理系统,广泛用于政府、医疗以及对操作序列有严格要求的工业控制领域;联机分析处理(OLAP)--基于数据仓库系统(data warehouse)广泛用于数据分析、商业智能(BI)等,代表性的处理是数据钻取,如在BI中,可以对于数据进行切片和多粒度的聚合,从而通过多位分析技术实现数据的钻取。目前,基于开源体系架构下的数据仓库系统发展非常迅速,以Hive、Pig等为代表的分布式数据仓库能够支持上千台服务器的规模。

 

在互联网领域中,主要体现了人际间的交互,搜索引擎、电子邮件、即时通讯工具、社交网络、微博等互联网交互式数据平台,各种交互式问答平台:百度知道、新浪爱问、Yahoo!的知识堂等。目前各大平台主要使用NoSQL类型的关系数据库系统来处理交互式的数据,如HBase--采用多维有序表的列存储方式、MongoDB--采用JSON格式的数据嵌套存储方式。

 

典型代表性处理系统

Spark Apache Spark是一个基于内存计算的可扩展性的开源集群系统。针对MapReduce的不足,即打俩个的网络传输和磁盘I/O使得效率低效,Spark使用内存进行数据计算以便快速处理查询,实时返回分析结果。Spark提供比Hadoop更高层的API,同样算法在Spark中的运行速度比Hadoop快10~100倍;在技术层面兼容Hadoop存储层API,可访问HDFS、HBase、SequenceFile等,Spark-Shell可以开启交互式Spark命令环境,能够提供交互式查询。

 

Spark的计算架构具有3个特点:Spark拥有轻量级的集群计算框架、Spark包含大数据领域的数据流计算和交互式计算、Spark有很好的容错机制。

 

Dremel 由Google研发的交互式数据分析系统,专注于只读嵌套数据的分析。Dremel可以组建成规模上千的服务器集群,处理PB级数据,可以与传统数据分析互殴商业智能工具在速度和精度上相媲美。

 

混合处理框架 结合批处理和流处理两种架构的混合架构。在处理数据时,分别将数据送入批处理层和实时处理层,这样可以使得得到的结果更加快速且精确,对不同业务需求进行了良好的平衡。

 

典型代表性系统

Lambda

Lambda架构的主要思想就是将大数据系统构建为多个层次,Batch Layer、Serving Layer、Speed Layer。架构图如下所示

 

层出不穷的大数据分析系统4 - 层出不穷的大数据分析系统

 

图数据处理框架 图由于自身的结构特征,可以很好地表示事物之间的关系,在近几年已经成为各学科研究的热点。图中点和边的强关联性,需要图数据处理系统对图数据进行一系列的操作,包括图数据的存储、图查询、最短路径查询、关键字查询、图模式挖掘以及图数据的分类、聚类等。

 

图数据的特征 图数据中主要包括图中的节点以及连接节点的边,通常具有3个特征

节点之间的关联性 图中边的数量是节点数量的指数倍,节点和关系信息同等重要,图结构的差异也是由于对边做了限制,在图中,顶点和边实例化构成各种类型的图,如标签图、属性图、语义图以及特征图等图数据的种类繁多 在许多领域中,使用图来表示该领域的数据,如生物、化学、计算机视觉、模式识别、信息检索、社会网络、知识发现、动态网络交通、语义网、情报分析等。每个领域对图数据的处理需求不同,因此,没有通用的图数据处理系统满足所有领域的需求。

 

图数据计算的强耦合性 在图中,数据之间是相互关联的,因此,对图数据的计算也是相互关联的,这种数据耦合的特性对图的规模日益增大。

 

典型应用 图能很好地表示各实体之间的关系,因此,在各个领域得到了广泛的应用,如在计算领域、自然科学领域以及交通领域。

 

互联网领域的应用 以Web2.0技术为基础的社交网络(Facebook、人人网)、微博(Twitter、新浪微博、腾讯微博)等新型服务中建立了大量的在线社会网络关系,用图表示人与人之间的关系。

 

自然科学领域的应用 图可以用来在化学分子式中查找分子,在蛋白质网络中查找化合物,在DNA中查找特定序列。

 

交通领域的应用 图可以用来在动态网络教徒中查找最短路径、在邮政快递领域进行邮路规划等。

 

典型代表性图数据处理系统 目前主要的图数据有GraphLab、Giraph(基于Pregel克隆)、 Neo4j、HyperGraphDB、InfiniteGraph、Cassovary、 Trinity及Grappa等。主要介绍以下三种图数据库系统

Pregel Google提出的基于BSP(Bulk synchronous parallel)模型的分布式图计算框架,主要用于图遍历(BFS)、最短路径(SSSP)、PageRank计算等。BSP模型是并行计算模型中的经典模型,采用的是"计算-通信-同步"的模式。它将计算分成一系列超步(superstep)的迭代。

 

从纵向上看,它是一个串行模式,而从横向上看,它是一个并行的模式,每两个超步之间设置一个栅栏,即整体同步点,确定所有并行的计算都完成后再启动下一轮超步。Pregel架构有3个主要特征:采用主/从结构来实现整体功能,一个节点为Master,负责对整个图结构的任务进行切分,根据节点的ID进行散列计算分配到Slave机器,Slave机器进行独立的超步计算,并将结构返回给Master;有很好的容错机制;使用GFS或BigTable作为持久性的存储。

 

Neo4j 是一个高性能、完全兼容ACID特性的、鲁棒的图数据库,它基于Java语言开发,包括社区版和企业版,适用于社会网络和动态网络等场景。具有以下5个特性:支持数据库的所有特性、高可用性、可扩展性、灵活性、高速遍历。

 

Trinity 是微软推出的一款建立在分布式云存储上的计算平台,可以提供高度并行查询处理、事物记录、一致性控制等功能,主要使用内存存储,磁盘仅作为备份存储,具有以下4个特点:数据模型是超图、并发性、具有数据库的一些特点、支持批处理。

 

大数据领域各类处理系统层出不穷,各有特色,总体有3个发展趋势

数据处理引擎专用化

数据处理平台多样化

数据计算实时化