0 引言
某煤矿集团公司成功引进了SAP公司的ERP(Enterprise Resource Planning)系统,ERP系统的使用给企业带来了先进的管理理念,建成了完整的企业资原管理体系和高效、便捷的信息技术平台。但是,其ERP系统里分析和计算备件储备定额的功能侧重于机械制造等备件消耗规律性较强的行业,对于煤矿企业这类备件消耗随需求变化的行业起不到应有的作用,所以我们为此开发了备件储备定额系统来对备件信息进行管理,协助业务人员制定备件采购计划,自动提示所需订货的备件等。
但是,随着系统的使用,一些问题也紧跟着暴露出来。如储备定额系统对于日常少量备件做消耗量预测可以在较短的时间内很好地完成,但在年中需要为下半年作订购计划或为来年制定订购计划的时候,因为其备件库庞大(现常用备件有29万多种,历史出入库存记录数据更多),做消耗量预测时花费时间很长;而随着Hadoop云计算平台在各个领域的运用很好地证明了其对海量数据的存储能力和并行计算能力,为大量备件的消耗量预测提供了一种新的解决方式。将Hadoop平台技术与煤矿企业备件储备定额并行化研究结合起来是一种很新颖的想法,目前还处于探索阶段,也是本文主要研究的内容,我们将研究如何解决煤矿企业备件管理所面临的难题。
1 基于Hadoop的备件消耗预测系统框架
利用云计算平台实现备件消耗预测,可解决大数据集运算和存储,并能够保证系统的可扩展性。国际与国内已经有一些学者在云计算平台的利用上进行了相关的研究和应用,如利用开源云计算平台Hadoop进行海量数据分析研究[6],在电力行业进行的海量数据存储和安全性研究[7],在数据挖掘方面利用Hadoop平台进行的研究等。借鉴这些研究,笔者在开源云平台Hadoop上进行备件消耗预测的研究,其系统架构如图1所示,主要包括数据收集模块、数据预处理模块和概率统计分析模块。
1.1 数据采集模块
系统按需要输入日期,调用PI将某大型煤炭集团SAP系统中备件的相关数据,如备件出库与入库量、备件信息、各个库存点备件库存等,这些信息被传送到本地数据库中可用于分析、计算。数据获取时,系统通过触发接口到PI的Web Service,并向PI传递日期(年月),PI传递到SAP系统中实时计算库存、计划量、未清订单以及出入库量,PI调用定额系统的Web Services完成数据的同步传输。
1.2 数据预处理模块
获取到备件相关数据后,需要对所获得的数据进行数据整理和统计、频数分析,以及裕度系数计算。具体方法如下。
⑴ 备件出入库数据整理,即根据备件基本信息和大量备件出入库信息,选择出某备件两年的消耗数据(以月为单位),插入到Oracle数据库的备件整理表中。
⑵ 查询Oracle数据库备件整理表中某备件两年内的消耗数据,通过对其分析,进行选择性分组,把每组的组中值,频率,以及备件号插入到Oracle数据库的备件频制表中。
⑶ 把频制表中的记录根据备件号,分别把频率值和组中值插入到
⑷ 建立基于资金占用和关键性的备件评估数学模型,得到用来弥补预测偏差的裕度系数k,根据备件号插入到Oracle数据库备件本信息表中。
1.3 概率统计分析模块
笔者利用开源的Hadoop云计算平台对备件消耗量预测算法(概率统计分析法)进行MapReduce并行化设计,并在Hadoop平台上实现MapRedece化备件消耗量预测算法,利用该算法计算备件的平均月消耗量。根据备件的平均月消耗量可以得到订货周期内的预测消耗量。概率统计分析法描述如下[11-12]。
⑴ 收集数据。概率统计分析法对数据的要求很低,只需对消耗量进行定期统计。这对企业而言较为方便。
⑵ 对数据进行整理,编制频数表。
⑶ 计算平均消耗量。
2.1 Hadoop平台简介
Hadoop是一个由Apache软件基金会开发的开源分布式云计算平台,大数据的存储和分布式处理能力显著。Hadoop已经成为包含许多项目的集合,核心包括Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)和MapReduce分布式计算模型(Google MapReduce的开源实现),Hadoop分布式基础架构的底层细节对用户来说是透明的。HDFS的高容错、高伸缩等特性使得用户在廉价、低配的硬件上部署Hadoop成为可能;MapReduce分布式编程模型使开发并行应用程序更加简单,开发者不必了解分布式系统底层细节。用户可以利用Hadoop方便的架构资源,搭建自己的工作集群,充分利用搭建集群的计算和存储能力,解决海量数据的存储和运算问题[4]。
Hadoop在分布式存储和分布式计算方面有着非凡的能力2.2 概率统计分析法MapReduce化分析和设计
根据MapReduce的计算框架,大致可以分为两个阶段:Map阶段和Reduce阶段。
Map阶段:需要处理的输入数据会被MapReduce框架提供的函数InputFormat分割成大小一定的片段Splits。MapReduce计算框架会根据被分割的分块的数量来创建等量的Map任务,同时将每个Splits片段进一步分解为形式的键值对作为Map函数的输入参数。然后用户自己定义的Map函数接收Map函数的输入参数,产生一个中间键值对,框架会对每个键值对的Key值进行排序整合,把所有相同Key值的value合并到一起形成一个新的键值对列表{Key,List(Value)}并将其传递给Reduce。
Reduce阶段:根据MapReduce计算框架,把不同Mapper接收到的数据整合,进行排序处理,同时调用用户编写的reduce函数进行处理。
将概率统计分析法中平均月消耗量的计算转换成矩阵相乘的形式,构建MapReduce算法,将数据解析整理放在Map阶段,运算放在Reduce阶段执行。
以下给出算法的步骤。
⑴ 备件处理信息的存储。针对Hadoop平台的MapReduce计算框架,把待处理备件信息按备件号、行、列、组中值、频率分为两个文件,存储在Hadoop分布式文件系统HDFS中。
⑵ 在Map函数中,同时遍历两个文件,进行解析整理操作,形成输入键值对,并对键值对进行处理,构造输出键值对Key/value。
⑶ 中间结果处理,对Map函数输出的键值对进行整合处理,把Key值相同的Value合并到一起,形成一个新的键值对输出列表,传递给Reduce函数。
⑷ 在Reduce函数中,遍历输入的键值对列表,进行乘积和累加运算,得到最终结果。
2.3 Hadoop平台实现概率统计分
析法
基于上述MapReduce化概率统计分析法的描述,下面介绍该算法在Hadoop平台的MapReduce计算框架的具体执行流程:
⑴ 将测试样本备件消耗量频数表,按照{备件编码、行、组中值}、{备件编码、列、频率}的形式存储在Hadoop分布式文件系统HDFS中,由SequenceFile类进行存储工作。其中i代表矩阵中的行值,j代表矩阵中的列值。
⑵ Map函数读取HDFS中两个文件,以[key,value]的形式输入每一项数据。Key是文件中行偏移量,但是在map阶段的计算中我们用不到这个值,所以可以忽略。Value是存储文件的每行的数据。Map函数是对输入键值对的值进行解析,通过遍历文件中每一行,分别截取备件编码、行号、列号、组中值和频率,以备件编码为Key,(行号#组中值)、(列号#频率)为value的输出键值对。
⑶ MapReduce计算框架根据用户自定义的函数将Map函数产生的中间结果进行排序整合处理,形成一个备件编码相同的value列表。以此作为Reduce函数的输入。
⑷ Reduce函数阶段,对输入列表中的值进行遍历,进行result+=valA[i]*valB[j]运算。图3展示了整个MapReduce的计算执行过程。
MapReduce化设计的概率统计分析法算法,在解决节点失效和负载不易均衡这两个问题上也取得了不错的效果。
一是在Hadoop集群中,如果其中某一台计算机发生故障从而停止工作,那么被这台计算机上运行的计算任务会被转移交接给集群中没有任务处理而处于空闲状态的计算机处理。
二是Hadoop上处理的任务块数可以变动,不论计算任务的大小,可以通过更改配置文件的手段来设定每个Map数据块的大小,以使所处理的任务块数远大于集群中计算机的节点数,这样,宝贵的计算资源就不会被浪费,也可以达到负载均衡的目的。
3 实验结果与分析
3.1 实验环境
本实验选取三台计算机搭建Hadoop平台,计算机系统采用 Ubuntu Linux 10.10,Hadoop版本选用Hadoop—1.1.2,一台机器作为Master和JobTracker服务节点3.2 实验数据选取
选取某大型煤炭集团备件消耗记录为实验数据,实验数据分为Bjdb1、Bjdb2、Bjdb3和Bjdb4四个大小不同的数据集,它们的大小分别为:1000、10000、100000和1000000条备件消耗记录。每组的消耗记录分别由备件的编号、组中值、频率组成。
3.3 实验结果及分析
实验内容为:分别采用上面选定的大小不同的四个数据集,比较C/S模式和hadoop平台的MapReduce模式下的备件预测消耗量的计算,即概率统计分析算法的实现所需要的时间。实验的硬件环境是在实验室局域网内的PC机上。
在上述实验中,数据的规模是逐渐增长的,实验情况如表3所示(T1为C/S模式单机上运行串行算法所用时间;T2为运行MapReduce化设计的算法所用时间)。
c/s模式处理数据所用时间的消耗增长较快,呈线性增长直到100万条数据集时机器宕机。而MapReduce并行计算方式处理数据的时间消耗随着数据集的增长缓慢增长,最终完成100万条记录运算所需的时间开销很小。在测试数据集较小的情况下,MapReduce化设计的并行计算方式的时间性比不上C/S模式,C/S模式在小数据量时机器性能尚能满足计算要求,机器内的通信要比机器间的通信节省时间,master节点和slave节点通信、slave节点并发处理数据会比C/S模式耗费时间,所以C/S模式下所消耗的时间要比MapReduce模式下少。而当数据量逐渐增大时,C/S模式下的单机运算要远远逊色于Hadoop集群的强大计算能力,C/S模式要想获得与Hadoop集群相应的能力就要增加硬件性能。由此可知,Hadoop集群不适合小数据量的处理,而更适合处理大数据量的计算。
4 结束语
本文对于煤矿企业备件储备定额系统在备件预测消耗量的计算上做了改进,提出基于Hadoop 平台对备件消耗量预测进行MapReduce化设计,并在Hadoop平台上实现MapReduce化备件消耗量预测算法。从实验结果可以看出,在处理大规模数据集时,基于 Hadoop 平台改进的预测消耗量算法执行效率上有较好的表现,而且基于Hadoop的计算具有更加好的移植性和容错性。下一步,笔者将尝试Oracle数据库和Hadoop平台的连接处理,不用从数据库中导出数据,直接以数据库中的待处理表为输入MapReduce并行化模型中Map阶段的输入,Reduce阶段输出结果直接写入到数据库相关表中,使得执行效率进一步提升。
参考文献: 本文选自《计算机时代》2014年第5期,版权归原作者和期刊所有,如有异议,请联系第一 论文网QQ 71208696 7,我们将在第一时间处理。