基于Hadoop的温室无线传感网络数据采集与管理系统
2019-04-26阮进军
阮进军
(安徽商贸职业技术学院电子信息工程系 安徽芜湖 241002)
近年来,温室技术在高附加值农业产业中得到了普遍应用。相对大田种植,温室种植更加注重环境综合数据监控,只有准确获得温室环境综合数据,才能精准调控农作物生长环境。随着时间的推移,采集到的温室环境参数将达到海量级,这些数据中既包括温湿度、光照度等传感器采集的环境数据,也包含图像、视频等多媒体数据,数据量大且结构复杂。传统关系型数据库的扩展性、共享性低难以满足海量数据存储及查询需求,分布式HBase数据库对数据类型不敏感且安全性高,可以很好的解决上述矛盾。
一、系统方案设计
(一)系统体系结。基于Hadoop的温室无线传感网络数据采集与管理系统应用于种植农场中的多个温室大棚,系统结构如图1所示。每个单体温室大棚采用ZigBee 技术,将数据传输至嵌入式主机进行初步处理后通过网络传输至数据中心的服务器集群,实现了对温室环境数据的采集和存储。用户通过手机、终端等设备不仅可以监控温室环境状况、查询温室历史数据,还可以通过APP手动控制风机、红外灯、滴灌阀门等执行部件的继电器对温室环境进行调控。单体温室监控系统结构如图2所示。
图1 系统结构图
图2 单体温室监控系统结构图
本系统在每个温室布设了11 个ZigBee 节点,每个ZigBee节点将采集的空气温湿度、土壤湿度、光照度及二氧化碳浓度等环境数据,上传至ZigBee协调器节点,ZigBee协调器节点使用RS232串口将数据发送到嵌入式主机,嵌入式主机通过路由器或者3G/4G网络利用Internet传送至服务器集群;用户下达的调控指令则通过嵌入式主机经ZigBee 协调器节点由ZigBee节点的继电器负责执行。
图2所示的嵌入式主机接收处理的主要数据包括:①各传感器节点采集的温湿度、光照强度等环境数据,②摄像头采集的视频、图像数据,③嵌入式主机自动记录的关键生产性信息。(例如温室管理员手动调节温室环境过程中,操作的风机、滴灌阀、红外灯等执行部件编号及其运行时间等数据。)这些数据中的①③数据存入系统数据库,②的视频、图像数据存入到Hadoop 集群的HDFS 文件中,数据库中只记录其文件路径。
(二)系统服务器集群设。系统服务器集群包含Web服务器、管理服务器、HDFS文件系统以及MySQL+HBase混合存储模式组成的系统数据库,HDFS 文件系统同时也是HBase 的底层文件系统。管理服务器负责服务器集群维护以及任务的调度,Web服务器是用户终端、嵌入式主机以及数据库服务器之间的媒介,它使用 Tomcat为用户提供基于B/S模式的服务。服务器集群架构如图3所示。
图3 服务器集群架构
(三)系统数据存储设。由于现代农场的温室空间较大,以常见的2.5亩的温室为例,覆盖面积大约1700m2,使用单个传感器不能有效的监测温室的整体环境状态,因此本系统布置了11个ZigBee节点,每个节点分别布设了空气温湿度、土壤湿度、光照度及二氧化碳浓度传感器。传感器1分钟采集一次数据,每个传感器单日的采集数据量有1440条,每个温室单日采集的传感器数据将达到80000条左右,一个拥有十几个温室大棚的种植农场仅传感器数据单日就将超过百万条,随着时间的推移,数据量可能达到PB级甚至更高。传统结构化数据库难以满足如此大规模的数据存储及查询需求。另外各温室中安置的摄像头每日所采集视频、图像数据量也非常庞大,需要海量的存储空间。
Hadoop大数据集群的HDFS分布式文件系统采用主从模式,具有简单灵活、扩展性能强等特点,HDFS采用基于统一尺寸块、多副本、多节点的存储机制简化了系统设计,更加有利于大规模文件的存储和备份。因此采用HDFS 存储视频、图像数据不仅可以满足大规模海量数据的存储还可以保证数据的安全性。基于HDFS文件系统的HBase数据库,具有极强的扩展性和吞吐量,它采用Key/Value方式存储数据,可以在数据量大幅度增加的情况下仍然能保持较好的查询性能。但是HBase数据库在存储和查询小数据量数据时,相对传统关系型数据库MySQL来说效率较差,因此本系统采用MySQL+HBase混合模式数据库存储温室环境数据。
1.MySQL数据库传感器信息表设计。
(1)多传感器数据融合。本系统在每个温室布设了11个ZigBee节点,每个节点都能采集空气温度、空气湿度、土壤湿度、光照度和二氧化碳浓度5种不同类型的环境数据。但是每一种类型的单个传感器采集数据不能全面准确反映整个温室的环境变化情况,为了帮助温室管理员精确掌握温室整体的环境数据,可以综合考虑所有传感器的相互作用,将5种不同类型传感器采集的数据分别进行数据融合得到能分别代表整个温室空气温度、空气湿度、土壤湿度、光照度和二氧化碳浓度的综合数据。
自适应加权数据融合算法由于实现简单,精度较高,只需要多传感器的测量值,即可给出均方误差最小的数据融合值。[1]考虑到嵌入式主机数据处理能力有限,因此本文采用自适应加权融合算法对采集到的传感器数据进行融合,其结构如图4所示。[2]
图4 自适应加权融合算法结构图
以融合空气温度为例,若11 个节点温度采样值分别为x1,x2,…x11,为每个温度采样值分配权值分别为ωi(i=1,2,……11),则融合完成的温度结果为:
其中
由于各个节点温度传感器彼此独立,因此总均方差为:
将权值ωi代入式①即可得到11个温度传感器采样值的融合值X。同理可以计算空气湿度、土壤湿度、光照度和二氧化碳浓度采样值的融合值。
(2)MySQL 数据库温室传感器信息表设计。经过上述的传感器数据融合处理后,不仅能根据多个传感器采集的环境数据融合得到温室整体环境数据,同时也将每个温室传感器采样数据量压缩为原数量的1/11,由于MySQL数据库在数据量较小时查询能力优于HBase,同时考虑到温室农作物在不同的生长周期对环境需求有较大差异(以种植番茄的温室为例,按照番茄的生长规律分为定植后的缓苗期、营养生长期和开花结果期,其中缓苗期需要密闭温室5至6d,其余生长周期从30d至90d不等。[3]),因此可以将MySQL数据库的最长存储周期设置为温室番茄的最小生长周期(5d),在这个存储周期整个种植农场的数据记录大约为几十万条左右,5d之前的数据则保存至HBase。MySQL存储和查询几十万条数据的效率远高于HBase,因此也提升了整个系统的效率。具体关系型传感器信息表可以设计成如表1所示:
表1 MySQL数据库传感器信息表
空气湿度土壤湿度光照度二氧化碳浓度ghHumidity ghShumidity ghLlluminance ghCO2 float float float float
用户在发起历史数据查询请求后,系统将根据用户查询的时间范围判断是否在5d之内,是则通过My SQL数据库进行查询,否则通过HBase数据库查询。
2.HBase数据库表设计。HBase是一个面向列的、稀疏、分布式、持久化存储的多维排序映射表,HBase 表的索引是行关键字(RowKey)、列簇名、列关键字和时间戳[4]。即HBase的表的组成是行键(RowKey):列簇(Column Family):列(Column):时间戳(Time tamp),每个单元格(Cell)由上述RowKey、Column Family、Column和Time tamp确定,单元格中存储的数据类型不做限定,以字节形式存放。HBase集群包含一个Master服务器和若干个Region Server服务器,具体数据存储在Region Server服务器上。Region基于HDFS文件系统,HBase表可以拥有多个Region,每个Region不可以跨服务器。
(1)温室传感器信息表设计。由于MySQL数据库适用于量级较小的数据存储和查询,本系统将5d 前的温室环境数据存储到HBase数据库中。根据上述HBase特性,它更适合基于RowKey的行扫描形式查询,因此可以将HBase数据库中和MySQL数据库对应的温室传感器信息表的RowKey设计为“种植农场编号+温室编号+采样时间”,其中的编号要求用地名字母缩写和数字组合的方式编制(例如whyj01),并要求RowKey 的长度保持一致,采用此种方式可以使RowKey按照字典排序后,相近区域的信息能存储到相同位置;将监测的5个环境参数(空气温度、湿度、土壤湿度、光照度及二氧化碳浓度)作为Column Family,HBase 将会把同一种类型的数据尽量放在同一台服务器,查询某一种类型的数据的过程中也会避免加载其它无关数据,从而有效提高了HBase查询效率。
例如:农场编号为whyj01、温室编号为gh01、采样时间为2015年5月1日零时,温度传感器的融合值为23oC。其键值对如表2所示:
表2 键值对存储
其中行键为“whyj01gh0120150501000000”,列簇:列为“ghTemperature:temperature”,时间戳为“1174184630753”,需要存储的具体数据是“23”。
(2)节点传感器信息表设计。HBase 具有很强的扩展性,非常适合存储海量数据,因此可以将温室中的每个ZigBee 节点的传感器采集数据不做任何处理,直接存储到HBase数据库的传感器信息表,可供后期数据融合及数据挖掘所用。节点传感器信息表的设计理念和上述温室传感器信息表一致,设计Row Key时只要增加1个采集节点信息即可,具体形式是“种植农场编号+温室编号+采集节点编号+采样时间”。
例如:农场编号为whyj01、温室编号为gh01、采集节点zb01、采样时间为2015年5月1日零时,湿度采样值为75%。其键值对如表3所示:
表3 键值对存储
(四)基于HBase历史数据改进的自适应加权融合算法。由自适应加权融合算法中的式④可以获知,值权ωi受到每个传感器的的影响。与传感器精度有关,传感器受电池电量损耗以及环境因素干扰等因素影响,精度会发生改变,因此的值也随之而变化。由于系统MySQL 数据库的最长存储周期设置为5d,相对时间间隔较短,可以忽略电池损耗的影响,同时在一个番茄的生长的最小周期之内,温室环境变化不大。因此本系统设计每隔5d,根据HBase数据库中节点传感器采集的历史数据更新每个传感器权值为ωni。
以指定节点温度传感器为例,从HBase数据库中查找与当前时间最近,且节点所在温室整体温度基本稳定的0.5小时采样区间(在此采样区间传感器按照系统预设每分钟需采样1次,共计30次采样数据),将这30次采样数据作为样本,对节点温度传感器的权值进行更新。
改进的自适应加权融合算法(以温度传感器为例)具体步骤如下:
②同理计算温室中其余各节点的温度传感器,在相同采样区间的方差(i=1,2,…11)
③分别根据式⑥计算11个节点的温度传感器基于30个历史采样的权值ωi'
④将传感器当前值权和基于历史采样的值权ωi'按照1:1的比值组合,更新权值为ωni。
⑤将ωni取代原有权值,则可以根据式①计算出温度传感器融合值X。
二、系统应用
(一)实时监测。用户通过手机、终端等设备通过APP访问系统,选择需要监控的具体农场温室,实时查看当前温室经过数据融合的环境数据,如图5所示。当温度、湿度、光照度等参数超过农作物适宜生长的区间范围时,显示红色警告异常信息,便于用户及时发现。用户通过点击警告按钮跳转到图6所示界面对温室环境进行调控。
图5 温室环境监测界面
(二)温室环境控制。用户点选执行部件虚拟按钮,通过ZigBee节点的继电器连通执行部件电路,手动调节温室环境使各项数据恢复正常,如图6所示。系统将会把用户对执行部件的操作过程数据(执行部件编号、运行时间等信息)记录到数据库,作为数据挖掘算法的原始数据。
图6 手动调节温室环境
(三)历史数据查询。用户可以在图5的实时监测界面通过点击“历史”按钮查询各传感器的历史数据。系统将根据用户选择需要查询的时间段,判断选择不同的数据库显示温室的历史数据,若时间段在5d之内则调用MySQL数据库数据进行查询,否则使用HBase数据库进行查询。如图7所示。
图7 历史数据查询
三、结语
本文利用ZigBee、无线传感器、物联网以及基于HBase历史数据改进的自适应加权融合算法等技术实现了温室环境数据的实时采集和温室环境监控,采用MySQL+HBase混合模式数据库实现了大规模海量数据的可靠存储和高效查询,不仅可以协助温室管理员实时、高效的监测、管理温室环境,还为后续数据融合及数据挖掘提供了数据支撑,对大规模温室生产具有积极的意义。