项目篇--处理大数据量的车辆行驶记录


目录

    • 集群搭建
    • 完成工作
    • 技术知识

【前言】


(kafka+redis+hbase+spark+javaweb开发)

集群搭建

一千万条消息的接收和处理,高峰期达到2万条/秒。数据源:用本地JSON文件,用socket发送文件中的数据模拟机具采集发送给云平台。数据接入与实时处理:采用kafka消息中间件接收到数据,过滤不合法的数据,存储到内存数据库Redis作为缓冲。数据存储与分析:采用Spark框架对HBase中的数据进行业务处理,结果存储在HBase中。数据展示:采用Tomcat和前端开发框架,将HBase中的原始数据和分析结果展示出来(Java开发过程)。
项目篇--处理大数据量的车辆行驶记录_第1张图片
云计算集群(六台服务器):用一台作为Redis和Tomcat服务器(数据缓存和web服务器),两台Kafka服务器(数据接入),三台HBase和Spark服务器(HMaster+2HRegionServer,SparkMaster+2SparkSlave)

项目篇--处理大数据量的车辆行驶记录_第2张图片

完成工作

  1. 云计算环境的部署(Kafka、Redis、HBase、Spark、Tomcat)
  2. 大数据量上传的模拟实现,脏数据的清洗(模拟脏数据:经度和纬度在特定范围内的为有效数据,Kafka(使用Kafka streams对原始数据进行过滤。可以采用 LOW-LEVEL PROCESSOR API或者 HIGH-LEVEL STREAMS DSL 两种方式之一进行处理)将接收到的原始数据进行实时过滤处理),数据通过Redis缓存被存到HBase
  3. 数据分析与存储:将HBase中的数据用Spark框架进行业务处理,结果存回HBase。处理的业务有:
    某地点的过车次数
    某辆车的行车轨迹(通过给定的时间范围和车辆的电子车牌(EID),重现车辆轨迹。解决方案:方案一,将该车辆所有轨迹信息提取出来,时间排序,然后按照规定范围获取数据,但是当数据量很庞大时,响应时间过长。方案二:建立一张新表,重新编排行键,不必从数据库获取关于该电子车牌所有的信息和进行二次处理,直接从数据库获取最终结果。拼接EID-time)
    数据分发订阅(数据从Redis到HBase有两种方式:第一种,通过程序手动读取数据到HBase中。第二种,基于Redis的发布订阅能力,通过订阅信道,向指定的信道发布消息,然后将消息推送到HBase中)
    相遇次数统计(相遇定义:两车之间出现在同一地点的时间间隔小于一分钟。功能描述:统计每辆车与其它各车的相遇次数,可以根据车辆的电子车牌查询与它相遇车辆。方案一:自身以地点为键进行join操作,计算除自身外的车辆是否相遇建立一张新表,重新编排行键,不必从数据库获取关于该数据库所有的信息和进行二次处理,直接从数据库获取最终结果。(placeId,(eid,time)) join (placeId,(eid,time)) ->(placeId, (eid1, time1, eid2, time2)) filter (eid1 !=eid2 && |time1 - time2| < 60) ->((eid1, eid2), 1) reduceByKey ->((eid1, eid2), count)。方案二:以地点为键进行分组,同一组内的数据按照时间进行排序,遍历整个列表,看哪些车辆之间满足时间间隔。建立MeetCount表,如下所示 )、在这里插入图片描述
    车辆的实时监控(设定车辆监控规则(如监控固定车牌,或监控某段时间出现在某个地点的车辆。对监控到的信息进行存储。支持展示监控到的记录,并可以根据监控规则进行查询。举例:设置监控车牌为陕A8888的车辆监控规则,然后根据规则,在数据中实时找到关于该车辆行驶信息,对信息进行存储,然后在页面上可查询)
  4. Web开发与可视化:将业务处理的结果以地图、表格、图表等形式展现在网页中

技术知识

  1. Redis(Redis简明教程、Redis面试)
    基于内存亦可持久化的日志型、Key-Value 数据库,提供(5种数据类型:string,list,set,zset,hash)等数据结构的存储。复杂的数据结构并且提供对他们的原子性操作。发布订阅:Redis作为一个发布订阅Server,在订阅者和发布者之间起到了 消息路由 的作用。一个client1订阅者通过subscribe向Redis server 请求订阅消息message,也就是有了一个channel通道。当另一个client2通过publish向Redis server发送消息类型message时,这个消息会被所有订阅了message消息的client所接收。订阅和发布是多对多的关系。事务:一个client发起的事务中的命令可以连续执行,中间不会插入其他客户端的命令。事务命令multi,进入事务上下文,以后输入的命令不会被立即执行,先放入队列,收到exec命令后,Redis顺序执行队列中的命令,将执行结果返回到客户端。管道功能:Redis是一个支持请求/响应协议的TCP服务器。Client向Redis server发送请求,阻塞式地等待服务返回。管道命令同时发送多个请求,就无须每次都阻塞,只需要在最后读取每个命令的结果。持久化:基于内存,但可在配置文件中开启持久化功能,将数据持久化到磁盘中。两种方式:RDB(Redis DataBase)和AOF(Append Only File)。RDB方式:简单讲就是在不同的时间点,将Redis存储的数据生成快照并存储到磁盘等介质上;AOF(日志型)方式:简单讲就是将执行过的写指令记录下来,在数据恢复时按照从前到后的顺序再将指令都执行一遍,从而恢复数据。

  2. HBase(HBase简介)

你可能感兴趣的:(面经与实习)