基于Hadoop生态Storm框架的实时人气分布热力图构建分析彭娇论文_彭娇

广东科技学院,计算机学院,广东,523083

摘要:随着时代的发展,“大数据”已经成为一个耳熟能详的词汇,与此同时,大数据处理框架Hadoop也逐渐成为数据处理挖掘行业广泛使用的主流技术,而Storm作为“实时的Hadoop”,实现了大规模实时数据流处理的需求,达到实时数据监控的目的。本文将基于Storm框架,利用手机信令、Logstash、Kafka等技术实时采集人流地理位置坐标数据,以特殊高亮的形式显示访客热衷的区域和访客所在的地理区域的图示,能够准确并及时地分析人流信息,为出行者提供最优质的选择。

关键字: Hadoop;Storm;实时处理

引言

随着城市规模的扩张和交通的便利,闲暇时间的出游变的日常化。但城市交通可能会因为无法高效地利用路线和实时监控,很容易造成交通堵塞。改善城市的出行、提高出行效率成为构建智慧城市的当务之急。如何在海量的交通、出行数据中,及时准备分析的当前的人流信息并进行监控管理,为出行者提供优质的交通引导服务,减少拥堵状况,成为城市智能规划的核心所在。

在大数据时代,大数据处理的典型工具Hadoop是一个由Apache基金会所开发的分布式系统基础架构,主要解决的是海量数据的存储和分析计算问题,作为处理大数据的分布式存储和计算框架,得到了国内外大、中、小型企业的广泛应用。不过它并不是一套实时系统。为了解决这个问题,计算机工程师们又开发了Storm和Kafka。 Apache Storm是一套开源的分布式实时计算系统。最早由Nathan Marz开发,在被Twitter收购后开源,并在2014年9月起成为Apache顶级开源项目。Storm被广泛用于各种商业网站,包括 Twitter、Yelp、Groupon、百度、淘宝等。Storm的使用场景非常广泛,例如实时分析、在线机器学习、连续计算、分部署RPC、ET 等。Storm有着非常快的处理速度,单节点可以达到百万个元组每秒,此外它还具有高扩展、容错、保证数据处理等特性。

本文以IDEA为开发工具,利用Hadoop生态圈中的Storm框架、Zookeeper协调服务节点集群、Kafka中间件等运行环境,对人流信息数据进行流式处理和实时分析,并将结果反馈到基于J2EE架构的平台中,实时显示人流的热力分布图。

1 实时数据流处理框架

Storm是一个免费开源、分布式、高容错的实时计算系统。Storm令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。

Storm 采用主从架构,主要分为两种组件Nimbus和Supervisor,这两种组件都是快速失败的,没有状态,使利用 Zookeeper来协调状态和保存集群运行的状态信息,如图1所示。

Nimbus负责在集群里面发送代码,分配工作给机器,并且监控状态,全局只有一个。

Supervisor会监听分配给它那台机器的工作,根据需要启动/关闭工作进程Worker。每一个要运行Storm的机器上都要部署一个,并且,按照机器的配置设定上面分配的槽位数。

Zookeeper是Storm重点依赖的外部资源。Nimbus和Supervisor甚至实际运行的Worker都是把心跳保存在Zookeeper上的。Nimbus也是根据Zookeeper上的心跳和任务运行状况,进行调度和任务分配的。

Storm提交运行的程序称为Topology。Topology处理的最小的消息单位是一个Tuple,也就是一个任意对象的数组。Topology由Spout和Bolt构成。Spout是发出Tuple的结点。Bolt可以随意订阅某个Spout或者Bolt发出的Tuple。Spout和Bolt都统称为component。

2 实验与分析

2.1 软硬件环境参数设置

硬件环境:CPU:酷睿i3主频3.0GHz 内存:8G 硬盘空间:1T

软件环境:jdk-8u161-linux-x64.tar 、apache-storm-1.1.3.tar、logstash-2.4.1.tar、kafka_2.11-0.9.0.0、zookeeper-3.4.5-cdh5.7.0.tar

操作系统:CentOS-6.5-x86_64-bin

2.2 平台架构及处理流程

本平台通过Logstash实时的将采集到的数据存储到Kafka得broker集群中,Storm集群中的节点对Kafka中的数据进行处理,将处理后的数据输出的数据库DB中,将DB中的数据通过地图的API上进行展示。其中Kafka集群和Storm集群的运行都依赖于Zookeeper。具体流程如图2所示。

图2 数据处理流程

(1)数据采集

本系统可以依靠手机移动网络信令来获取用户所在位置的经纬度,从而收集获取人流信息,通过对信令信息的相应字段进行分析、挖掘,并结合GIS技术实现自定义区域内实时人流量的智能化统计分析。

(2)搭建集群环境

使用虚拟机VMWare构建有3个节点的集群环境,包括一个主节点master,和两个从节点slave1和slave2。在集群环境搭建的过程中需要完成以下步骤:

完成主机名的修改:编辑/etc/sysconfig/network文件,修改hostname的值为master。

配置hosts文件,要用于确定结点的IP地址,方便后续对节点能快速查到并访问。

关闭防火墙:systemctl stop firewalld

安装JDK并完成环境变量的配置:在~/.bash_profile文件中设置JDK的环境变量 JAVA_HOME和PATH。

搭建集群环境:对master节点进行克隆,克隆出slave1、slave2,重复上面的步骤,修改主机名、修改主机名与ip地址的映射的host文件。

下载安装并设置ntp,用来同步网络中各个计算机的时间。

配置SSH免密码登录,以提高节点之间的访问效率。

(3) Storm周边环境的搭建

从图2种我们可以看到,Storm的周边环境包括Zookeeper、logstash、Kafka。

Zookeeper的安装及配置:解压Zookeeper的安装包, 在~/.bash_profile文件中配置Zookeeper的环境变量,编辑zookeeper的配置文件zoo.cfg,添加zookeeper数据保存的路径dataDir的参数值。

Logstash的配置及使用:Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力。它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。解压Logstash的安装包, 在~/.bash_profile文件中配置Logstash的环境变量后即可使用Logstash完成数据的输入和输出。

Kafka的配置及使用:Kafka主要是为实时数据提供一个统一、高吞吐、低延迟的处理平台。Kafka集群包含一个或多个服务器broker,每条发布到Kafka集群的消息都有一个类别,称为Topic,每个Topic包含一个或多个Partition,Producer负责发布消息到Kafka broker,Consumer消息消费者,向Kafka broker读取消息的客户端。所以Kafka安装配置后首先需要建立一个topic。

(4)搭建Storm架构

使用zkServer.sh start命令启动Zookeeper集群服务。

搭建storm的集群环境,首先解压apache-storm,在~/.bash_profile文件中配置storm环境变量,然后编写conf/storm-env.sh和conf/storm.yaml文件,最后就可以启动集群的storm环境了。

(5)Storm整合Kafka并存储展示数据

Storm整合对接Kafka,首先需要在maven的pow.xml中加载一个storm-kafka依赖,然后配置一个SpoutConfig的对象,此对象主要是配置kafka相关的环境、主题、重试策略、消费的初始偏移量等等参数。最后将处理好的数据即Storm的tuple数据写入到MySql中。最后可以SpringBoot构建Web项目将统计的结果进行展示。

3 结束语

Storm 的计算架构处理海量人流位置数据的定位,通过与lodstash、Kafka 和mysql 结合对人流信息进行了实时性的分析和处理,通过地图API实时显示人流所在地理位置的展示,能够准确并及时地分析人流信息,为出行者提供最优质的交通引导服务,减少拥堵状况。

参考文献:

[1]李团结,从新法,李光明. 日志综合管理平台基于Storm框架的实现[J].中国新通信,2017(3):41-46[

[2] 朱群. 基于Storm的交通信息实时处理系统的设计与实现[D]. 西安电子科技大学,2017.6

[3] 蔡正义. 基于大数据的城市居民出行分析建模[D]. 浙江大学,2018.7

论文作者:彭娇

论文发表刊物:《中国电气工程学报》2019年第4期

论文发表时间:2019/6/27

标签:;  ;  ;  ;  ;  ;  ;  ;  

基于Hadoop生态Storm框架的实时人气分布热力图构建分析彭娇论文_彭娇
下载Doc文档

猜你喜欢