storm在交通流实时处理系统中的研究与应用(源码)【字数:10361】
摘 要随着互联网的高速发展,数据呈现爆发式的增长,每日都有大量的数据在互联网上流通。其中交通流数据与我们的日常生活有着紧密的联系,上班高峰期、节假日出行、道路维修等等情况都会产生大量有用的交通流数据。只要对这些数据进行加工和处理,能得到很多有价值的数据。MongoDB是常用作分布式大数据存储的非关系型数据库,具有高性能、可扩展、易部署、易使用,存储数据非常方便的特点。Storm作为目前大数据实时处理平台的研究热点之一。它具有实时、高效、可靠和容错的特点,适用的场景广,且保证数据不丢失。本文基于实时的、分布式的流数据处理框架Storm进行交通流数据处理的研究。本文的目的在于学习Storm的使用,研究Storm在交通流中的应用场景和Storm与MongoDB的结合使用。
目 录
第一章 绪论 1
1.1 研究背景 1
1.2 研究意义 1
1.3 研究内容 1
1.4 论文结构 2
第二章 相关技术介绍 3
2.1实时计算 3
2.2 Storm框架 3
2.2.1 Storm核心概念 3
2.2.2 Storm集群结构 6
2.3 ZooKeeper分布式协调服务 7
2.4 NoSQL数据库 7
2.4.1 MongoDB简介 7
2.4.2 MongoDB特点及其结构 7
第三章 交通流实时处理系统功能设计 9
3.1需求分析 9
3.2功能模块设计 9
3.2.1路况预测 10
3.2.2车速推算 10
3.2.3行车轨迹获取 11
3.3数据库设计 11
第四章 系统实现与实验结果分析 13
4.1系统部署运行 13
4.2处理结果验证 16
4.3实时性分析 17
结束语 18
致 谢 19
参考文献 20
绪论
研究背景
当前世界正处于大数据时代,“云计算”也已经不是一个新鲜的名词。随着大数据的高速发展, *好棒文|www.hbsrm.com +Q: ¥351916072¥
计算机的计算能力成为了一个关键的因素,而随之诞生的“云计算”正是解决了个体计算机计算能力不足的一种价格低廉且资源利用率高的解决方案。而实时处理平台正是基于“云计算”所提供的共享计算资源所组建的集群来架构的。面对持续不断的传感数据流,实时处理系统必须快速、准确的响应并及时得到结果。针对大规模历史数据的价值挖掘以及大规模数据流的实时处理是当前的研究热点,而在交通领域中,则存在一些小规模数据流的实时处理[1]。Storm是伴随着实时大数据处理的需求而生的,是一个相对较新的领域[2]。Storm作为流式计算的典型代表,在时效性、稳定性、扩展性等方面都有着良好的表现[3]。目前在各行各业中以Storm作为海量数据处理的解决方案已经相当普遍,面对不断提升的对海量数据实时处理效率的需求,国内外所提出的优化策略像雨后春笋般涌现[4]。在交通领域中,可以利用Storm的特性实现对大规模数据的处理。
研究意义
在交通领域上,科学而有效地管理现有的路网,能够提高 30%的车辆通行率,在一定程序上缓解交通的阻塞,提高路网运行的能力,减少交通事故的发生,提高能源的利用率,减轻汽车能源消耗带来的环境污染。城市交通的科学智能化管理也能够提高交通的运营效率和质量[9]。无时无刻都在产生着庞大信息量的交通领域里,如果能实时的对信息进行分析挖掘潜在的价值,我们的生活也将得到极大的便利。例如高速路上的测速仪、红绿灯的违章拍照、公交车的出入站时间各式各样的数据,都包含有大量有价值的信息,单纯的汇总分析只能获取其中的部分综合信息,并不能实时作用于交通邻域上。而Storm的出现使得大规模数据实时处理成为可能,填补了该领域的空白[5]。利用Storm高效、实时、批量处理的特性,使实现利用交通数据分析出哪里可能会发生交通事故、哪里可能会发生拥堵、走哪条路线可以最快抵达目的地等功能成为可能。
研究内容
本文将对Storm在交通流实时处理系统中的应用来展开研究与分析。Storm作为一个实时处理平台,它在交通流信息处理中的实时性是如何体现的将作为本文的研究重点。本文将聚焦在Storm拓扑的运作流程上,通过设计并实现简单的拓扑,研究其各个功能节点来了解和学习Storm。同时还研究了当前与Storm搭配最常用的分布式协调服务程序ZooKeeper与Storm的搭配使用以及非关系型数据库MongoDB的使用。
论文结构
本文的主体结构如下:
第一章:简述本文研究内容的背景及其意义;
第二章:介绍在研究中使用到的核心技术和框架;
第三章:阐述功能的设计与实现;
第四章:描述系统的部署,根据实验结果分析Storm在交通流处理中的实时性。
相关技术介绍
实时计算
实时计算又称即时计算,强调的是数据处理的实时性,需要在极短的时间内完成计算把结果返回,并对处理的准确性要求较高。实时计算在互联网领域表现为从大量数据中进行具体业务的即时计算[6]。其一般都是针对海量数据进行的,要求为秒级,主要分为两块:数据的实时入库、数据的实时计算。
Storm框架
Storm是由BackType开发的一个分布式的、容错的实时计算系统,它被托管在GitHub上,遵循 Eclipse Public License 1.0。分布式环境下的数据流实时处理技术已经成为数据流处理的重要方向[7]。
Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时用户就可以以流的形式得到结果。它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。Storm保证每个消息都会得到处理,在一个小集群中,每秒可以处理数以百万计的消息[8]。
Storm具有编程模型简单、支持多种编程语言、容错性高和有可靠的消息处理等特点。
Storm核心概念
要了解Storm首先需要了解Storm里面包含的几个核心概念,理解这些概念有助于我们去弄明白Storm的工作原理及其核心思想。
拓扑(Topologies)
Storm 的Topology是对实时计算应用逻辑的封装,它的功用与 MapReduce 的任务(Job)十分相似,区别在于 MapReduce 的一个Job在运行得到结果之后总是会被终结的,但是Topology却会在集群中持续运行,除非你手动去结束它,否则将会一直运行下去。在逻辑上,一个Topology是由一个或多个Spout和Bolt组成的图状结构,而Spouts和Bolts之间则是由Stream Groupings来链接的。
目 录
第一章 绪论 1
1.1 研究背景 1
1.2 研究意义 1
1.3 研究内容 1
1.4 论文结构 2
第二章 相关技术介绍 3
2.1实时计算 3
2.2 Storm框架 3
2.2.1 Storm核心概念 3
2.2.2 Storm集群结构 6
2.3 ZooKeeper分布式协调服务 7
2.4 NoSQL数据库 7
2.4.1 MongoDB简介 7
2.4.2 MongoDB特点及其结构 7
第三章 交通流实时处理系统功能设计 9
3.1需求分析 9
3.2功能模块设计 9
3.2.1路况预测 10
3.2.2车速推算 10
3.2.3行车轨迹获取 11
3.3数据库设计 11
第四章 系统实现与实验结果分析 13
4.1系统部署运行 13
4.2处理结果验证 16
4.3实时性分析 17
结束语 18
致 谢 19
参考文献 20
绪论
研究背景
当前世界正处于大数据时代,“云计算”也已经不是一个新鲜的名词。随着大数据的高速发展, *好棒文|www.hbsrm.com +Q: ¥351916072¥
计算机的计算能力成为了一个关键的因素,而随之诞生的“云计算”正是解决了个体计算机计算能力不足的一种价格低廉且资源利用率高的解决方案。而实时处理平台正是基于“云计算”所提供的共享计算资源所组建的集群来架构的。面对持续不断的传感数据流,实时处理系统必须快速、准确的响应并及时得到结果。针对大规模历史数据的价值挖掘以及大规模数据流的实时处理是当前的研究热点,而在交通领域中,则存在一些小规模数据流的实时处理[1]。Storm是伴随着实时大数据处理的需求而生的,是一个相对较新的领域[2]。Storm作为流式计算的典型代表,在时效性、稳定性、扩展性等方面都有着良好的表现[3]。目前在各行各业中以Storm作为海量数据处理的解决方案已经相当普遍,面对不断提升的对海量数据实时处理效率的需求,国内外所提出的优化策略像雨后春笋般涌现[4]。在交通领域中,可以利用Storm的特性实现对大规模数据的处理。
研究意义
在交通领域上,科学而有效地管理现有的路网,能够提高 30%的车辆通行率,在一定程序上缓解交通的阻塞,提高路网运行的能力,减少交通事故的发生,提高能源的利用率,减轻汽车能源消耗带来的环境污染。城市交通的科学智能化管理也能够提高交通的运营效率和质量[9]。无时无刻都在产生着庞大信息量的交通领域里,如果能实时的对信息进行分析挖掘潜在的价值,我们的生活也将得到极大的便利。例如高速路上的测速仪、红绿灯的违章拍照、公交车的出入站时间各式各样的数据,都包含有大量有价值的信息,单纯的汇总分析只能获取其中的部分综合信息,并不能实时作用于交通邻域上。而Storm的出现使得大规模数据实时处理成为可能,填补了该领域的空白[5]。利用Storm高效、实时、批量处理的特性,使实现利用交通数据分析出哪里可能会发生交通事故、哪里可能会发生拥堵、走哪条路线可以最快抵达目的地等功能成为可能。
研究内容
本文将对Storm在交通流实时处理系统中的应用来展开研究与分析。Storm作为一个实时处理平台,它在交通流信息处理中的实时性是如何体现的将作为本文的研究重点。本文将聚焦在Storm拓扑的运作流程上,通过设计并实现简单的拓扑,研究其各个功能节点来了解和学习Storm。同时还研究了当前与Storm搭配最常用的分布式协调服务程序ZooKeeper与Storm的搭配使用以及非关系型数据库MongoDB的使用。
论文结构
本文的主体结构如下:
第一章:简述本文研究内容的背景及其意义;
第二章:介绍在研究中使用到的核心技术和框架;
第三章:阐述功能的设计与实现;
第四章:描述系统的部署,根据实验结果分析Storm在交通流处理中的实时性。
相关技术介绍
实时计算
实时计算又称即时计算,强调的是数据处理的实时性,需要在极短的时间内完成计算把结果返回,并对处理的准确性要求较高。实时计算在互联网领域表现为从大量数据中进行具体业务的即时计算[6]。其一般都是针对海量数据进行的,要求为秒级,主要分为两块:数据的实时入库、数据的实时计算。
Storm框架
Storm是由BackType开发的一个分布式的、容错的实时计算系统,它被托管在GitHub上,遵循 Eclipse Public License 1.0。分布式环境下的数据流实时处理技术已经成为数据流处理的重要方向[7]。
Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时用户就可以以流的形式得到结果。它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。Storm保证每个消息都会得到处理,在一个小集群中,每秒可以处理数以百万计的消息[8]。
Storm具有编程模型简单、支持多种编程语言、容错性高和有可靠的消息处理等特点。
Storm核心概念
要了解Storm首先需要了解Storm里面包含的几个核心概念,理解这些概念有助于我们去弄明白Storm的工作原理及其核心思想。
拓扑(Topologies)
Storm 的Topology是对实时计算应用逻辑的封装,它的功用与 MapReduce 的任务(Job)十分相似,区别在于 MapReduce 的一个Job在运行得到结果之后总是会被终结的,但是Topology却会在集群中持续运行,除非你手动去结束它,否则将会一直运行下去。在逻辑上,一个Topology是由一个或多个Spout和Bolt组成的图状结构,而Spouts和Bolts之间则是由Stream Groupings来链接的。
版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/rjgc/33.html