基于NoSQL数据库的农田物联网云存储系统设计与实现

2019-01-17 08:19:58马新明
农业工程学报 2019年1期
关键词:海量事务结构化

许 鑫,时 雷,何 龙,张 浩※,马新明,3



基于NoSQL数据库的农田物联网云存储系统设计与实现

许 鑫1,2,时 雷1,何 龙1,张 浩1,2※,马新明1,2,3

(1. 河南农业大学信息与管理科学学院,郑州 450002;2. 河南粮食作物协同创新中心,郑州 450002; 3.农业部黄淮海农业信息技术科学观测实验站,郑州 450002)

为了解决农田物联网大量图像、视频和传感器等结构化和非结构化数据实时处理与写入问题,该文基于分布式存储与NoSQL(Not Only SQL)技术,结合农田物联网数据特征,利用HDFS(Hadoop Distributed File System)和HBase(Hadoop Database)存储非结构化和结构化数据,基于Redis缓存服务,设计了三层物联网数据云存储框架,实现了海量农田物联网数据存储中的业务处理、事务处理、图片打包与索引、负载均衡等关键技术。面对复杂业务下的事务数据一致性,该文采用基于HLock的乐观锁机制,实现了HBase对强事务性的支持,经过与传统MySQL集群事务对比测试,当数据量级在500万时,数据读取效率提升达35.75%。为了提高农田物联网中大量的小图片和小文件处理效率,基于图片打包合并策略,利用SequenceFile技术实现物联图片的快速索引读写技术,与原生HDFS存储效率相比,读写效率提升30%以上。该研究可以为海量农业物联网数据的存储和管理提供技术参考和理论支撑。

农田;数据存储系统;管理;物联网;NoSQL;Hadoop;HBase;云存储

0 引 言

随着物联网技术的发展,物联网在农田数据采集、环境监测、智能灌溉、灾害和苗情诊断、精细作业等生产过程中得到了广泛应用[1-7]。学界对农田物联网系统的设计、组网、数据传输、实现等方面也有了长足的发展[8-14],同时农田物联网中的光、温、土壤墒情、pH值等传感器和视频监控设备产生了海量的数据,如何高效存储和管理海量数据是当前农业物联网研究的核心[15-21]。

农田物联网数据融合了作物生长的地域性和季节性等特征,导致农田物联网在应用层面上需考虑地域、天气、续航、传输接口与设备等因素的影响。尤其是在农田物联网系统的设计上,需要兼顾作物产前、产中和产后的各个环节。其系统的动态扩展性要求较高,对数据存储模型的通用性要求也较高。目前,农田物联网数据的海量、异构及非结构趋势明显[22]。

在存储农田物联网中的海量数据方面,纵向增加数据节点扩容能力有限,且在海量数据处理会造成性能瓶颈,而采用分布式云存储方案,通过横向扩展动态接入新的存储节点,是一种理想的解决方案。以Hadoop生态圈为代表的开源分布式存储与计算平台逐渐被各行业认可和应用,其具有海量存储、高容错性、高性能、高扩展性等特点,可满足当前农田物联网海量数据存储与管理的需求。

农田物联网中产生的大量小文件,如图像、传感器文本和视频等非结构化数据的实时处理与写入,是传统关系数据库难以解决的问题。以HBase为代表的NoSQL(Not Only SQL)数据库产品的分布式、面向列、可伸缩的特点,对图片、视频等非结构化数据的存储具有天然的优势,同时,农田物联网数据天然的异构性,关系型数据库的关系模型难以满足新传感器的接入,不利于系统扩展,而NoSQL技术支持动态的数据模型,可以应对农田物联网数据采集设备种类繁多、类型繁杂以及后期扩展问题[23]。

本文基于Hadoop生态圈,利用分布式云存储及NoSQL技术,构建海量存储、高性能、安全可靠、易扩展的农田物联网数据云存储系统,并深入剖析了农田物联网的存储事务一致性、小文件处理等问题,以期为海量农田物联网数据存储提供解决方案。

1 系统框架设计

从农田物联网数据特征出发,结合Hadoop平台,考虑系统的安全可靠、高效读写、数据转换、事务处理、小文件处理、缓存策略、负载均衡、成本及扩容等关键因素[24]。自下而上将系统分为3层:存储层、服务层及应用层。系统总体结构如图1所示。

图1 农田物联网云存储系统框架

存储层是农田物联网数据存储模型的最底层,其主要作用是用来持久化存储数据。该层包括分布式文件系统HDFS、面向列的HBase数据库以及Redis缓存模块。HDFS用来存储农田物联网系统中图片、视频等非结构化数据;HBase数据库用来存储农田物联网系统中气象、墒情等结构化数据;Redis数据库用来作为底层存储的缓存服务器[25]。

服务层位于存储层和应用层的中间,作用是为上层的业务处理和下层数据存储访问提供服务。服务层包括事务处理模块、数据转换模块、图片合并与索引模块。事务处理模块用来优化HBase数据库对事务ACID(atomicity,consistency, isolation,durability)特性的支持;数据转换模块是对物联网设备元数据信息的转换,由于多源传感器数据格式不一定一致,尤其是随业务发展新增的传感器,利用数据转换模块将传感器的元数据信息转换成存储模型能够接受的格式,可以有效提高系统的后期扩展性能。图片合并与索引模块用来解决Hadoop在处理海量小文件时的不足,在设计数据存储模型时针对农田物联网采集的海量图片进行合并,并构建合并后的索引方案,将图片元数据信息写到HBase中[26],方便图片的查询。

应用层主要面向农田物联网系统中的各种业务处理并提供统一的数据访问接口。业务处理模块对统一数据访问接口传递过来的指令信息进行判断并确定业务类型。根据农田物联网数据特征将具体业务分为结构化数据读写、文本文件读写、图像读写及视频读写4大类。将应用层单独独立于其他层之上,可以达到业务与服务解耦的目的。

负载均衡模块部署在整个农田物联网数据存储模型中。负载均衡模块在应用层的作用是将前端用户的高并发请求分载到多个服务器上;在服务层作用于MapReduce实现大文件分割与小文件合并等并行处理场景;在存储层的作用是平衡农田物联网数据分配存储节点问题。设计负载均衡模块可以保证服务器集群在处理极端问题时稳定高效的运行[27]。

2 关键技术设计

2.1 业务流程设计

针对结构化数据、文本、图像及视频4大类数据的读写业务需要不同的流程来处理。

1)数据写入业务处理

业务处理模块需要对统一数据访问接口写入的数据进行类型判断。农田物联网系统中的数据类型主要包括气象和墒情等结构化数据、图片、视频及文本文件4大类。其中文本文件又包括Excel文件、XML文件与TXT文件等。数据写入业务处理流程如图2所示。

当写入数据类型为图片时,采取图片“合并”策略存储。首先把文件写入图片队列,然后判断图片队列累计文件大小是否够一个“Block”的大小,如果不够一个“Block”的大小,等待后续图片写入;如果大于一个“Block”的大小,进行图片合并,建立索引信息并把图片元数据信息写入HBase中,图片数据写入HDFS和Redis缓存服务器中[28]。

当写入数据类型为视频时,判断其大小是否超过一个“Block”的大小,如果小于一个“Block”的大小,直接按照一个“Block”来处理;如果大于一个“Block”的大小,采用Hadoop提供的“分块”策略进行处理,并将索引信息直接写入NameNode主节点中。视频数据最终写入HDFS和Redis缓存服务器中。

当写入数据类型为文本文件时,需要服务层数据转换模块中相应的Parser解析进行处理。

当写入数据类型为气象、墒情等结构化数据时,通过结构化数据访问接口(structured data access interface)直接将数据写入HBase数据库及Redis缓存服务器中。

图2 数据写入业务处理流程

2)数据读取业务处理

业务处理模块在处理数据读取业务时流程优先访问Redis缓存数据,并进行判断是否需要需要访问HBase和HDFS数据,如图3所示。

图3 数据读取业务处理流程

从模型存储层可以看出,农田物联网数据都是存储在HDFS、HBase及Redis缓存服务器中,其中Redis缓存服务器读取效率最高,所以优先访问Redis缓存数据库中的数据;若Redis数据库中没有数据,再访问HBase数据库中的数据;若HBase中也没有要读取的数据,则访问Hadoop底层HDFS中的数据。

2.2 事务处理

由于HBase一般搭建在分布式集群环境下,其在跨行事务及长事务处理的可靠性上受到了制约,只能提供基础级别的弱事务性处理,无法对跨行事务及长事务精准有序地处理,很难保证像海量数据分析等复杂业务下的数据一致性。目前,解决NoSQL数据库跨行事务及长事务处理的方法主要有2种方案:一种是分布式有锁方案,如Google公司为了解决BigTable海量数据的增量更新操作开发的Percolator[29]框架;另一种是集中式无锁方案,如为分布式key-value数据库提供强事务性支持的Omid开源框架[30]。

分布式有锁方案通过侵入数据方式在表结构中增加锁协议算法,采用该方案可以保证事务执行的强ACID特性,但很难避免因为某个事务锁阻塞影响其他事务的正常运行,在性能及时效性上会受到影响。因此,在不改变HBase底层存储的基础上,采用牺牲部分性能保证整个存储系统可靠性的分布式有锁方案。分布式有锁方案又分为悲观锁和乐观锁2种。

悲观锁是大部分关系型数据库提供的锁机制,实现了事务的完全串行化。但是由于悲观锁的弱并发性能,尤其是在高并发的情况下,悲观锁的额外开销是无法承受的。乐观锁在一定程度上解决了悲观锁的弊端,通过乐观锁机制可以有效降低长事务中加锁的额外开销,可以有效提高系统的整体性能,增加系统的整体吞吐量。所以,在对性能及吞吐量要求较高 HBase数据库事务处理中,乐观锁方案是较好的选择。

本文通过乐观锁来保证HBase长事务的ACID特性,需要在HBase表结构中添加一个HLock列,HLock列是一种结构体,其结构设计如表1所示。

通过设计的HLock锁结构体,可以在不修改HBase底层存储结构的前提下通过事务处理模块保证农田物联网系统中对强事务性的要求,事务处理模块包括读数据和写数据2个流程。

表1 基于乐观锁的HLock结构体

读数据流程如下:

1)先处理单元读取事务中所需数据的HLock列,若其State状态值为FREE,取得并返回数据结果;

2)若HLock列的State状态值不为FREE,查看锁结构体中ExpiryTime的值,若ExpiryTime值还未过期,则回滚本事务;

3)若ExpiryTime值已经过期,则回滚此HLock所属的上一个版本事务数据,清除过期事务所有HLock值,然后执行当前事务。

写数据流程如下:

1)先处理单元读取事务中所需数据的HLock列,若其State状态值为FREE,则跳转到4中;

2)若HLock列的State状态值不为FREE,查看锁结构体中ExpiryTime的值,若ExpiryTime值还未过期,则回滚本事务;

3)若ExpiryTime值已经过期,则回滚此HLock所属的上一个版本事务数据,清除过期事务所有HLock值,然后执行当前事务;

4)在ExpiryTime值未过期的情况下,把写入的数据先存入缓存模块中,等待写入数据库;

5)在事务提交阶段,若操作数据的HLock锁没有被改变,则把缓存中的待写入数据存储到HBase数据库中。

事务处理模块的完整流程如图4所示。

整个事务提交过程分2个阶段:Prewrite阶段与ChangeState阶段。事务提交详细流程如下:

1)在Prewrite阶段,事务处理模块随机选择本事务中的一行数据,将其设置为主锁,其余行设置为副锁;

2)事务处理模块生成PrewriteTimestamp及CurrentTimestamp 2个时间戳;

3)事务处理模块将所有PUT操作的行数据从缓存中写入HBase,更新其HLock的状态State为PREWRITTERN;

4)事务处理模块将所有REMOVE操作的行数据HLock的状态State为PREWRITTERN,此时不做DELETE操作;

5)在ChangeState阶段,事务处理模块先将主锁所在行锁状态State改为COMMITTED状态;

6)事务处理模块遍历本事务涉及的所有行,如果Operation类型为REMOVE,进行DELETE操作,删除REMOVE标志行所有版本的数据,不可恢复,因此将REMOVE操作放在COMMITTED之后;

7)将所有非主锁所在行状态State改为FREE;

8)改变主锁State状态为FREE;

9)完成事务。

图4 事务处理流程

在宕机处理上,通过HLock锁的设计,可以保证HBase在长事务读写过程中的事务性,为了降低线程阻塞带来的额外开销,事务处理模块并不需要定时主动清理坏死的HLock锁,而是将该任务交给新事务去处理。通过可配置ExpiryTime属性可以获取旧事务是否为线程阻塞事务。如果ExpiryTime超时,新事务会首先检查超时事务的主锁,若主锁状态为COMMITTED,则说明超时事务已经提交,事务处理模块可以根据超时事务HLock列的副锁信息完成整个事务的提交过程;若主锁State标志为其他状态,则事务处理模块根据主锁信息完成超时事务的回滚。

在集群时间同步上,由于所有的TimeStamp都是由系统机器的本地时间生成,在一个庞大的集群系统中,很难保证所有机器节点时间的一致,这就有可能因为时间混乱造成事务的错误。针对事务对时间的高准确性与高统一性要求,在本文设计方案中,采用在Hadoop集群中搭建NTP服务器[31]的方式为集群提高全局唯一的时间戳服务,以保证各个机器节点的时间一致性。

2.3 图片合并索引设计

由于农田物联网图片中大多是比较小的文件,针对海量小文件图片合并算法有4种处理方法,分别是TextInputFormat、CombineFileInputFormat、SequenceFile和Harballing[32]。由于这4种处理方法的应用场景不同,考虑到需要重新设计海量图片的索引信息,选择了更为合适的SequenceFile技术。SequenceFile是序列化后的二进制文件,使用该技术的优点是它记录的是形式的键值对列表,使用SequenceFile技术将多张图片合并成一个“Block”时,key可以用来记录图片的名称,value可以用来记录图片的内容。并且SequenceFile技术支持数据压缩,有利于节省磁盘空间,同时还能减少网络传输的时间。图片合并流程如图5所示。

由于SequenceFile中使用FileName作为key,File contents作为value,每一个文件都可以通过FileName映射到SequenceFile中,所以针对图片的FileName进行编码设计。将FileName分为3个部分:BlockID、FileID与offset。

图5 图片合并流程

BlockID代表合并后的SequenceFile所在的“Block”,也代表着DataNode上的一个数据块,NameNode可以根据BlockID信息确定DataNode的地址,一个“Block”中可能包含有多个SequenceFile,每一个SequenceFile又包含这多张图片。所以采用FileID来表示一个“Block”中的哪一个具体的SequenceFile,使用offset来表示图片在一个SequenceFile中的偏移量。

当客户端通过图片文件名向服务端发起读取请求时,首先通过前端处理解析图片文件名,传给服务端BlockID、FileID与offset的值;Master主机可以根据BlockID确定到DataNode主机中的某个“Block”文件并把DataNode地址发送给客户端;根据FileID可以确定该“Block”文件中的某个SequenceFile;根据offset偏移量的值可以确定所要读取图片在该SequenceFile中的位置;最后客户端通过前端解析内容与DataNode地址完成图片的读取。

这样设计可以有效减少HBase数据库中图片元数据的信息,将图片存储信息以编码的方式保存到文件名中,并通过前端文件名解析代码直接实现对DataNode节点的数据访问,可以减少一次去HBase数据库中读取图片存储信息的过程,通过offset偏移量的值可以将磁头直接定位到SequenceFile中图片位置开始读取。

3 系统实现与性能测试

在系统设计的基础上,利用Web Service和物联网数据采集技术,于2016年研发了河南省农田物联网监控系统,系统在许昌长葛、滑县、漯河、南阳方城等县市农田布设60余个农田物联网监测站点,系统实现了小麦生产的全过程物联网实时土壤温湿度、空气温湿度、降雨、风速风向等田间小气候和长势图片的实时监测,其中田间小气候数据,系统运行以来数据规模在30 TB以上,实现了各个站点及设备的管理、物联网数据管理、数据统计分析、可视化展示等功能,数据监控管理界面如图6所示。

图6 河南省农田物联网监控系统界面

该系统利用文中设计存储模型,实现了物联网数据的高效存储和事务控制,同时利用设计的图片打包策略,为后续的数据检索、分析提供了快速有效的数据查询机制。

另外,为了验证该文技术方案的性能,基于不同数量级的数据对存储模型,图片合并策略进行了性能测试。测试环境:千兆网络、Inter Xeon(R) E5-4603V2处理器、32 GB内存、5TB硬盘组成6节点Hadoop2.8集群环境下,搭建3节点HBase数据库。

3.1 结构化数据存储方案性能验证

农田物联网中的土壤墒情和气象传感器数据多是结构化的数据,基于不同数量级数据与传统关系型数据库集群的性能进行了对比测试,测试步骤如下:

1)从物联网监测系统中随机抽取气象数据,将数据分为5组,数据量分别是5万条、50万条、150万条、300万条、500万条;

2)将数据通过Structured Data Access Interface存储接口写入存储系统中;

3)将数据写入相同硬件配置的3节点MySQL集群中;

4)分别对MySQL集群和本文Hadoop存储系统进行10次查询操作的查询时间取平均值。

MySQL与Hadoop集群查询性能对比如图7所示。

可以看出,当数据规模较小时,Hadoop集群效率无法体现,甚至还落后于相同硬件配置下的MySQL集群。在300万条数据级别时,MySQL集群与Hadoop集群效率基本持平。在500万条数据级别时,Hadoop集群的效率就明显高于MySQL集群,数据查询效率提升达35.75%。

图7 MySQL集群与Hadoop集群数据查询性能对比

由于HBase是基于HDFS的NoSQL数据库,在请求提交和处理过程中涉及到Hadoop的初始化、调度等因素,导致其在处理小数据量优势不明显。但在高吞吐量、高并发的情况下,Hadoop集群处理海量数据的优势得以充分体现,其平滑扩容能力可以实时动态地增加集群机器数量。因此,基于NoSQL的农田物联网结构化数据存储方案在处理高并发量数据场景中是可行的。

3.2 非结构化数据存储方案性能验证

在非结构化数据存储方案性能验证部分,针对图片合并策略性能验证,即验证原生HDFS与本文使用图片合并索引的HDFS在读写效率上的对比测试。

1)取物联网系统采集的苗情图像共计10万张,大小在200~300 kB之间;

2)将这些图片以不同数量规模存入原生HDFS和采用图片合并索引的HDFS中;

3)分别进行10次随机读写操作,取10次平均值为最终时间消耗。读操作时间记录为sort,写操作时间记录为store,读写次数记录为,平均读写时间计算规则为=(sort+store)/。

原生HDFS与本文方案平均读写性能验证对比如图8所示。

图8 图片读写性能对比

可以看出,随着图片数量的不断增加,原生HDFS与本文方案读写平均时间差距逐渐增大。基于SequenceFile文件合并技术、图片文件名的设计及索引优化策略后的HDFS读写平均速度相比未优化的原生HDFS性能提升30%以上,更适用于农田物联网中海量图片存储的场景。

目前系统在河南省农田物联网监测中进行了应用,在小麦生产过程中,提供实时的数据入库存储、管理、可视化,接入物联网监测站点60余个,每天产生农田空气、土壤温湿度等数据量达10 000余条,产生物联网图片文件每天8 000余个,并在考虑接入更多的传感器和监测站点,系统运行状况良好。

系统可以广泛应用于农田环境监测,考虑的在以后的研究中,可以结合分布式计算与机器学习技术对物联网数据进行实时的计算,为农业生产提供实时的灾害预警与决策服务。

4 结 论

本文基于Hadoop生态圈,利用NoSQL技术,设计了海量农田物联网数据存储模型,对农田物联网数据存储中的分布式数据读写、事务处理、图片合并索引等关键技术进行设计与实现,研发了海量农田物联网数据存储管理系统。

考虑农田物联网实际应用场景,利用HDFS存储农田物联网系统中图片、视频等非结构化数据,HBase用来存储农田物联网系统中气象、墒情等结构化数据,实现了结构化和非结构化数据的一体化存储与管理。

为了保证海量农田物联网数据事务数据的一致性,本文设计的基于乐观锁的HLock分布式事务机制,实现了HBase对强事务的支持,经过与传统MySQL集群对比测试发现,当数据量级达500万时,数据读取效率提升达35.75%。为了提升农田物联网中大量的小图片和小文件分布式读写效率,利用SequenceFile技术图片小文件打包合并存储策略,实现农田物联网图片的快速存取,经测试,采用该技术的HDFS读写速率比原生HDFS提升30%以上。

综上所述,基于NoSQL的海量农田物联网数据存储方案可以满足农业物联网海量、实时数据的存储管理需求。

[1] 李瑾,郭美荣,高亮亮. 农业物联网技术应用及创新发展策略[J]. 农业工程学报,2015,31(增刊2):200-209. Li Jin, Guo Meirong, Gao Liangliang. Application and innovation strategy of agricultural Internet of Things[J]. Transactions of the Chinese Society of Agricultural Engineering (Transactions of the CSAE), 2015, 31(Supp.2): 200-209. (in Chinese with English abstract)

[2] 张向飞. 基于农业物联网的数据智能传输与大田监测应用[D]. 上海:东华大学,2016. Zhang Xiangfei. Intelligent Data Transmission And Field Monitoring Application Based on Agricultural Internet of Things[D]. Shanghai: Donghua University, 2016. (in Chinese with English abstract)

[3] 杜克明,褚金翔,孙忠富,等. WebGIS在农业环境物联网监测系统中的设计与实现[J]. 农业工程学报,2016,32(4):171-178. Du Keming, Chu Jinxiang, Sun Zhongfu, et al. Design and implementation of monitoring system for agricultural environment based on WebGIS with Internet of Things[J]. Transactions of the Chinese Society of Agricultural Engineering (Transactions of the CSAE), 2016, 32(4): 171-178. (in Chinese with English abstract)

[4] 陈晓栋,原向阳,郭平毅,等. 农业物联网研究进展与前景展望[J]. 中国农业科技导报,2015,17(2):8-16. Chen Xiaodong, Yuan Xiangyang, Guo Pingyi, et al. Progress and prospect in agricultural internet of things[J]. Journal of Agricultural Science and Technology, 2015, 17(2): 8-16. (in Chinese with English abstract)

[5] 王萍,赵宏亮,李佩林,等. 农业物联网技术在大豆生产中的应用[J]. 大豆科学,2018,37 (5):809-813. Wang Ping, Zhao Hongliang, Li Peilin, et al. Application of agricultural internet of things in soybean production[J]. Soybean Science, 2018, 37(5): 809-813. (in Chinese with English abstract)

[6] 瞿荣锦,韦琮,赵丽娟. 基于物联网技术的农田环境监测系统的研究与构建[J]. 农业开发与装备,2018(9):104-105.

[7] 琚书存,程文杰,徐建鹏,等. 农业气象物联网数据采集系统[J]. 计算机与现代化,2018(9):105-109,117. Ju Shucun, Cheng Wenjie, Xu Jianpeng, et al. Data acquisition system for agricultural meteorological IOT[J]. Computer and Modernization, 2018(9): 105-109, 117. (in Chinese with English abstract)

[8] 宋健玮. 农田灌溉监控系统的设计与实现[D]. 济南:山东大学,2017. Song Jianwei. Design and Implementation of Farmland Irrigation Monitoring and Control System[D]. Jinan: Shandong University, 2017. (in Chinese with English abstract)

[9] 刘艺蕾. 农业物联网监控管理系统设计与实现[D]. 北京:北京邮电大学,2016. Liu Yilei. The Design and Implementation of Agricultural IOT Monitor and Management system[D]. Beijing: Beijing University of Posts and Telecommunications, 2016. (in Chinese with English abstract)

[10] 薛文龙. 基于物联网的农田环境信息采集控制与预警系统[J]. 江苏农业科学,2017,45(9):195-198.

[11] 蔡绍堂,麻硕琪,乐英高,等. 一种农田环境远程监测系统设计与实现方法[J]. 四川理工学院学报:自然科学版,2018,31(2):69-74. Cai Shaotang, Ma Shuoqi, Le Yinggao, et al. Design and realization of remote monitoring system for farmland environment[J]. Journal of Sichuan University of Science & Engineering: Natural Science Edition, 2018, 31(2): 69-74. (in Chinese with English abstract)

[12] 姜岩,段杰,王茂励,等. 基于物联网技术的水肥一体化智能管理系统[J]. 现代农业科技,2018(16):279-281. Jiang Yan, Duan Jie, Wang Maoli, et al. Intelligent system of water and fertilizer based on internet of things technology[J]. Modern Agricultural Science and Technology, 2018(16): 279-281. (in Chinese with English abstract)

[13] 徐识溥,刘勇,李双喜,等. 基于农业物联网的农田土壤环境监测系统的研究与设计[J]. 中国农学通报,2018,34(23):145-150. Xu Shipu, Liu Yong, Li Shuangxi, et al. Research and design of farmland soil environmental monitoring system based on agricultural IOT[J]. Chinese Agricultural Science Bulletin, 2018, 34(23): 145-150. (in Chinese with English abstract)

[14] 李雅丽,魏峰远,陈荣国,等. 基于物联网和WebGIS果园监测系统的设计与实现[J]. 测绘与空间地理信息,2018,41(8):75-77,81. Li Yali, Wei Fengyuan, Chen Rongguo, et al. Design and application of orchard environment based on internet of things and WebGIS[J]. Geomatics & Spatial Information Technology, 2018, 41(8): 75-77, 81. (in Chinese with English abstract)

[15] 郝行军. 物联网大数据存储与管理技术研究[D]. 合肥:中国科学技术大学,2017. Hao Xingjun. Reseach on Technology of Storage and Management of IOT Data[D]. Hefei: University of Science and Technology of China, 2017. (in Chinese with English abstract)

[16] 陈威,郭书普. 中国农业信息化技术发展现状及存在的问题[J]. 农业工程学报,2013,29(22):196-205. Chen Wei, Guo Shupu. Current situation and existing problems of agricultural informatization in China[J]. Transactions of the Chinese Society of Agricultural Engineering (Transactions of the CSAE), 2013, 29(22): 196-205. (in Chinese with English abstract)

[17] 赵立波,李凌霞,王旭. 物联网海量异构传感器采样数据存储与查询处理[J]. 软件导刊,2017,16(12):182-183,187. Zhao Libo, Li Lingxia, Wang Xu. Storage and query processing of massive heterogeneous sensorsample data in internet of things[J]. Soft Guide, 2017, 16(12): 182-183, 187. (in Chinese with English abstract)

[18] 郑建忠,郑建荣. 一种基于云计算技术的物联网平台设计[J]. 电力信息与通信技术,2018,16(6):57-61. Zheng Jianzhong, Zheng Jianrong. Design of internet of things platform based on cloud computing technology[J]. Electric Power ICT, 2018, 16(6): 57-61. (in Chinese with English abstract)

[19] 刘佩增. 面向物联网多维度数据的多级存储系统的设计与实现[D]. 北京:北京邮电大学,2018. Liu Peizeng. The Design and Implementation of Multilevel Storage System Oriented to Multidimensional Data[D]. Beijing: Beijing University of Posts and Telecommunications, 2018. (in Chinese with English abstract)

[20] 杨鹏,林俊晖. 一种基于MongoDB和Hadoop的海量非结构化物联网数据处理方案[J]. 微电子学与计算机,2018,35(4):68-72,78. Yang Peng, Lin Junhui. A scheme for massive unstructured iot data processingbased on mongodb and hadoop[J]. Microelectronics & Computer, 2018, 35(4): 68-72, 78. (in Chinese with English abstract)

[21] 李继蕊,李小勇,高雅丽,等. 物联网环境下数据转发模型研究[J]. 软件学报,2018,29(1):196-224. Li Jirui, Li Xiaoyong, Gao Yali, et al. Review on data forwarding model in internet of things[J]. Journal of Software, 2018, 29(1): 196-224. (in Chinese with English abstract)

[22] 王顺. 面向农业物联网的异构数据存储方法研究[D]. 郑州:河南农业大学,2016. Wang Shun. Research on the Heterogeneous Data Storage Method for the Agricultural Internet of Things[D]. Zhengzhou: Henan Agricultural University, 2016. (in Chinese with English abstract)

[23] 龚畅. 大数据下的NoSQL数据库技术分析[J]. 信息记录材料,2018,19(6):118-119.

[24] 李林. 基于hadoop的海量图片存储模型的分析和设计[D]. 杭州:杭州电子科技大学,2011. Li Lin. Design and Analysis of the Mass Image Storage Model Based on Hadoop[D]. Hangzhou: Hangzhou Dianzi University, 2011. (in Chinese with English abstract)

[25] 卢冬海,何先波. 浅析NoSQL数据库[J]. 中国西部科技,2011,10(2):14,15-16. Lu Donghai, He Xianbo. The analysis of NoSQL database[J]. Science and Technology of West China, 2011, 10(2): 14, 15-16. (in Chinese with English abstract)

[26] 宋晓东. Hadoop分布式文件系统小文件数据存储性能的优化方法研究[D]. 北京:北京交通大学,2017. Song Xiaodong. The Optimization Method Research for Small File Data Storage Performance on Hadoop Distributed File System[D]. Beijing: Beijing Jiaotong University, 2017. (in Chinese with English abstract)

[27] 宋俊辉,冯岩. 负载均衡的分布式系统任务调度优化算法[J]. 吉林大学学报:理学版,2017,55(2):383-387. Song Junhui, Feng Yan. Task Scheduling optimization algorithm in distributed system with load balancing[J]. Journal of Jilin University: Science Edition, 2017, 55(2): 383-387. (in Chinese with English abstract)

[28] 谭台哲,向云鹏. Hadoop平台下海量图像处理实现[J]. 计算机工程与设计,2017,38(4):976-980.

Tan Taizhe, Xiang Yunpeng. Large-scale image processing implementation under hadoop platform[J]. Computer Engineering and Design, 2017,38(4):976-980. (in Chinese with English abstract)

[29] Daniel Peng, Frank Dabek. Large-scale Incremental Processing Using Distributed Transactions and Notifications[C]// USENIX Symposium on Operating Systems Design and Implementation, October 4-6, 2010, Vancouver, BC: USENIX Association, c2010:251‒264.

[30] 苗星. HBase长事务实现方法研究[D]. 北京:北京交通大学,2015. Miao Xing. The Research on Long Transaction Support for HBase[D]. Beijing: Beijing Jiaotong University, 2015. (in Chinese with English abstract)

[31] 吴龙,唐军. 一种ntp服务器时间同步的方法: CN102916799A[P]. 2013-02-06.

[32] 李三淼,李龙澍. Hadoop中处理小文件的四种方法的性能分析[J]. 计算机工程与应用,2016,52(9):44-49. Li Sanmiao, Li Longshu. Performance analysis of four methods for handling small files in Hadoop[J]. Computer Engineering and Applications, 2016, 52(9): 44-49. (in Chinese with English abstract)

Design and implementation of cloud storage system for farmland internet of things based on NoSQL database

Xu Xin1,2 ,Shi Lei1, He Long1, Zhang Hao1,2※, Ma Xinming1,2,3

(1.450002,2.450002,; 3. HHH450002,)

In order to solve the problems of storing large amounts of structured and unstructured data, such as images, video and sensors and so on, and real-time processing and writing, a data cloud storage system for farmland Internet of Things (IOT) with mass storage, high performance and easy expansion is constructed. Based on Hadoop platform, in this paper, we constructed a massive farmland IOT data cloud storage system by combining the characteristics of farmland IOT data, using distributed storage and NoSQL(Not Only SQL) technology. From the security, reliability, efficient reading and writing, data conversion, transaction processing, small file processing, cache strategy, load balancing and other issues of the system, HDFS was used to store unstructured data such as pictures and videos in the farmland IOT system, HBase was used to store structured data such as meteorology and moisture in the farmland IOT system, Redis was used in cache servers. Three layers of data cloud storage architecture for IOT were designed. The system classifies and processes video, image, text and structured data. For large video block storage, small file image packaging and merging storage, text classification and conversion strategy, unstructured data were written to HDFS, structured data were written to HBase, and Redis was used as the system cache to realize the data of the IOT writing and reading business. In distributed cluster environment, the reliability of cross-line transaction and long transaction processing was restricted. It was difficult to process cross-line transaction and long transaction accurately and orderly, and it was difficult to ensure data consistency in complex services such as massive data analysis. In this paper, a distributed transaction mechanism based on optimistic lock was designed. The transaction processing module cooperates with the HLock(optimistic lock) structure to control the state of the transaction. The NTP server guarantees the uniqueness of the transaction timestamp. The transaction ACID features, including reading and writing data, were solved. HBase's strong transactional support has been tested to improve query efficiency by 35.75% compared with traditional MySQL clusters when the data level was 5 million. Thus, NoSQL-based structured data storage scheme was feasible in dealing with high concurrent massive data scenarios. In order to solve the problem of a large number of small pictures and small files in the farmland IOT, the sampled pictures were packaged and measured. The “SequenceFile” technology was used to merge multiple pictures into a "Block" to realize the strategy of merging and storing small files. Fast index reading, compared with the original HDFS storage reading and writing efficiency, image file storage reading and writing efficiency improved by more than 30%. Therefore, based on the “SequenceFile” file merging technology, image file name design and index optimization strategy, it was suitable for large-scale image storage scene in the farmland IOT. The system had been applied to the monitoring system of farmland IOT in China Henan Province. It was distributed in more than 60 monitoring stations in Changge, Huaxian, Luohe and Fangcheng counties and cities, providing real-time data for storage, management and visualization, and considering the incorporation of more sensors and monitoring stations, the system was in good working order. In summary, based on Hadoop platform and NoSQL technology, we designed a massive farmland IOT data storage model, designed and implements the key technologies such as data reading and writing, transaction, picture packaging, index, load balancing module, and develops a massive farmland IOT data storage, management system. Based on NoSQL massive farmland IOT data storage scheme suitable for the storage and management needs of the IOT massive, real-time data, for farmland IOT storage transaction consistency, small file processing and other issues, for massive agricultural IOT data storage solutions. It can combine distributed computing and machine learning technology to compute the data of IOT in real time and provide real-time operation and decision-making services for agricultural production.

farms; data storage equipment; management; IOT; NoSQL; Hadoop; HBase; cloud storage

2018-09-25

2018-11-23

河南省科技创新杰出人才(184200510008);河南省现代农业产业技术体系(S2010-01-G04);十三五国家重点研发计划(2016YFD0300609);河南省重大科技专项(171100110600-01)

许 鑫,河南邓州人,讲师,博士生,主要从事机器学习与精准栽培技术研究。Email:xuxin468@163.com

张 浩,河南邓州人,副教授,主要从事分布式计算、数据集成与可视化研究。Email:zhanghaohnnd@126.com

10.11975/j.issn.1002-6819.2019.01.021

S126

A

1002-6819(2019)-01-0172-08

许 鑫,时 雷,何 龙,张 浩,马新明. 基于NoSQL数据库的农田物联网云存储系统设计与实现[J]. 农业工程学报,2019,35(1):172-179. doi:10.11975/j.issn.1002-6819.2019.01.021 http://www.tcsae.org

Xu Xin, Shi Lei, He Long, Zhang Hao, Ma Xinming. Design and implementation of cloud storage system for farmland internet of things based on NoSQL database [J]. Transactions of the Chinese Society of Agricultural Engineering (Transactions of the CSAE), 2019, 35(1): 172-179. (in Chinese with English abstract) doi:10.11975/j.issn.1002-6819.2019.01.021 http://www.tcsae.org

猜你喜欢
海量事务结构化
“事物”与“事务”
基于分布式事务的门架数据处理系统设计与实现
一种傅里叶域海量数据高速谱聚类方法
促进知识结构化的主题式复习初探
结构化面试方法在研究生复试中的应用
计算机教育(2020年5期)2020-07-24 08:53:00
河湖事务
海量快递垃圾正在“围城”——“绿色快递”势在必行
当代陕西(2019年14期)2019-08-26 09:42:00
一个图形所蕴含的“海量”巧题
基于图模型的通用半结构化数据检索
计算机工程(2015年8期)2015-07-03 12:20:35
基于软信息的结构化转换