基于Hadoop的葡萄种植环境数据处理及性能测试

2015-09-09 18:44袁伟罗丽琼赵路等
山东农业科学 2015年8期
关键词:性能测试

袁伟 罗丽琼 赵路等

摘要:随着农业大数据时代的来临,传统串行程序及关系数据库已经不能满足对大数据处理的需求,使用分布式平台对数据进行处理逐渐取代传统的数据处理技术。本文使用Hadoop分布式平台,结合非关系型数据库Hbase和并行编程模型MapReduce,对香格里拉地区酿酒葡萄种植区的环境数据的存储和计算进行了设计,测试了Hbase对数据的存储性能以及MapReduce用于回归分析的性能,并将MapReduce并行计算程序与单机串行程序进行了性能对比。结果表明,通过对Hbase进行合适的配置,数据写入时间随着节点的增加而减少,存储性能具有良好的扩展性;MapReduce在处理少量数据时效率低于串行程序,但随着数据量增加,其计算效率明显优于串行程序。

关键词:Hadoop;Hbase;MapReduce;性能测试;农业大数据

中图分类号:S126+S663.104+.4 文献标识号:A 文章编号:1001-4942(2015)08-0119-05

Abstract With the advent of the era of agricultural big data, the traditional serial program and relational data base could not meet the need for processing big data, which was gradually replaced by the distributed computing platform. In this paper, the Hadoop distributed platform combined with the non-relational data base Hbase and the parallel programming model MapReduce was used to study the storage and calculation of environmental data from Shangri-la grape growing region. The performance of Hbase for data storage and MapReduce for regression analysis was tested, and the property of parallel calculating of MapReduce was compared with that of the traditional calculating method of serial storage. The results showed that the data writing time of Hbase decreased with the increase of node through appropriate configuration, and its storage property possessed better expansibility; the processing efficiency of MapReduce was lower for a few data, while that was obviously superior to the serial program for large amounts of data.

Key words Hadoop; Hbase; MapReduce; Performance test; Agricultural big data

近年来,大数据一词越来越多的被提及,被用来描述和定义信息爆炸时代产生的海量数据。数据已经成为与自然资源、人力资源同样重要的战略资源。目前,我国大数据已经运用到医疗业、制造业、交通业等不同行业[1,2]。农业数据由结构化数据和非结构化数据构成,数据量大、涵盖领域广、数据类型多,属于典型的大数据[3]。现阶段,大量的科研人员也已经意识到农业大数据的研究价值,投入到农业大数据分析、处理过程的优化中。基于大数据的背景下,传统的关系数据库以及串行程序已不能满足对大数据处理的需求[4]。随着Google提出云计算这一技术概念,其三大核心技术GFS、MapReduce和Bigtable为大数据的管理提供了解决方案[5]。

众多企业及科研单位已经开展了农业大数据研究工作。土壤抽样分析服务商Solum致力于使用数据分析技术来确定化肥的投入量问题,通过对农业大数据的分析来帮助农民提高产出、降低成本[2];跨国农业生物技术公司Monsanto通过分析海量的天气数据来预测未来可能对农业生产造成破坏的各种天气,农民可以根据这种预测来选择相应的农业保险,以降低恶劣天气对农业生产造成的影响[6];2013年6月,国内第一个农业大数据产业技术创新战略联盟在山东农业大学成立,校长温孚江指出,目前国内的大数据研究虽然刚刚起步,但“农业大数据”的研究已经十分领先[1]。

Apache软件基金会借鉴GFS和MapReduce设计思想开发了Hadoop分布式系统基础架构,作为GFS和Google MapReduce的开源实现。本文结合香格里拉地区酿酒葡萄8个种植点的环境数据,运用Hadoop下的Hbase作为数据库对数据进行存储、MapReduce编程模型对数据进行计算,对其数据存储及计算性能进行测试,并与传统串行解决方案进行对比,以探讨分布式计算相对于传统串行计算的优势。

1 相关理论基础

1.1 HDFS分布式文件系统

Hadoop作为一种开源架构,适合在廉价机器上对各种资源数据进行分布式存储和分布式管理[5]。其核心架构为HDFS与MapReduce。Hadoop集群包括一个Namenode节点和多个Datanode节点,Namenode在HDFS内部提供元数据服务,Datanode为HDFS提供存储块。存储在HDFS中的文件被分成块,然后将这些块分布到集群中的各个节点。HDFS的主要目的是支持以流的形式访问写入的大型文件。endprint

1.2 MapReduce计算模型及Hbase数据库

MapReduce是用于并行处理大数据集(基于HDFS之上)的软件框架,借用了函数式编程思想,把海量数据集的常见操作抽象为Map和Reduce两种集合操作[4],当MapReduce在运行处理大数据集任务时,由JobTracker确定如何创建其他TaskTracker从属任务,为特定节点的每个文件块指派唯一的子任务,当每个子任务运行完成后由TaskTracker将状态和完成信息报告给JobTracker[8]。

Hbase作为Hadoop的一个子项目,是一个分布式的、面向列的开源数据库[9]。Hbase数据表中的数据由行键(RowKey)、时间戳(Timestamp)、列族(ColumnFamily)组成。行键用来标识某个表中唯一的一条记录,列族可以由任意多个列组成,数据插入时每条数据会获得一个时间戳,用来标识某条数据的版本号,创建表时毋须指定列的个数,即Hbase支持对列的动态扩展,因此Hbase非常适合于存储非结构化数据。

2 数据存储及性能测试

选取云南省迪庆藏族自治州香格里拉县和德钦县8个葡萄种植点作为研究对象,每个种植点通过已安装的数据采集设备进行环境数据采集,采集的环境数据包括温度、湿度、光照度、降雨量、辐射量、紫外线强度共6个环境因子。

2.1 数据在Hbase中的存储设计

向Hbase数据表写入数据时,Hbase默认的写缓存区大小为2 M,AutoFlush属性为True。不作更改时,当调用Hbase的put方法插入数据时,每执行一条put命令,数据表就执行一次更新,严重影响插入效率。需设置合适的写缓存区大小(setWriteBufferSize属性)并将setAutoFlush属性设置为false,这样只有当put填满客户端写缓存时,才向Hbase服务端发起写请求,能极大提高写效率。

影响Hbase插入性能的另一个重要因素是Region的预分区。当创建一个新表时,Hbase默认只有一个Region[10],只有当数据量增长到一定程度才会调用split方法将Region分裂,由于split方法非常耗时耗资源,并且会使服务端有一段时间的停顿,所以这也会极大影响写入效率。为解决这一问题,需要对表的行键进行设计(表1)。Region有两个重要属性StartKey和EndKey,表示此Region所维护的RowKey的范围,写入的数据首先判断属于哪个Region,然后进行对应的写入操作。因此为了使写数据过程中每个节点提供的请求处理数量尽可能均等,行键的前面用LocalID(1~8)填充,后面连接格式化后的时间参数。并根据行键的特点,创建表时预分8个Region。行键的组成如下:

2.2 Hbase写入数据性能测试

本测试在云南农业大学基础与信息工程学院计算机公共实验室进行,云计算环境配置有9个节点的Hadoop集群。每个节点所用的操作系统均为Ubuntu14.04,JDK版本1.8,Hadoop版本2.2.0,Hbase版本0.96.2,所用CPU为IntelcoreI3370型号。集群中各个节点IP、主机名如图1所示,Master为主节点,Node1~8为从节点。

选取8个监测点5~11月份采集到的全部环境数据进行写入Hbase测试,数据量为100万条。分别采用Hbase默认配置(简称“默认”)、未预分Region但设置缓存区为6 M且设置AutoFlush为false(简称“未预分Region”)、预分8个Region并设置缓存区为6 M且设置AutoFlush为false(简称“预分Region”)三种实验方案,分别运行于3、5、7、9个节点的Hadoop集群中,得出节点个数与写入时间的折线图(图2),可见,使用默认配置写入效率较低,设置自动Flush为false后,插入效率有明显提升,但这两种方案随着节点的增加,写入效率无明显提升;第三种方案通过预分配Region,写入效率较前两种方案效率更高,且随着节点数的增加,所用的时间逐渐减少。结果表明,在实际写入数据过程中,根据RowKey范围设置合适的Region个数,可不断提高数据写入效率,同时也表明了Hbase集群具有良好的扩展性。

为进一步研究预分配Region与未分配Region写入数据的效率差异,在原数据基础上通过生成随机数据增加数据量,测试的数据量分别为100万、300万、500万、700万条,运行于9个节点的Hadoop集群中,得出数据量与运行时间的折线图(图3),可见,当不进行Region的预分配时,随着数据量的增加,曲线的斜率相差很小,说明写入数据的时间随数据量的增加呈线性增长,数据写入性能基本没有提高;而使用预分配Region方式写入数据,曲线斜率逐渐减小,即时间的增长率降低,说明写入的数据量越大,Hbase写入性能越高。

3 数据计算及性能测试

3.1 基于MapReduce的线性回归分析原理

回归分析是确定两种或两种以上变量间联系的一种统计分析方法,可分析变量之间相关性的具体形式,并用数学模型来表现。按照自变量的多少可分为一元回归分析和多元回归分析。其中一元回归分析方程可表示为y=bx+a形式,根据最小二乘法原理[11]估计参数a、b的公式如(2)式:

MapReduce的核心是Map过程和Reduce过程,两过程中的数据传递都是以键值对形式存在。使用MapReduce编程模型计算回归方程,Map过程读取Hbase表中数据,形成键值对,其中Key1表示行键,Value1表示相应环境因子。Map函数对进行切分生成所需日期格式的Key2,形成并传递给Reduce函数,Reduce函数对具有相同Key2的一组list执行一次Reduce过程,计算出(2)式中相关参数并存放到Result表中,再利用串行程序得出相应回归方程。

3.2 MapReduce回归分析性能测试

本测试以温度与果实大小的回归分析为例。其中温度数据存于Temper表中,果实数据存于Fruit表中。以天为单位,使用MapReduce程序读取Temper表中温度数据并计算每天平均气温和有效积温,将生成的结果存入Test表中;再使用MapReduce程序根据Test和Fruit表中数据计算(2)式中未知参数,得出a、b的数值进而得出回归方程。

Temper表中初始数据为100万条,以100万条为单位递增生成8组测试数据,分别在3节点集群和6节点集群中分析不同数据量对运行时间的影响,结果如图4所示,可见,曲线增长的趋势一直减小,即所用时间增长率减小,说明MapReduce更擅长处理较大的数据量;当数据量达到400万条时,6节点集群比3节点集群对数据的处理时间明显减小,也说明了MapReduce具有较好的扩展性。

为了对比Hadoop集群和单机对数据处理的能力,分别使用50万到3 000万的数据运行于单机和6节点的Hadoop集群上,结果如图5所示,当数据量小于300万条时使用单机模式比集群模式效率更高,主要是因为集群初始化作业、中间文件生成、传递过程占用了大量的时间比例,此时MapReduce运算性能的优势没有得到发挥;当数据量超过2 000万条时,单机运行时间有加大趋势,此时主要受内存大小影响;当数据量超过800万条时,MapReduce并行计算所需时间上升趋势逐渐减少,并行计算的优势开始发挥,说明随着数据量的增加,并行计算要优于串行计算。

4 总结与展望

在Hadoop云环境下进行数据的写入和计算效率测试的结果表明,通过进行合适的配置,Hbase的数据写入及查询计算具有了良好的扩展性,且随着数据量的增大,Hbase对数据的存储能力也会增强。利用MapReduce编程模型对酿酒葡萄的环境因子与果实参数进行回归分析,在处理少量数据时,其效率低于串行程序;但随着数据量的增大,MapReduce程序比串行程序具有更好的计算性能。

今后可根据具体需求开发可视化系统界面,实现对数据存储、查询、计算等功能的统一化管理,并研究多环境因子对葡萄果实生长发育的影响,以期综合全面地为葡萄种植户提供葡萄栽培合理化指导和科学的数据支持。

参 考 文 献:

[1] 温孚江.农业大数据研究的战略意义与协同机制[J].高等农业教育,2013(11):3-6.

[2] 张浩然,李中良,邹腾飞,等.农业大数据综述[J].计算机科学,2014(S2):387-392.

[3] 李秀峰,陈守合,郭雷风.大数据时代农业信息服务的技术创新[J].中国农业科技导报,2014(4):10-15.

[4] 何清. 大数据与云计算[J].科技促进发展,2014(1):35-40.

[5] 谢桂兰,罗省贤. 基于Hadoop MapReduce模型的应用研究[J].微型机与应用,2010(8):4-7.

[6] Monsanto Acquires The Climate Corporation[EB/OL].[2014-03-19]. http://www.monsanto.com/features/pages/monsanto-acquires-the-climate-corporation.aspx.

[7] 杨锋,吴华瑞,朱华吉,等. 基于Hadoop的海量农业数据资源管理平台[J].计算机工程,2011(12):242-244.

[8] 郝树魁. Hadoop HDFS和MapReduce架构浅析[J]. 邮电设计技术,2012(7):37-42.

[9] 冯晓普. HBase存储的研究与应用[D].北京:北京邮电大学,2014.

[10]康毅. HBase大对象存储方案的设计与实现[D].南京:南京大学,2013.

[11]邹乐强.最小二乘法原理及其简单应用[J].科技信息,2010(23):282-283.endprint

猜你喜欢
性能测试
Hadoop性能测试自动化研究
关于Java软件的性能测试分析