热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

地图开发科普篇:如何利用大数据技术处理海量GPS数据

我秀中国物联网地图服务平台目前接入的监控车辆近百万辆,每天采集GPS数据7亿多条,产生日志文件70GB,使用传统的数据处理方式非常耗时。比如,仅仅对GPS做一些简单的统计分析,程序

我秀中国物联网地图服务平台目前接入的监控车辆近百万辆,每天采集GPS数据7亿多条,产生日志文件70GB,使用传统的数据处理方式非常耗时。

比如,仅仅对GPS做一些简单的统计分析,程序就需要几个小时才能跑完一天的数据,完全达不到实时分析的要求,更无法对数据进行一些深层次的挖掘。

另外历史数据的存储也是一个亟待解决的问题,目前大多采用的方式是将日志文件进行压缩后上传到服务器上进行存储。

这种方式既原始又不可靠,一是需要作业员每天定时手动上传数据,操作不方便;二是一旦存储数据的服务器出现问题,可能会造成大量数据的丢失,造成不可挽回的损失。

随着大数据技术的成熟和普及,我们发现借助于大数据技术可以完美的解决上述问题。根据目前的需求和对大数据相关软件的掌握,我们对GPS日志分析系统做了初步的设计,架构如下图所示:

《地图开发科普篇:如何利用大数据技术处理海量GPS数据》
《地图开发科普篇:如何利用大数据技术处理海量GPS数据》

大数据日志分析主要是对开源大数据组件进行整合开发而成,分为:数据采集层、数据预处理层、数据存储层、数据处理层和数据分析层等5个层次。

01、数据采集层

数据采集层主要利用开源组件Flume对日志文件进行采集。Flume是一个分布式、高可靠、高可用的海量日志采集软件,支持定制各类的数据发送方,在收集数据的同时能够对数据进行简单的处理,然后写到各种数据接收方。

目前我们是对Flume采集的日志文件做两个操作,一是直接发送给kafka进行缓存,二是将数据进行压缩后写入HDFS供之后的分析用。

02、数据预处理

数据预处理主要对日志文件进行初步的简单处理。目前采用Storm从Kafka接收数据,然后对数据进行实时统计。

Storm是一个分布式、容错的实时计算系统。它的编程模型非常简洁,主要包括三个组件:Topology、Spout和Bolt。Topology是一个由多个计算节点构成的拓扑图,Spout和Bolt是两种结算节点,它们一起构成了一个完整的数据流向图。

《地图开发科普篇:如何利用大数据技术处理海量GPS数据》
《地图开发科普篇:如何利用大数据技术处理海量GPS数据》

03、数据存储层

数据存储层主要用于数据的存储。目前采用MongoDB存储结果数。

通过Storm处理后的数据,首先缓存到Redis中,每隔一定得时间间隔,将数据批量转存到MongoDB中。

MongoDB是一个高性能、易部署、易使用的分布式数据存储系统,介于结构化数据库和非结构化数据库之间,数据存储格式不固定,可以非常方便的进行扩充。

04、数据处理层

数据处理层主要采集一些数据挖掘算法对数据进行挖掘,或者进行实时计算。

数据挖掘主要借助于统计学方法、机器学习方法、神经网络方法等对数据进行知识挖掘,发掘潜在的价值。

比如利用线性回归算法,预测车辆的停留时间。利用k-means算法对位置临近的出租车做聚类分析,从而发现最有可能搭载乘客的热点区域。根据速度将轨迹数据进行分段,从而分析某个时间段的道路畅通状况等。

05、数据分析层

数据分析层主要是数据的展示和分析。

比如将GPS数据加载到地图上,利用抓路算法将GPS数据和地图数据进行融合,对分段的轨迹进行不同颜色的显示,可以让调度人员对当前时间段的道路通行情况一目了然,辅助车辆的调度。

《地图开发科普篇:如何利用大数据技术处理海量GPS数据》
《地图开发科普篇:如何利用大数据技术处理海量GPS数据》

我们不断提高自身数据处理能力,就是为了给您提供更快速、更精准、更丰富的数据分析功能。


推荐阅读
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • 伸缩性|发生_分布式文件系统设计,该从哪些方面考虑?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了分布式文件系统设计,该从哪些方面考虑?相关的知识,希望对你有一定的参考价值。点击上方关注“ ... [详细]
  • 你知道Kafka和Redis的各自优缺点吗?一文带你优化选择,不走弯路 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • Hadoop源码解析1Hadoop工程包架构解析
    1 Hadoop中各工程包依赖简述   Google的核心竞争技术是它的计算平台。Google的大牛们用了下面5篇文章,介绍了它们的计算设施。   GoogleCluster:ht ... [详细]
  • mapreduce源码分析总结
    这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ... [详细]
  •        在搭建Hadoop环境之前,请先阅读如下博文,把搭建Hadoop环境之前的准备工作做好,博文如下:       1、CentOS6.7下安装JDK,地址:http:b ... [详细]
  • Abp+MongoDb改造默认的审计日志存储位置
    一、背景在实际项目的开发当中,使用AbpZero自带的审计日志功能写入效率比较低。其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起。所以我们可以重新实现A ... [详细]
  • MongoDB学习:(二)MongoDB简单使用
    MongoDB学习:(二)MongoDB简单使用MongoDB使用:执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面>mongo提示 ... [详细]
  • Azkaban(三)Azkaban的使用
    界面介绍首页有四个菜单projects:最重要的部分,创建一个工程,所有flows将在工程中运行。scheduling:显示定时任务executing:显示当前运行的任务histo ... [详细]
author-avatar
红红的累累vdHRC_958
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有