首页 理论教育 虚拟环境下的大数据分析处理平台

虚拟环境下的大数据分析处理平台

时间:2023-06-29 理论教育 版权反馈
【摘要】:大数据分析处理平台是支持大数据科学研究的基础系统。基于大数据分析处理平台的针对性和多样性,可将平台进行分类,其分类结果和典型的平台如图3-14所示。

虚拟环境下的大数据分析处理平台

为了更深一步掌握能源行业的发展趋势,对能源数据的分析需求已由传统的常规分析转入深度分析。传统的分析处理平台已经无法满足能源大数据的需求,为突破平台的性能瓶颈,新的平台不断出现,并且基于虚拟环境的实现,不仅提升了平台的扩展性、容错性以及资源利用率,而且其维护成本也大大降低。

3.3.2.1 能源行业信息化系统分类

目前,能源行业业务应用主要包括集约化、大规划、大建设、大运营、大检修、大营销、调度中心、客服中心、运监中心等。为高效执行业务应用,能源行业基于大数据技术,不仅对原有能源信息化系统进行了改进,而且不断开发新的满足能源大数据需求的信息化系统。其信息化系统主要包括能量管理系统(EMS)、配电网管理系统(DMS)和电力系统调度自动化三个方面,并且可以进一步细化为以下系统:

(1)监视控制与数据采集系统(SCADA)。SCADA系统是以计算机为基础的分布式控制系统与电力自动化监控系统,可以对现场的运行设备进行监视和控制,以实现数据采集、设备控制、测量、参数调节以及各类信号报警等各项功能。SCADA系统是电力系统自动化的实时数据源,为能量管理系统提供大量的实时数据。

(2)自动发电控制(AGC)。利用调度监控计算机、通道、远方终端、执行(分配)装置、发电机组自动化装置等组成的闭环控制系统,监测、调整电力系统的频率,以控制发电机出力。自动发电控制着重解决电力系统在运行中的频率调节和负荷分配问题,以及与相邻电力系统间按计划进行功率交换。

系统电源的总输出功率与包括电力负荷在内的功率消耗相平衡时,供电频率保持恒定;当总输出功率与总功率消耗之间失去平衡时,频率就发生波动,严重时会出现频率崩溃。电力系统的负荷是不断变化的,这种变化有时会引起系统功率不平衡,导致频率波动。要保证电能的质量,就必须对电力系统频率进行监视和调整。当频率偏离额定值后,调节发电机的出力以使电力系统的有功功率达到新的平衡,从而使频率维持在允许范围之内。所以,自动发电控制是通过对供电频率的监测、调整实现的。

(3)电力系统状态估计(state estimator)。根据电力系统的各种量测信息,估计出电力系统当前的运行状态。电力系统状态是大部分在线应用的高级软件的基础。如果电力系统状态估计结果不准确,后续的任何分析计算将不可能得到准确的结果。电力系统状态估计的基本任务包括:根据遥信结果,确定网络拓扑,即结点 支路的连接关系;根据遥测结果,估计系统的潮流分布,即结点电压、支路功率等,其结果符合电路定律。

(4)调度员模拟培训系统(DTS)。DTS是一套计算机系统,它按被仿真的实际电力系统的数学模型,模拟各种调度操作和故障后的系统工况,并将这些信息送到电力系统控制中心的模型内,为调度员提供一个仿真的培训环境,以达到既不影响实际电力系统的运行又培训调度员的目的,培训了调度员在正常状态下的操作能力和事故状态下的快速反应能力,也可用作电网调度运行人员分析电网运行的工具。

(5)配电自动化系统(DAS)。DAS是一种可以使配电企业在远方以实时方式监视、协调和操作配电设备的自动化系统。

(6)地理信息系统(GIS)。GIS是一种特定的十分重要的空间信息系统。它是在计算机软硬件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。

(7)管理信息系统(MIS)。MIS是一个以人为主导,利用计算机硬件、软件、网络通信设备以及其他办公设备,进行信息的收集、传输、加工、储存、更新和维护,以企业战略竞优、提高效益和效率为目的,支持企业的高层决策、中层控制、基层运作的集成化的人机系统。

(8)变电站综合自动化系统。变电站综合自动化系统是利用先进的计算机技术、现代电子技术、通信技术和信息处理技术等实现对变电站二次设备的功能进行重新组合、优化设计,对变电站全部设备的运行情况执行监视、测量、控制和协调的一种综合性的自动化系统。

基于对电力行业业务类型划分以及对电力行业信息化系统的详细分析,可将当前电力行业的应用类型划分为批处理、流处理、内存计算、图计算、查询分析等。

3.3.2.2 主流大数据分析处理平台

传统依赖大型机和小型机的并行计算系统不仅成本高,数据吞吐量也难以满足大数据要求,同时靠提升单机CPU性能、增加内存、扩展磁盘等实现性能提升的纵向扩展的方式也难以支撑平滑扩容。大数据规模巨大等特性使得传统的计算方法已经不能有效地支持大数据计算和处理,在求解大数据的问题时,需要重新审视和研究它的可计算性、计算复杂性和求解算法。大数据计算不能像小样本数据集那样依赖于全局数据的统计分析和迭代计算,需要突破传统计算对数据的独立同分布和采样的充分性的假设前提。因此在大数据时代,针对特定大数据应用类型的高效并行计算型模型不断出现,进而造成基于并行计算模型的大数据分析处理平台具有针对性和多样性。

大数据分析处理平台是支持大数据科学研究的基础系统。对于规模巨大、价值稀疏、结构复杂、变化迅速的大数据,其处理亦面临计算复杂度高、任务周期长、实时性要求高等难题。大数据及其处理的这些难点不仅对大数据分析处理平台的总体架构、计算框架、处理方法提出了新的挑战,更对大数据分析处理平台的运行效率及单位能耗提出了苛刻要求,要求平台必须具有高效能的特点。因此,大数据分析处理平台在进行总体架构设计、计算框架设计、处理方法设计和测试基准设计时,需要综合考虑多个方面,例如大数据的复杂性、可计算性与系统处理效率、能耗间的关系、实际负载情况及资源分散重复情况等,另外还要综合度量平台中如系统吞吐率、并行处理能力、作业计算精度、作业单位能耗等多种效能因素对平台性能的影响。基于大数据分析处理平台的针对性和多样性,可将平台进行分类,其分类结果和典型的平台如图3-14所示。

图3-14 典型大数据分析处理平台

1)批处理——Hadoop

Hadoop是一个由Apache软件基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的优点进行高速运算和存储。Hadoop的框架核心由两部分组成,其最底部是HDFS,它存储Hadoop集群中所有存储结点上的文件。HDFS的上一层是MapReduce引擎,该引擎由JobTrackers和TaskTrackers组成。其中HDFS已经在上节中做出了详细描述,以下将对MapReduce模型和Hadoop运行原理进行介绍。

(1)MapReduce模型。MapReduce模型是由Jeffrey Dean和Sanjay Ghemawat于2004年提出的抽象模型,它将并行计算、容错、数据分布、负载均衡等复杂的细节隐藏在一个库里,使用者只需表述想要执行的简单运算。MapReduce最初的设计方案是将模型运行在由低端计算机组成的大型集群上。集群中每台计算机包含一个工作结点(Worker)、一个较快的主内存和一个辅助存储器,其原理如图3-15所示。

由图3-15可知,工作结点用于数据的处理,主内存用于暂存工作结点的输出数据,辅助存储器组成了集群的全局共享存储器,用于存储全部的初始数据和工作结点的输出数据,并且计算机之间可以通过底层网络实现辅助存储器的同步远程互访。一个MapReduce作业由Map和Reduce两个阶段组成,每一个阶段包含数据输入、计算处理和数据输出三个步骤。其中每一个阶段的输出数据被当作下一个阶段的输入数据,而且只有当每一台计算机都将它的输出数据写入共享存储器并完成数据同步后,计算机才可以读取它前一个阶段写入共享存储器的数据进行数据互相访问。

图3-15 MapReduce模型原理

(2)Hadoop运行原理。如图3-16所示,Hadoop的工作流由客户端、JobTracker、TaskTracker和HDFS四个独立部分控制,其流程为以下几步:①提交作业,当客户端提交一个新的MapReduce作业时,向JobTracker请求一个新的Job ID,同时检查作业的输出说明和输入分片;②复制资源,作业提交通过之后,运行作业所需的资源将被复制到一个以Job ID命名的目录下;③作业初始化,JobTracker接收到作业后,将其存放到一个内部作业队列里,由作业调度器对其进行调度和初始化,当作业调度器调度某一作业时,首先为作业创建任务运行列表,然后从文件系统中获取已经计算好的输入分片信息,最后为每个分片创建一个Map任务;④任务分配,TaskTracker利用循环定期向JobTracker发送“心跳”,“心跳”告知JobTracker其是否仍在运行,并且TaskTracker作为“心跳”的一部分,可指明其是否能够运行新的任务,JobTracker在选择Map任务时,会优先考虑TaskTracker的网络位置,并选取一个距离其输入分片文件最近的TaskTracker;⑤ 执行任务,当TaskTracker接收到一个可执行的新任务时,它首先实现作业的JAR文件本地化,然后为任务创建一个本地目录,把JAR文件中的内容解压到此文件夹下,最后新建一个TaskRunner实例来运行该任务;⑥更新进度和状态,TaskTracker每隔5s发送“心跳”到JobTracker,将由TaskTracker运行的所有任务状态都发送到JobTracker,JobTracker将这些更新合并起来,产生一个所有运行作业及其所含任务的状态全局视图;⑦完成作业,当JobTracker收到作业最后一个任务已完成的通知后,会将作业的状态设置为“成功”, JobTracker清空作业的工作状态,并且指示TaskTracker也清空作业的工作状态。

图3-16 Hadoop运行原理

图3-17 Storm结构

2)流处理——Storm

Storm是由BackType开发的一个分布式、容错的实时计算系统,它为分布式实时计算提供了一组通用原语,可被用于流处理之中进行消息的实时处理和数据库信息更新。Storm也可被用于连续计算,对数据流做连续查询,在计算的同时将结果以流的形式输出给用户。它还可被用于分布式RPC,以并行的方式运行昂贵的运算。Storm结构如图3-17所示。

在介绍Storm结构之前,首先对Storm中的一些术语进行说明。

(1)tuple:表示流中一个基本的处理单元,可以包括多个field,每个field表示一个属性。

(2)topology:一个拓扑是一个个计算结点组成的图,每个结点包括处理的逻辑,结点之间的连线表示数据流动的方向。

(3)spout:表示一个流的源头,产生tuple。(www.xing528.com)

(4)bolt:处理输入流并产生多个输出流,可以做简单的数据转换计算,复杂的流处理一般需要经过多个bolt进行处理。

(5)Nimbus:主控结点,负责在集群中发布代码,分配工作给机器,并且监听状态。

(6)Supervisor:工作结点,会监听分配给的工作,根据需要启动和关闭工作进程。

(7)worker:执行topology的工作进程,用于生成task。

(8)task:每个spout和bolt都可以作为task在Storm中运行,一个task对应一个线程

基于上述术语来对图3-17中Storm架构进行描述。Storm集群由一个主结点和多个工作结点组成,两者的协调工作由ZooKeeper来完成。主结点运行了一个名为“Nimbus”的守护进程,用于分配代码、布置任务及检测故障。每个工作结点都运行了一个名为“Supervisor”的守护进程,用于监听工作、开始并终止工作进程。Nimbus和Supervisor都支持无状态的快速失败,因为其所有状态都保存在ZooKeeper或本地磁盘中,因此在“杀死”Nimbus和Supervisors进程时,它们也能在启动时从备份中恢复就像未被“杀死”一样,这使得Storm集群变得更加健壮。

另外,在Storm中,首先要设计一个拓扑topology用于实时计算的图状结构,然后,这个拓扑将会被提交给集群,由集群中的主控结点分发代码,将任务分配给工作结点进行执行。一个拓扑中包括spout和bolt两种角色,其中spout用于发送消息,负责将数据流以tuple元组的形式发送出去;bolt负责转换这些数据流,在bolt中可以完成计算、过滤等操作,bolt自身也可以随机将数据发送给其他bolt。并且由spout发射出的tuple是不可变数组,对应着固定的键值对。

3)实时批处理(迭代处理)——Spark

Spark是由加州大学伯克利分校AMP实验室开发的一个分布式数据快速分析项目。它的核心技术是弹性分布式数据集(resilient distribute ddatasets,RDD),提供了比Hadoop更加丰富的MapReduce模型,可以快速在内存中对数据集进行多次迭代,进而支持复杂的数据挖掘算法和图计算算法。

另外,Spark使用Scala开发,并使用Mesos作为底层的调度框架,可以与Hadoop和EC2紧密集成,直接读取HDFS或S3的文件进行计算,并可以把结果写回到HDFS或S3,是Hadoop和Amazon云计算生态圈的一部分。它同时对外提供了丰富的Java,Python等API扩展了其应用开发范围。Spark框架如图3-18所示。

图3-18 Spark框架

由图3-18可知,Spark支持的分布式管理系统包括HDFS、Amazon S3、Hypertable、Hbase等;运行模式包括本地运行、独立运行、Mesos、YARN等;它的抽象组成为弹性分布式数据集、并行操作和MapReduce计算模型;Spark关联系统有Shark、Spark Streaming和Bagel等。由于MapReduce模型已经在Hadoop平台中进行了详细描述,因此以下只对Spark的另外几个抽象组成RDD和并行操作进行介绍。

(1)RDD。RDD是分布式内存的一个抽象概念,它提供了一种高度受限的共享内存模型。RDD具备像MapReduce等数据流模型的容错特性,并且允许开发人员在大型集群上执行基于内存的计算。现有的数据流系统对迭代计算和交互式数据挖掘两种应用的处理效率相对较低,为了有效地实现容错,RDD提供了一种高度受限的共享内存,即RDD是只读的,并且只能通过其他RDD上的批量操作来创建。同时,RDD可以认为是Spark的一个对象,它本身运行于内存中,如读文件、对文件计算、结果集均可认为是一个RDD。另外,不同的分片、数据之间的依赖、Key-Value类型的Map数据也都可认为是RDD。

RDD是Spark的核心,也是整个Spark的架构基础。它的特性可以总结如下:它是不变的数据结构存储,支持跨集群的分布式数据结构,可以根据数据记录的Key对结构进行分区,并可提供粗粒度的操作,且操作支持分区,同时它将数据存储在内存中,提供了低延迟性。

(2)并行操作。Spark上的并行操作主要包括:①Reduce,在驱动程序中,使用关联函数合并数据集的元素并产生一个输出结果;②Collect,将所有的数据集元素发送到驱动程序;③Foreach,通过使用者提供的函数传输每一个元素。

图3-19 BSP工作原理

4)图计算(迭代处理)——Pregel

Pregel一个可扩展的、具有容错功能的分布式计算框架,主要用于解决大规模图处理问题,它可以灵活地表示任意的图算法。Pregel在概念上遵循BSP模型,BSP的基本特点是采用“超步”(superstep)作为并行计算的基本单位,工作原理如图3-19所示。

BSP模型将并行计算机抽象为三个独立的模块:①本地计算,处理器利用局部数据进行计算;②全局通信,处理器之间通信、传送数据;③路障同步,超步的结束并保证在下一个超步中数据到达目的处理器。另外,一个BSP计算程序由若干超步组成,每个超步具体分为三个部分:①各处理器进行本地计算;②各处理器向其他处理器提出远程内存读写请求,每个处理器发送或等待消息;③所有处理器进行路障同步,本次超步的数据通信仅当同步以后有效。

(1)Pregel计算模型。Pregel的计算模型如图3-20所示,它从概念层分析是BSP模型,其计算由一系列的迭代组成,每一次的迭代称为一个“超步”。在每一次的超步中, Pregel都会调用每个顶点上用户自定义的函数,在概念上这个过程是并行的。用户自定义的函数定义了在一个顶点V以及一个超步中需要执行的操作,该函数可以读取上一个超步中发送给顶点V的消息,并将该消息发送给别的顶点,使得这些顶点可以在下一步超步中读取到数据,并修改顶点V的状态以及其出边。消息通常通过顶点的出边发送,但一个消息也可能被发送到任何标识为可知的顶点。

在图3-20中,每个结点有两种状态:活跃与不活跃,刚开始计算的时候,每个结点都处于活跃状态,随着计算的进行,某些结点完成计算任务转为不活跃状态,如果处于不活跃状态的结点接收到新的消息,则再次转为活跃,如果图中所有的结点都处于不活跃状态,则计算任务完成,Pregel输出计算结果。

图3-20 Pregel计算模型

(2)Pregle执行过程。一个Pregel程序的执行过程包含以下几个步骤:①用户程序的多个副本开始在集群中机器上执行,其中一个副本充当Master。Master不被分配图的任意部分,它负责协调worker的活动;②Master将图进行分区,然后将一个或多个partition分配给worker。每一个worker会在内存中维护分配到其上的graph partition的状态,执行它的顶点上的用户定义的Computer()方法并管理来自或发给其他顶点的消息;③Master为每个worker分配用户输入的一部分。输入被看作一系列的记录,每个记录包含任意数量的顶点和边。在输入完成加载后,所有的顶点被标记为active;④在一个超步中,Master通知每一个worker去执行,只要存在active顶点worker一直执行,并为每一个active状态的顶点调用Computer()方法。它也会传送以前的超步发送的消息。当worker完成后,它会向Master做出响应,告诉Master在下一个超步中active顶点的数量;⑤计算结束后,Master会通知所有的worker保存自己那部分的计算结果。

5)快速交互查询(迭代处理)——Dremel

Dremel是Google的“交互式”数据分析系统。它运行在上千台服务器上,能够对海量数据执行“查询”操作,例如网页文档集、数字图书馆甚至是百万规模的垃圾信息等。其主要包括以下几个特点:

(1)Dremel是一个大规模系统。Dremel在一个PB级别的数据集上面,可以将任务缩短到秒级,无疑需要大量的并发。磁盘的顺序读速度在100MB/s上下,因此在1s内处理1TB数据,至少需要1万个磁盘的并发读取。虽然Dremel可以运行在上千台低廉机器上,但是机器越多,发生故障的概率越大,因此需要很好的容错方案以保证大规模集群的高效运行。

(2)Dremel是MapReduce交互式查询能力不足的补充。Dremel和MapReduce一样,它也采用移动计算而非移动数据的计算模式,因此在运算时需要将计算移动到数据上面,进而需要GFS这样的文件系统作为存储层。在设计之初,Dremel并非MapReduce的替代品,它只是可以执行非常快速的分析,所以在使用的时候,常常用Dremel来处理MapReduce的结果集或者用来建立分析原型。

(3)Dremel的数据模型是嵌套的。由于互联网数据常常是非关系型的,因此Dremel需要有一个灵活的数据模型支持非关系型数据应用。Dremel采用了一个嵌套的数据模型,其类似于JSON。

(4)Dremel中的数据采用列式存储。Dremel使用列式存储,Dremel在分析的时候,可以只扫描需要的那部分数据,进而减少CPU和磁盘的访问量。同时,列式存储是压缩方式,可以综合CPU和磁盘,使其发挥最大的效能。

(5)Dremel结合了Web搜索和并行DBMS技术。首先,Dremel借鉴了Web搜索中的“查询树”概念,将一个相对巨大复杂的查询,分割成较小较简单的查询,能并发的在大量结点上运行。其次,与并行DBMS类似,Dremel提供了一个SQL-like的接口,类似于Hive和Pig。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈