论文部分内容阅读
城市拥堵区域的正确和及时发现,能够为交通管理部门提供相应的应急措施和道路基础设施建设的改善建议,也能为市政规划部门提供非常有价值的城市建设指导意见。本论文论述的城市拥堵区域发现方法及系统实现主要研究如何找到一种行之有效的识别交通拥堵的方法,然后基于此方法设计一套既稳定又可靠且高性能的准实时监测系统。目前此类系统传统的实现方式大概有两类:一种基于路口的卡口感应监测系统,需要投入大量的人力和物力成本,建设周期相对漫长,且偏僻的地方难以覆盖到;另一种是基于路段的车速、流量和出行时间特征等因素做数据分析,计算出交通拥堵指数,并最终为数据打上标签,这样可根据历史数据来鉴别或预测未来时间段交通拥堵状况。此种方式需要得到路段和地图精确匹配的基础数据。鉴于此种现状,本论文提出了基于车辆GPS轨迹数据的SP-Canopy-KMeans聚类方法,来判别拥堵区域。然而从海量的车辆行驶数据提取和计算道路拥堵信息是一件十分复杂和艰巨的事情。原始的单机算法已不能胜任了,甚至一些基于分布式的算法也因技术的更替,有待优化和改进。在这种背景下,本论文从交通拥堵具有非常客观的时效性和持续性特征出发,契合Spark Streaming流式计算的特性,利用深圳市出租车GPS轨迹数据,找到一种在Spark分布式平台上计算分析出城市交通拥堵的特征和拥堵区域发现的方法。本文的主要研究内容包含以下三个方面:(1)技术方面:充分利用现有互联网大数据平台的基础开源组件,这些组件都是经过了市场的沉淀和检验。在本论文中数据采集使用Flume解决多数据源的海量GPS轨迹数据捞取,将数据发送给消息队列组件Kafka,Kafka保证大数据高并发、高吞吐量和高性能;聚类模块通过Spark Streaming的滑动窗口技术来消费Kafka中的数据,能够准实时计算当前拥堵的区域。业务层采用的Docker容器技术,能几秒钟内实现横向扩展。Spark生态集群组件通过CM来管理,可实现1分钟左右集群节点的扩展和缩减。(2)系统设计方面:本论文设计出了一套完整的基于Spark流式计算的准实时的城市拥堵区域发现系统架构。包含数据源的采集、数据的预处理、数据挖掘、业务计算和拥堵动态展示等。该架构支持集群热扩展,可作为项目研发模板。(3)算法应用方面:设计并实现了SP-Canopy-KMeans的聚类算法,其中SP-Canopy算法部分基于Map Reduce的Canopy算法做了Spark并行优化实现。这样既解决了传统K-Means算法的缺陷又使算法能够在Spark平台表现得更高效。