赵 康 杨余旺
(南京理工大学 南京 210094)
物联网是新一代网络信息技术[1]。它在互联网的基础上,在用户端进行拓展和延伸,来进行信息交换和通信,互联网强调人与人之前的通信和信息交流,而物联网通过自组网建立起新形式的无线传感网[2~3],按照约定的协议,将物与物,物与人联系在一起,实现万物联网。物联网表现出高度智能,全面感知,无缝互联的特征,使物联网被广泛地应用与各个领域。
将物联网技术应用与环境检测,能够获得大量实时、动态的数据[4~5]。传统的物联网技术强调物与物的连接与整合,对于其产生的大量数据,仅仅是传输到指定的数据的数据中心,缺少深入的数据整合和数据分析,没有发挥出数据集成的优势[6~7];将云计算技术与物联网相结合,利用计算机服务集群强大的计算能力,可以实现灵活多变的数据分析应用,深度发掘物联网数据的价值。
大数据平台Hadoop 目前是最流行的云计算开源项目[8~9],它旨在利用集群节点的资源,使用简单的编程模型对大数据集进行分布式存储和处理,可以在大量通用硬件设备组成的集群上运行应用程序,构建一个扩容性强,成本低廉,高效可靠的分布式系统[10~11]。
本文基于Hadoop 设计构建一个物联云监控系统,并给出了原型系统和实验验证。该系统由物联自组网和物联云平台两大子系统组成,物联自组网采用无线传感网技术,采用多种传感器技术采集和检测环境数据,利用GPRS 技术实现无线传感网与传统电信网络之间的数据传送[12];物联云平台采用Windows 网络编程技术实现存储网关实现电信网络与互联网之间的数据传输,采用Hadoop 技术实现云计算平台实现对监测数据的分析和处理,采用JavaEE 技术实现检测数据和数据应用程序的可视化[13]。该系统充分结合了物联网技术和云计算技术的优点,能够实现环境数据的实时监控和海量监控数据的处理和分析。希望能够对于改善监控手段和提高物联网数据处理和数据分析能力有所借鉴。
本物联网监控系统体系由两大部分组成,分别为物联自组网和物联云平台。如图1 所示。
图1 物联网监控系统体系图
其中物联自组网由若干个数据采集节点和一个中继节点组成,形成一个无线传感网络两类节点通过射频天线模块形成一个星型拓扑网络。数据采集节点包括传感单元,网内通信单元等。传感单元有多种环境传感器,用以采集环境数据(包括光照强度传感器,空气温湿度传感器和土壤空气温湿度传感器)。网内通信单元,用以将其采集到的数据传输到中继节点。中继节点包括网内通信单元,数据显示单元,远程通信单元等[14]。数据显示单元用以实时显示自数据采集节点接收到的数据;网内通信单元实现节点间的通信。
物联云平台由上位机服务器,云计算平台和Web服务器组成。上位机服务器作为数据网关,负责与物联自组网的网络通信,接收物联自组网发送过来的数据,为了保证数据持久化,采用数据库技术保存这些接收到的数据[15]。云计算平台负责对上位机服务器接收到,持久化保存下的数据进行分析和处理。Web 服务器负责对上位机服务器接收到数据和云计算平台的数据分析结果进行可视化展示。
物联自组网采集环境中的数据并将其上传到服务器,是物联云监控系统的重要组成部分。物联自组网有两类节点组成,数据采集节点和中继节点。接下来将从硬件和软件两方面介绍这两个节点。
数据采集节点采用STC89C52RC 作为主控单元,使用SHT11 空气温湿度传感器和BH1750 光照强度传感器作为传感单元,采用MC13213 射频模块来作为网内通信单元[16],主控单元通过通用I/O从传感单元获取所要的数据,再通过串口传输给网内通信单元,其硬件结构图如图2所示。
图2 数据采集节点硬件结构图
中继节点采用MSP430F149 作为主控单元,采用MC13213 射频模块来作为网内通信单元,与数据采集节点形成自组网。使用LCD12864液晶作为数据显示单元,实时显示采集到的数据,采用GTM900B 无线通信模块将作为远程通信单元,将采集到数据通过电信网络上传至上位机服务器,其硬件结构图如图3所示。
图3 中继节点硬件结构图
为了实现自组网各节点的功能,必须对于两类主控制器芯片进行程序设计。
数据采集节点的功能在于采集数据和向传输中继节点传输数据。程序首先初始化光照强度传感器和空气温湿度传感器,随后初始化串口并开启串口,随后监听串口,如果接收到中继节点发送的数据采集指令,则开始采集环境中光照数据,温度数据和湿度数据,获取这些数据,将它们进行封装后,再通过串口发送至射频模块,由其将封装后的数据传输至中继节点。
中继节点的功能在于显示数据和接收来自采集节点的数据,和向上位机服务器发送数据。其主程序首先初始化液晶模块和两个串口,串口1 与射频模块通信,串口2 与GPRS 模块通信,随后通过AT 指令控制GPRS 模块连接上位机服务器。连接服务器成功后,开始监控串口1,如果接收到数据采集节点传输过来的数据,将封装在AT指令中,向串口2 转发,随后解析源数据并将其显示在液晶屏上。
物联云平台由上位机服务器,Web 服务器,和云计算平台组成,接下来分别对这三部分进行介绍。
上位机服务器为一个TCP服务器,能够获取本地IP,监听特定端口,与中继节点建立可靠的连接链路,持续地从中继节点接收数据,并将这些数据保存到数据库中,并且能够与多个中继节点同时通信,且保证各个节点的数据不会混淆。
采用.NET 架构实现这些功能,利用网络套接字实现数据传输,上位机服务器启动后,自动获取本地IP 并开始监听指定的端口,同时新建一个线程池来处理不同节点的连接,某一节点连接到服务器则从线程池中取出一个线程来处理此节点的连接。当接收到从中继节点发来的数据包时,服务器对其进行解析,分析其节点号和数据信息,将主要信息在图形界面上显示;随后根据这些信息构造相应的SQL 语句,将获取的数据存储至数据库中,实现数据持久化。数据库管理系统采用是开源关系型数据库MySQL。MySQL 数据库支持标准SQL 语言,功能强大,高效易用,可以满足本系统的要求。
云计算平台为整个系统提供的数据的分析处理能力,本系统中云计算机平台通过Hadoop 集群来实现,架构如图4所示。
图4 云计算平台体系图
整个集群共有六台服务器,其中一台服务器作为主节点(NameNode),一台作为备份节点(Secondary NameNode),其余四台作为数据节点(DataNode);每台服务器均配置有Intel Xeon E552中央处理器,32G 内存,并且安装64 位CentOS 6.5操作系统。集群服务器通过企业级路由器与外界通信,服务器之间通过千兆交换机进行通信,为了方便对集群服务器进行操作,配置有16 端口多电脑切换器(KVM)[17]。
具体到每一类上节点,主节点负责控制所有的节点,通过JobTracker 和TaskTracker 监视数据节点的心跳及其协调MapReduce计算[18~19];通过SQOOP将数据格式转换成 HDFS 数据格式[20];Hive 服务器负责管理和查询存储在HDFS 中的数据集;通过Oozie控制工作流的调度。为了更好地管理整个集群,在主节点上安装了Cloudera Manager管理系统,该系统能够通过配置参数管理寄存,并监控集群的健康情况,对集群出现的问题进行诊断。备份节点定时到主节点上获取edits 日志文件,并更新到fsimage 上,控制edit 日志文件的规模,一旦它有了新的fsimage 文件,将其拷贝回主节点中;如果主节点宕机,可利用备份节点来恢复主节点。数据节点提供真实文件数据的存储服务和MapReduce 计算。数据节点响应来自客户机的请求和来自主节点的命令。当执行MapReduce 作业时,主节点上Job-Tracker 会激活数据节点上的TaskTracker,通过心跳与之通信,数据节点上的TaskTracker 接收作业,并执行每一个任务,同时反馈执行状态给JobTracker[21]。
本系统提供一个网站来更好地呈现数据和实现节点管理,网站采用MVC 模式开发,网站前端采用Bootstrap 架构来实现,能够提供一个友好的界面;网站后端采用structs2 架构,实现用户登录和数据的增删改查。
本文实现的物联自组网由两个数据采集节点和一个中继节点组成,数据采集节点不至于实验房间内,中继节点布置与实验房间外,两个数据采集节点相距30m,它们与中继节点的距离均为50m。两类节点的实物图如图5 所示(左为数据采集节点,右为中继节点)。
图5 物联自组网节点图
上位机服务器接收下位机传输过来的数据,并将数据存入数据库中,供系统中其他组件调用,它部署于物联云平台的入口。上位机服务器工作效果如图6所示,在配置服务器的IP地址和端口后启动服务器,服务器即开始向下位机提供服务。
图6 上位机服务器工作图
Web 服务器负责呈现数据和接受数据分析请求,是整个系统对外交互的接口。能够时实时采集到的传感器数据,包括光照,温度和湿度数据。还可以查询到历史数据和利用云计算平台对数据进行分析,并展示分析结果,图7 是历史数据查询的数据展示图。
图7 数据信息网页图
Hadoop 集群是整个物理云平台的核心。集群主机配置如图8 所示:整个集群由六个节点组成,包括一个主节点(master),一个备份节点(secondnn)和四个数据节点(slaves0x),六个节点被组织在同一个域中,主节点可以通过心跳与数据节点通信。
图8 集群主机配置图
整个集群使用Cloudera Manager来管理各类云计算组件,并对集群中各类资源,如CPU,内存,I/O消耗等参数进行监控。对集群信息的管理情况如图9所示。
图9 集群信息管理图
本文设计并实现了一个基于Hadoop 构建的物联云监控系统,采用无线传感技术构建物联自组网实现对于环境数据的实时监控,并且能够利用Hadoop 云计算平台实现对海量监控数据的处理和分析。该系统界面简洁,功能实用,能够推广应用于智能家居、工业监控、智能电网、等物联网应用领域。