
目前,国内“无线城市”建设也在如火如荼地展开,国务院、地方省政府出台一系列关于建设新型智慧城市、加快宽带城市建设、推动互联网发展、促进信息消费、提升无线网络服务等文件,大力推进、高效指导城市公共场所无线局域网建设;台湾、香港、上海、北京、广东、湖北、江苏、山东、安徽等。
30 余省的超 300 个城市的无线城市门户上线推广,已上线应用超过 1.5 万个。
在为民众提供便利的网络环境的同时,如何有效利用 WIFI 前端设备采集的探针数据,打造新型智慧化城市,构建信息化环境下的安全社会,成为城市相关管理者亟待解决的问题。


技术路线:
基于以上总体设计及业务功能需求,对本系统进行详细设计,在详细设计中,确定实现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系。之后进入详细编码阶段,本系统采用 Java + Linux 为主要软件开发模式,系统的关键技术为大数据处理。根据大数据处理的几个核心阶段,本文分别采用不同的技术实现。

数据采集:
本系统采集的数据为 WIFI 探针数据,WiFi 探针数据是 probe 帧:终端设备在接入 AP 之前,会发送一些明文数据包(probe request 帧)给 AP,AP 然后反馈 probe response,以此来标识各自的存在,WIFI探针就是 probe request 帧里面的数据,它以手机“MAC 地址”为重要组成,同时还包括了 AP 设备所在的经纬度,探测时间,终端类型及品牌等基础数据。
对于无线城市项目,往往会接入多个不同厂商的无线 AP 设备,因此需采用基于不同厂商 AP 探针模块的 UDP 包接收解析技术,实现对不同厂商 AP 设备探针模块发送数据的解析。另外,由于无线 AP 设备数量较大,接收的探针数据量巨大,因此本系统采用基于 UDP 的分布式集群,实现动态扩展,满足海量 AP 探针数据的接收及解析。
数据传输:
在本系统中,采用分布式架构,接收 AP 设备上报的报文数据,平台具备动态水平扩展能力,根据 AP 探针的数据量动态调整接收服务器数量。统一数据格式,将采集到的不同厂商的报文进行格式统一。通过自定义传输将收集处理后的数据从 AP server 中转至 HDFS、HBase、ElasticSearch 大数据平台。

数据存储:
基于功能业务需求及规划,本系统采用 HDFS、HBase、ElasticSearch 三种系统进行数据的统一存储。 HDFS 是 Hadoop 体系中数据存储管理的基础。本文充分利用 HDFS 分布式优势,将 HDFS 作为基础的文 件存储平台,对于源源不断增长的大数据,HDFS 可进行很好的扩展与清理,并简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能。
面对海量数据的查询,对于系统的数据结构设计与性能优化都提出非常高的要求,传统数据库几乎无法完成多条件的查询。为了实现海量数据秒回查询,本系统对需要随机访问、实时读写的数据采用 HBase 数据库,并基于 Elasticsearch 建立分布式海量数据检索服务,作为 HBase 数据仓库的查询入口,实现在几秒内返回结果。HBase 是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库。其利用 Hadoop HDFS 作为其基础的文件存储系统,利用 HadoopMapReduce 来处理 HBase 中的海量数据,利用 Zookeeper 作为其分布式协同服务。另外,HBase 技术在廉价 PC Server 上可搭建起大规模结构化存储集群,既具备 PB 级数据存储能力,又能节省系统资金投入。
在本系统中,考虑数据量巨大,对分布式服务器节点的性能和存储空间要求较大,通过采用 LZO 压缩技术,将原始数据压缩到 12%左右,减少了 78%的存储资源。
数据计算及分析:
离线数据分析与统计
本系统基于 Hive 进行标准 SQL 化分布式数据计算与挖掘,它的底层是调用 Hadoop 的 Map Reduce,主要用于离线数据分析和统计,如计算及统计一天中每个 MAC 地址关联 AP 的个数,每个 AP 下关联的所有手机 MAC 个数等。Hive 是一个基于 Hadoop 的开源数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行。

实时数据分析与统计
Map Reduce 框架适合离线计算,却无法满足实时性要求较高的业务,如用户行为轨迹分析等。Spark是一个类似于 MapReduce 的分布式计算框架,其核心是弹性分布式数据集,提供了比 MapReduce 更丰富的模型,可以快速在内存中对数据集进行多次迭代,以支持复杂的数据挖掘算法和图形计算算法,它的底层是调用 Hadoop 的 Yarn,其优点如下:
1) 提供分布式计算功能,将分布式存储的数据读入,同时将任务分发到各个节点进行计算;
2) 基于内存计算,将磁盘数据读入内存,将计算的中间结果保存在内存,这样可以很好的进行迭代运算;
3) 支持高容错。
4) 提供多计算范式。
本系统基于 Spark 进行实时数据流分析与计算,如亲密人和同行人的计算及分析。



