物联网大数据处理技术与实践(第2版)课件 第8章-物联网大数据计算与分析_第1页
物联网大数据处理技术与实践(第2版)课件 第8章-物联网大数据计算与分析_第2页
物联网大数据处理技术与实践(第2版)课件 第8章-物联网大数据计算与分析_第3页
物联网大数据处理技术与实践(第2版)课件 第8章-物联网大数据计算与分析_第4页
物联网大数据处理技术与实践(第2版)课件 第8章-物联网大数据计算与分析_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

物联网大数据处理技术与实践InternetofThings

BigDataprocessingTechnologyandPractice物联网大数据计算与分析物联网大数据批处理计算1物联网大数据交互式查询2物联网大数据流式计算3物联网大数据分析4PARTONE1物联网大数据批处理计算师傅领进门,学艺在自身。------中国谚语物联网大数据批处理计算物联网大数据批处理计算中存在的问题:物联网大数据的一个显著特性是数据规模巨大,以至于无法利用普通的单个服务器在短时间内完成计算任务,必须要借助海量计算能力来帮助开发人员完成。解决方法:基于集群的分布式并行编程能够让软件与数据同时运行在连成网络的许多台计算机上,并且可以通过增加计算机来扩充新的计算节点,从而在短时间内完成大规模数据的处理任务。存在问题:基于集群的分布式并行编程需要将大规模的数据进行切分并分发数据到不同计算机上,并将不同计算机上的计算结果传输到一个计算机上进行合并,还需要处理异常等一系列问题,需要大量的复杂代码来处理上述问题,使得原本很简单的计算变得让程序员难以处理。并行编程模型:为了解决这个问题,Google使用了名为MapReduce的并行编程模型进行分布式并行编程。其主要优点是通过简单的接口来实现自动的并行化和大规模分布式计算,让程序员专注于数据的处理部分而不用关心分布式并行计算所涉及到的技术细节。MapReduce的设计思想一个编程模型被广泛使用的关键是其设计思想。设计思想决定了编程模型是否好用、是否能有效地解决实际问题、是否能保障性能。MapReduce基于以下思想进行设计:(1)向“外”横向扩展,而非向“上”纵向扩展(Scale“out",not“up”)(2)失效被认为是常态(Assumefailuresarecommon)(3)把处理向数据迁移(Movingprocessingtothedata)(4)为应用开发者隐藏系统层细节(Hidesystem-leveldetailsfromtheapplicationdeveloper)(5)平滑无缝的可扩展性(Seamlessscalability)MapReduce的工作机制MapReduce集群中的服务器节点由一个主节点(Master)和多个从节点(Slave)构成。集群采用HDFS作为其分布式文件系统。

MapReduce总体工作流程:输入的原始大数据集首先被切割成小数据集,通常让小数据集小于或等于HDFS中一个块的大小。如图中步骤(1)所示输入数据切割完毕后,启动程序的多个副本。其中有一个特殊的副本运行在主节点上,它将任务(job)分配给M个map工作站和R个reduce工作站,如步骤(2)所示。在步骤(3)(4)中,Map工作站读输入生成key/value对缓存在内存,周期性地写入本地硬盘,用划分功能划分为R个桶。在步骤(5)中,Reduce工作站接到工作数据位置后用远程调用从Map工作站的硬盘读数据。在步骤(6),Reduce工作站将key/value对送给用户Reduce函数,把生成的key/value对加入输出文件。MapReduce在物联网大数据中的应用物联网大数据分析的过程不是单独基于一类数据进行采集、存储、管理和分析的过程,而是针对物联网设备的全生命周期的各类要素信息进行的。物联网大数据分析需要基于过去很长历史时期、不同工作和环境状态下的所有数据,才能相对准确的分析出有价值的信息。物联网中可以进行采集、存储并加以分析利用的数据不止感知数据,还包括设备全生命周期的各类要素信息。物联网大数据的数据规模是巨大的,例如在某些项目中每天需要保存数十GB甚至数百GB的数据。MapReduce以及NoSQL技术使得存储、管理和分析大规模的数据成为可能,过去无法存储的长期历史数据,如今可以被无限制的存储起来。物联网大数据分析的发展使得过去被丢弃的传感器数据得到充分利用,为企业提供了更多的支撑和决策依据。物联网技术的兴起使得厂家可以在售出的产品上预先安装各种联网的传感器,采用Hadoop、NoSQL等技术进行数据采集、存储、分析,从中获取产品使用情况和用户习惯等信息,帮助厂家预测产品销售趋势。PARTTWO2物联网大数据交互式查询HBase上的原生SQL传感器的数值信息是存储在HBase中的,对于HBase来说,SQL查询从宏观上可以分为统计查询和非统计查询。充分利用HBase的新特性,把对数据的操作从HBase客户端移动到RegionServer端,降低网络的I/O负载,提高HBase的性能。对于非统计查询来说,我们可以使用过滤器获取目标字段。对于统计查询来说,我们可以采用协处理器方式获取数据。HBase上的原生SQL以下面的SQL查询为例:以上查询语句的主要作用是从温度传感器表中,查询出SensorID在0001和1001之间,两个时间段内温度小于25度传感器的数据信息。该例中目标字段为SensorID、value、Time;筛选条件为Time、value、SensorID。底层数据库调度过程:(1)判断查询是否为统计查询;(2)调用过滤器或协处理器对HBase进行调度。selectSensorID,value,TimefromtempSensorTablewhereTime>=to_date(‘2016-2-2400:00:03,’yyyy-mm-ddhh24:mi:ss’)andTime<=to_date(‘2016-2-2400:00:04’,’yyyy-mm-ddhh24:mi:ss’)andvalue<=25andSensorID>=’0001’andSensorID<’1001’SQLonHBase的开源项目:PhoenixPhoenix可以将SQL查询编译为HBase上的一系列扫描操作。Phoenix使用协处理器、自定义过滤器等进行优化,可以实现少量数据上的微秒级响应,以及百万级别行数据的秒级响应。Phoenix支持多列的二级索引,列数不限。Phoenix的SQL语句更接近标准SQL规范。但它也有一些限制,例如Phoenix不能识别HBase创建的表。Phoenix官网地址:

Hadoop上的SQL:HiveHive是对HDFS进行修改扩展生成的一个数据仓库框架。它实现了类SQL语句的编程接口,提供了一种类似SQL的语言HQL。Hive核心是将HQL转换为MapReduce程序,然后将程序提交到Hadoop集群执行。省去了编写MapReduce程序的复杂过程。在HBase上使用Hive却得不到很好的性能。Hive访问HBase中表数据,实质上是通过Hadoop读取HBase表数据,对HBase表进行切分,获取RecordReader对象来读取数据。基于HBase的交互式查询交互式查询分析的响应延迟常常需要控制在秒级范围内,但目前的HBase、Hive在某些查询场景下还达不到这样的实时性要求。按行键从HBase中查询数据效率是比较高的,但是若根据定义在列的属性上的约束条件进行查询的效率较低,无法满足交互式查询的秒级响应要求。针对多个属性的约束条件进行交互式查询,可以考虑使用倒排索引技术来提高查询效率,或者采用ElasticSearch等内建高效倒排索引的存储方案。华为的HBase二级索引项目以及Phoenix中都实现了二级索引。PARTTHREE3物联网大数据流失计算流式计算的需求特点面向物联网应用的感知数据流计算的需求一般有如下特点:高吞吐低延迟数据的处理能力。将流式数据和历史数据进行“无缝”关联。流数据处理需具有动态可伸缩的架构,能够适应流数据规模和速度的动态变化性,适应不同的负载。能够处理有缺陷的数据。容错性,同时其保障容错的开销较小。支持高级流数据处理原语或语言。支持多租户共享流数据处理基础设施,支持pay-as-you-go的流数据处理服务使用模式。流数据基本概念起源于Unix的数据管道(pipeline)模型是流式数据处理系统通用的组件抽象模型。输入数据通常通过缓冲区从数据源流入流式数据管道,管道中所有操作形成链路,数据流平滑通过整个管道,任何操作都不能阻塞处理过程。因此,流数据处理管道可以看作是由执行数据操作的“算子(operator)”集合互相之间通过数据“流(stream)”连接而成的图形成。算子具有输入和输出端口,输入数据项的到达将触发算子的执行,算子所执行的数据操作包括数据转换、处理及产生输出数据。流数据功能模型流数据基本概念在流式数据管道模型中的算子包括三种:数据源接收算子(sourceoperator)

数据源接收算子负责管理多个数据源通道,实现数据源到系统的传输和通信协议,接收来自多个数据源的数据,并将它们一个接一个地发送给下一个数据处理算子。管道模型中的数据源接收算子不具有输入端口。与数据接收器相连的“时钟(clock)”组件可选,它用来周期性地创建一条特殊的带有时间戳的数据项,以方便周期性地对数据进行处理。目的接收算子(sinkoperator)

目的接收算子(sinkoperator)负责将管道中的数据递送到外部的应用或用户,它在管道模型中没有输出端口。在每一个数据处理算子中执行一些数据操作,包括数据转换、处理及产生输出数据等,可用流数据的处理规则来表达,这些规则一般包括对数据的过滤、连接和聚集等,互相连接的基本算子运算符构成执行计划。数据处理算子流数据基本概念流数据处理的算子还可分为:阻塞算子:在产生执行结果时需要预先读取整个流数据非阻塞算子:在数据项到达的时候即可产生结果在部署模型上,流数据处理系统主要分为集中式和分布式两类。流式数据的处理模型分为完全模型和滑动窗口模型两类完全模型在整个流数据范围内进行处理,例如阻塞式算子的执行。但由于流数据是无边界的连续数据项,读取整个流数据在理论上是不可能的,因此,“窗口”被用来对运算符执行时考虑的流数据进行限制,从而使得阻塞式算子也可以执行,同时,也使得非阻塞式算子的执行更有效。流数据基本概念窗口可分为如下几类:

固定窗口:窗口边界不移动,例如只处理某固定时间段内的数据项界标窗口:窗口边界从某个已知时间点到当前时间点为止滑动窗口:窗口边界是按照固定大小向前滑动的,即当新的数据项到达时,窗口的上界和下界都相应移动。滑动窗口的终点永远为当前时刻。其中,滑动窗口的大小可以由一个时间区间定义,也可以由窗口所包含的数据项数目定义。滑动窗口有两个基本概念:窗口范围(range),指滑动窗口的大小;更新间隔(slide),指窗口一次滑动的时间区间或数据项数目。流数据基本概念流数据处理的规则有两类,一类是转换规则(transformationrules),一类是检测规则(detectionrules)转换规则(transformationrules)转换规则定义了一个由基本的算子运算符构成的执行计划。这些运算符描述了算子所执行的包括过滤、连接、聚集等在内的数据操作。执行计划可由用户自定义或由系统预定义。系统预定义转换规则一般使用类似于SQL的语句来表达。其规则表达语言可分为声明式语言和命令式语言两类。检测规则(detectionrules)检测规则由条件和活动两部分构成。条件部分通常用逻辑谓词表达,后者通常使用特定的结构来表达。检测规则通常用基于模式(pattern-based)的语言进行描述。条件通常表达为模式的形式,使用逻辑操作符、数据内容和时间约束等选择输入流数据中的匹配部分,活动则定义了所选数据项如何关联来产生新的数据。这在复合事件处理系统中尤为常见。流数据基本概念流数据处理系统的规则语言中经常使用的算子运算符如下:单数据项(single-item)运算符。单数据项运算符分为两类,一类为选择运算符,对输入流数据中的数据项按照某种条件进行过滤操作。数据加工运算符,包括投影运算符以及重命名运算符逻辑(logic)运算符。逻辑运算符是对多个数据项的操作,但与数据项的顺序无关。包括:联合运算符、析取运算符、数据项重复运算符(数据项a的重复度为<m,n>当且仅当a被检测到出现了不少于m次,但不多于n次)以及否定运算符(作用在某数据项上的否定运算符当且仅当流数据中没有出现该数据项时为真)。序列(sequences)运算符。序列运算符当且仅当数据项序列a1,a2,…,an以某个具体的顺序出现时为真。序列运算符在基于模式的语言中经常使用,而转换规则语言通常不提供该运算符。迭代(iteration)运算符。迭代运算符用来表达满足给定迭代条件的无边界数据项序列。与序列运算符类似,迭代运算符以数据项的排序为前提。流管理(flowmanagement)运算符。声明式和命令式的流数据处理转换规则描述语言都需要对多个来源的流数据进行合并、分割、组织和处理等。它包括:连接运算符、Bag集合运算符、数据流重复运算符、分组运算符以及排序运算符。聚集(aggregation)操作运算符。类似于关系代数中的聚集操作,很多流数据处理的应用场景也需要聚集多个流数据的数据,并生成新的数据。早期流数据处理系统提供一些预定义的聚集运算符,例如求最小值、最大值和平均值的运算符。聚集运算符往往需要和窗口结构联合使用,以对操作的范围进行约束,称为窗口聚集操作或窗口聚集查询(windowedaggregationquery)。流数据查询操作流数据查询相关工作可以分为两个方面:

一方面是单个查询操作的实现及优化,例如连接查询、聚集查询等操作的实现及优化;另一方面是互相连接的多个流数据操作算子的执行及优化。流数据连接查询操作:

流数据的连接查询算法可以分为两个或多个流数据之间的连接查询

以及流数据和静态数据之间的连接查询两类,在分布式和云计算环境中,连接查询主要通过数据分区技术实现。基于云计算的流数据聚集查询操作:

基于云计算分布并行的计算模式,流数据上的滑动窗口聚集操作有并行划分、增量式处理、层次性处理三种优化方式。流数据定制化服务目标:面向不同类型应用的需求,以服务方式提供对流数据连续查询、事件检测、实时分析等的能力,支持用户对大规模流数据的共享定制。为了解决处理实时、持续不间断的流数据时的局限性,进行了数据服务模型的研究工作,包括“数据服务”和“以数据为中心的Web服务”。流数据定制化服务大规模流数据服务模型与传统数据服务模型的比较流数据定制化服务

流数据服务的模型需要对服务的数据模型、操作、服务处理方法以及性质等进行刻画。针对这些问题,研究工作提出了StreamFeeds模型。

StreamFeed:一种流数据服务抽象模型流数据定制化服务为了利用流数据构造具体的应用,研究者们提出了不同的编程模型与方法,如IBMSPL、SparkStreaming、CQL等传感器流数据抽象为服务,实现智能响应,延续服务计算核心思想,加强与周围情景信息关联。亚马逊Kinesis、GoogleBigQuery、PredictiveAPI提供流数据托管服务,简化数据流收集与分析,无需自行搭建基础设施。流数据服务面临动态负载挑战,关键在于保障可伸缩性,以适应不可预测且动态变化的流数据规模与速度。评测基准评测基准:用于评测、比较不同系统性能的规范。评测基准用于客观、全面反映具有类似功能的系统之间的差异。传统的数据管理技术发展已相对成熟和稳定,而流数据处理由于各个要素普遍缺乏标准,流数据处理的基准测试需求要包含多个方面。广泛的评估和比较流计算系统评估不同数据或计算特征下的能力产生不同的有代表性的负载评测基准如LinearRoadBenchmark是广泛应用的流数据处理测试基准,可以进行计费通知、事故通知、旅行时间估计等查询、测试不同系统执行这些查询时的性能。Hibench、BigBench、BigDataBench等针对Hadoop和大数据处理提供丰富的测试场景;流处理系统如S4、SparkStreaming、TimeStream进行了自身适用场景下的专用评测。SparkStreaming及其在物联网大数据中的应用SparkStreaming:构建在Spark上处理流数据的框架,它将Stream数据分成小的时间片断实现处理小部分数据SparkStreaming优点:能运行在100+的结点上,并达到秒级延迟使用基于内存的Spark作为执行引擎,具有高效和容错的特性能集成Spark的批处理和交互查询为实现复杂的算法提供和批处理类似的简单接口应用:使用SparkStreaming流数据处理系统,利用交通检测摄像头不断产生的车牌信息,来帮助交管部门预防交通拥堵、事故等问题的发生PARTFOUR4物联网大数据分析物联网大数据OLAP多维分析OLAP是使用多维分析对数据快速访问的一种技术。分析多维数据采用的常用方法包括:上卷(drillup)、下钻(drilldown)、切片(slicing)和切块(dicing)等方法。以北京市各监测点的车流量数据集为例,我们可以将其看作一个多维数组。三个维分别对应监测点所属区域、月份和日期。下钻(drilldown)指在维的不同层次间从上层降到下一层,或者说是将汇总数据拆分到更细节的数据,例如,从北京市这个区域钻取数据,来查看海淀区、朝阳区、石景山区等各城区的车流量能集成Spark的批处理和交互查询上卷(drillup)是下钻的逆操作,即从细粒度数据向高层的聚合,如将海淀区、朝阳区、石景山区的那个各区车流量汇总来查看北京城区的车流量切片(Slice)指选择维中特定的值进行分析,比如只选择海淀区的数据切块(Dice)指选择维中特定区间的数据或者某批特定值进行分析,比如选择2012年10月到2012年12月的车流量数据物联网大数据OLAP多维分析OLAP有多种实现方法,根据存储数据的方式不同可以分为ROLAP、MOLAP、HOLAPROLAP表示基于关系数据库的OLAP实现(RelationalOLAP),以关系数据库为核心,以关系型结构进行多维数据的表示和存储。ROLAP将多维数据库的多维结构划分为两类表:一类是事实表,用来存储数据和维关键字;另一类是维表,即对每个维至少使用一个表来存放维的层次、成员类别等维的描述信息。MOLAP表示基于多维数据组织的OLAP实现(MultidimensionalOLAP),以多维数据组织方式为核心,也就是说,MOLAP使用多维数组存储数据。多维数据在存储中将形成“数据立方体(Cube)”的结构,此结构在得到高度优化后,可以很大程度地提高查询性能。HOLAP表示基于混合数据组织的OLAP实现(HybridOLAP),用户可以根据自己的业务需求,选择哪些模型采用ROLAP,哪些采用MOLAP。一般来说,会将非常用或需要灵活定义的分析使用ROLAP方式,而常用、常规模型采用MOLAP实现。城市交通物联网大数据分析流程

在问题建模阶段收集问题的相关资料,理解问题,在此基础上,拆解问题、简化问题,将其转化机器可预估的问题。首先理解数据源的物理意义:对实际数据了解得越充分,越容易找到符合实际需求的分析手段其次理解数据分析的目的和目标:如果分析的目标是想要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习算法最后将算法转换为应用程序,执行实际任务城市交通物联网大数据分析流程城市交通物联网大数据分析流程

伴随车辆组发现示意图城市交通物联网大数据分析流程2、准备数据

智能交通系统中,各交通路口摄像头的车牌识别数据是可供利用的重要数据源之一前面问题建模的分析,算法需要数据是点伴随组,因此还需要将预处理后的数据进行计算,得到点伴随组。点伴随组是在一定的时间范围内共同经过某个监测点的车辆所共同组成的。

将数据进行整理,按照监测点分组,对所有分组内的车辆数据进行一次点伴随计算,即对同一分组中的数据,相互对比在时间阈值范围内的数据是否具有一次伴随关系,如果满足条件,则将此分组中的车辆数据进行汇总,产生点伴随组。这里的“时间阈值”是指在同一监测点下,车辆彼此经过监测点的时间差值。我们将经过同一监测点的数据按照时间先后顺序排序,整理成一条车辆链表:滑动时间窗口计算示意图城市交通物联网大数据分析流程2、使用算法或训练算法

求出点伴随组后,需要使用频繁集挖掘方法对其进行频繁模式挖掘得到伴随车辆组。由于是无监督学习算法,无需对算法进行训练。我们基于传统的FP-Growth算法进行并行化的改造。

FP-Growth算法的基本思路是:通过两次扫描事务集,分别求出频繁1项集和不断地迭代FP-Tree的构造和投影过程,并对其进行递归挖掘出所有的频繁项集。构造的FP-Tree城市交通物联网大数据分析流程2、使用算法或训练算法

由于传统的FP-Growth算法是需要在内存中建造FP-Tree的,当数据量很大时,单台机器的内存便不足以支撑计算。我们基于Spark框架对传统的FP-Growth算法做了改进和优化,利用简单Hash方法使其能够将事务集均衡的分配到集群中的各台机器上并行的参与计算,提高运算效率。计算步骤:首先基于Spark利用其多个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论