基于MapReduce算法的大数据技术研究摘要:文章提出了一种基于MapReduce的优化编程框架,来进行数据挖掘与处理。MapReduce是通过执行Map和Reduce两个阶段把大数据分割成小数据族,再并行处理这些小数据族输出得到我们想要的结果。优化过的MapReduce加快了数据处理速度,提高了大数据处理效率。所有的数据存储于HDFS中,为了方便编程人员高效地对存储好的数据进行查询和处理,Hive提供了一套SQL数据操作语言,并将其转换成MapReduce程序执行。改进的大数据算法具有更快地数据处理速度,更准确的数据查询能力。关键词:大数据;数据挖掘;数据处理;MapReduce;HiveResearchofbigdatatechnologybasedonMapReducealgorithmAbstract:Thispaperpresentsanoptimization-basedMapReduceprogrammingframeworkfordataminingandprocessing.MapReduceisthroughtheimplementationofMapandReduceintwophasestosplitlargedataintosmallerdataclan,thentheparallelprocessingofthesesmallfamilyofdataoutputtogettheresultswewant.OptimizedMapReducespeedupdataprocessingspeed,improvetheefficiencyoflargedataprocessing.AlldataisstoredinHDFS,inordertofacilitatetheprogrammersefficientlygooddatastorageandqueryprocessing,HiveprovidesasetofSQLdatamanipulationlanguage,andconvertsitintoMapReduceprogramexecution.Improvedlargedataalgorithmhasfasterdataprocessingspeed,moreaccuratedataquerycapabilities.Keywords:bigdata;datamining;dataprocessing;MapReducealgorithm;Hive0引言随着计算机技术以及互联网技术逐渐普及到人们日常生活中的各个方面,随之而产生的数据量也在呈现指数级增长,大数据应运而生。而传统的数据处理系统面对大数据的挖掘与处理,往往并不适用,本文将系统地阐述如何进行大数据挖掘与处理。大数据时代的战略意义不仅在于掌握庞大的数据信息,而且在于如何处理数据。广义角度的大数据,不仅包含大数据结构形式和规模,还泛指大数据的处理技术。大数据的处理技术是指能够从不断更新增长、有价值信息转瞬即逝的大数据中抓取有价值信息的能力。在大数据时代,传统针对小数据处理的技术可能不再适用。这样,就产生了专门针对大数据的处理技术,大数据的处理技术也衍生为大数据的代名词。这就意味着,广义的大数据不仅包括数据的结构形式和规模,还包括处理数据的技术。1数据挖掘技术数据挖掘就是指采用计算机技术从大量原始采集数据中提取可用知识的过程。数据挖掘最早出现在20世纪90年代,随着计算机的普及,各种传感器的应用,一方面使得数据挖掘对象日益复杂,另一方面是庞大的数据量对原有的传统。数据挖掘技术提出挑战。在这种背景下,基于Hadoop平台的MapReduce计算模式的云计算技术为此提出了解决办法[1]。新型数据挖掘技术集数据库、人工智能、机器学习以及统计学等多领域范畴在内的知识于一身。1.1MapReduce算法MapReduce实现了两个主要功能:Map和Reduce。Map把一个函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集。Reduce则是把从两个或者更多个Map中的一些中间结果,通过多个线程、进程或独立系统并行处理的结果集进行分类和归纳。MapReduce通过把对数据集的大规模操作分发给网络上的每个节点来实现可靠性,每个节点会周期性地把完成的工作和状态信息返回给主节点。如果一个节点保持沉默超过一个预设的时间间隔,主节点就认为该节点失效了,并把分配给这个节点的数据发到别的节点,并且因此可以被其他节点所调度执行[1]。由于MapReduce运行系统已考虑到了输入数据划分、节点失效处理、节点之间所需通信等各个细节,使得程序员可以不需要有什么并发处理或者分布式系统的经验,就可以处理超大规模的分布式系统资源[2]。1.2MapReduce模型MapReduce算法处理大数据问题时,主要可以分为两个阶段进行:首先,对于数据集中每个元素执行用户定义的Map函数,获得中间结果;然后将获得的中间结果通过用户定义的reduce函数进行合并[3]。在MapReduce模型中,用户需要定义Map和Reduce函数,输入一个键值对列表,键值对就是说一个由键和值组成的二元组(key,value),排序和分组都基于key来完成。Map函数的输入是键值对,对每个键值对进行计算,产生的结果也是中间键值对列表。在Map和Reduce中间这个键值对列表,基于键进行聚集。Reduce函数的输入是基于键的键值对分组,其中每个分组都是独立的。这样就可以使用分布式大规模并行的方式进行处理,总输入能远大于处理MapReduce的节点的内存[4-7]。图1是MapReduce模型处理过程图。InputdataSplit0Split0Split0mappermappermapperreducerreducerPart1Part1Outputdatasplitmapcopymergereduceoutputkey1,value1key2,value2key3,value3图1MapReduce模型处理过程图1.3MapReduce的具体执行过程(1)将输入的每个键值对放到mapper中执行,生成另一个键值对列表(就是中间结果);(2)中间结果按照键进行分组聚合;(3)将每一组放到一个reducer中执行,输出结果写入文件系统;(4)Reducer内对每一组按照键顺序处理,reducer之间则并行运行;(5)有多少个reducer将会产生多少个输出文件,通常不需要合并这些文件,因为他们往往是下一轮MapReduce的输入。1.4MapReduce性能优化MapReduce框架的运行过程包括Map阶段和Reduce阶段。Map阶段产生的数据存放在本地磁盘中,再由Reduce节点通过远程访问的形式进行下一步计算。由于I/O操作和远程传输是分布式系统中性能的重要支撑,因此,如果能够减少Map阶段产生的数据量,则显然也可以提高系统的性能。下面通过用户访问网站的流量记录查询,来对MapReduce系统优化前后的性能进行对比。图2中Map阶段没有引入Combiner机制,所以数据经过Map阶段之后只是进行初步的分类,并没有规约化处理[8]。而图3中则是在Map阶段引入了Combiner机制,很明显Map之后产生的数据量减少很多,再传输到Reduce节点进行处理。MapReduce系统的处理速度相对改善之前变得更快。192.168.191.1,328938192.168.191.2,35627192.168.191.3,987725192.168.191.4,172234192.168.191.5,23211192.168.191.6,236654Map2192.168.191.2,35627Map1192.168.191.1,328938192.168.191.3,987725192.168.191.5,23211192.168.191.4,172234192.168.191.6,236654192.168.191.6,236654Reduce图2无combiner机制MapReduce流程图192.168.191.1,328938192.168.191.2,35627192.168.191.3,987725192.168.191.4,172234192.168.191.5,23211192.168.191.6,236654Map2Map1192.168.191.3,987725192.168.191.6,236654192.168.191.6,236654Reduce图3引入combiner机制MapReduce流程图2数据的分析与处理根据市场分析,在未来的10年里,全球数据量还将增加到目前的50倍,面对如此庞大的数据量,必须对其进行分类,数据关联度分析等等。开源的Hadoop已经在过去5年之中被证明是最成功的数据处理平台,可以很好地解决大数据环境下的数据处理与分析[4]。虽然Hadoop提供了MapReduce编程模式以及HBase基础数据库库,但直接使用这些技术进行数据分析,对于只关注数据深层价值的数据分析员来说并不容易。Hive充当了一个数据仓库的角色,用于存储和处理海量结构化数据。Hive拥有便于理解的数据抽象能力。无论是HDFS的分布式存储方式,还是HBase的面向对象的数据组织结构,对于具体工作人员来说,都是很难理解的深层技术。Hive在底层数据之上提供更高层次的数据处理能力和组织方式,以便于数据分析员进行理解[9]。数据分析的核心就是描述数据之间的关联性,以从中挖掘更深层次的有价值的信息。Hive则采用简洁易用的操作方式,让数据分析远离复杂的编程。不仅如此,Hive还具有强大数据处理能力和高容错的运行环境。2.1Hive架构中主要包括以下几类组件:用户操作接口:用户操作接口主要有三类。第一类是命令行接口(CLI),命令行接口支持数据分析员以命令行形式输入SQL进行数据操作。第二类是WEB界面,为数据分析员提供Web化的操作形式。第三种为Hive应用,Hive支持以JDBC、ODBC、和Thrift的方式开发应用。应用会将用户的请求以相应的接口形式发送给Hive服务器并接受响应。Hive服务器:Hive在启动时会向外提供以Thrift接口形式的服务能力。Hive应用可以以JDBC、ODBC、和Thrift接口访问指定地址和端口的Hive服务器。驱动程序:驱动程序负责处理Hive语句,完成编译、优化和执行的工作,生成相应的MapReduce任务与HDFS节点进行数据交互,完成用户要求的数据操作请求。元数据库:元数据库中存储了Hive中与数据表相关的元数据,记录了数据的库、表以及分区等组织信息。3应用实例大数据技术应用非常广泛,这里我们介绍其在电力设备故障检测上的应用。随着现代化建设的步伐,很多城市都离不开电,电力设备的安全也关系着人民生命财产安全。人工检查固然必不可少,但是由于日益增多的电力设备使投入的人力物力也越来越多,大数据技术的问世恰恰解决了这一难题。电力设备运行状态及各方面数据都通过底层的传感器或监控设备采进行采集,比如设备的电压、电流的实时变化,电机转速的监控等等。这些信息经过归一化处理与多帧抽取,得到可视化程度比较高的电力状态数据。根据历史运行轨迹判定当前设备是否处于正常运行状态之中,如果发现设备出现故障,可以当即定位出设备具体位置,并分析其具体故障原因以及给出初步解决方案[10]。除此之外,在大数据的分析下,还可以对电力设备的寿命进行总体评估,工作人员可以根据经验去提前做出检查,提高整个电力系统的运行效率。系统框图如图4所示。设备状态诊断预测评估风险评估维护策略运行状态评估保养基于MapReduce的设备状态监测数据并行处理系统调度算法任务管理与、调度和监测数据管理系统(开源HBASE)分布式存储系统(开源HDFS)开源Linux操作系统电脑服务器在线监测数据故障记