基于Hadoop平台应用软件的演化方法和技术实践

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:ssm3695
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:由于软件需求和版本的升级,软件代码的重构与演化成为软件维护的主要手段和关键技术需求。Hadoop分布式软件随着分布式大数据处理技术的不断发展,版本不断地升级,随之而来的是基于Hadoop平台的应用软件也需要升级。这种升级过程为软件演化技术的提出了新的挑战。该文针对基于Hadoop平台应用软件的演化方法和技术进行讨论,结合具体实例探讨演化方法实现的技术过程,验证演化方法和技术的有效性。该文主要讨论Hadoop平台应用软件演化中的功能移植和计算速度提升问题。在功能移植方面,研究了Hadoop1.0到升级到版本2.0的基础类库的映射关系,包括MapRe-duce的演化过程,并分析了Hadoop版本演化代码复杂度;在速度提升方面,针对MapReduce任务进行演化,并给出了Ma-preduce磁盘读写操作到内存操作改进算法,以及MapReduce作业如何转换成Spark作业的算法。最后,对企业ETL处理中InnerJoin应用进行案例研究,详细分析MapReduce和Spark编程模式下,InnerJoin的应用差异。
  关键词:大数据;Hadoop;Spark;MapReduce;软件演化
  中图分类号:TP311 文献标识码:A
  文章编号:1009-3044(2019)31-0059-02
  1研究背景
  IDC最近的一份报告声称数字世界每两年增加一倍,并在2013年至2020年间增加10倍;从4.4万亿千兆字节到41万亿千兆字节。近年来,由于社交游戏和地理空间应用程序的普及,数据生成和分析取得了巨大的飞跃。在任何给定的时间,大约有一千万人登录他们最喜欢的社交游戏,如来自King的Candv Crush Saga或来自Supercell的Clash of Clans。Poke-non GO最近的热潮更是说明了数据增长的必然性以及在最高存储要求下更快处理的必要性。换句话说,在不久的将来,大数据处理过程中,各种组件的技术必定会进步。
  在过去十年中,Apache Hadoop平台已经成为处理大数据分析的最著名的开源框架之一,Hadoop分布式文件系统(HDFS)是Hadoop的底层存储引擎。当前的Hadoop生态系统包含传统的批处理框架,如Mapmduce,以及基于内存的DAG执行框架,如Spark,用于迭代和交互式处理。HDFS以其可扩展性和可靠性而闻名,为这些处理框架提供存储功能。随着信息时代的到来,Hadoop和HDFS等大数据系统正在高性能计算(HPC)集群中广泛部署。
  Hadoop版本从之前的1.x版本更新到2.x、3.x,其中对HDFS、MapReduce、任务管理、资源分配、拓展性都进行了升级演化,更好的支持和满足现在大数据处理中储存的速度大小、计算的速度和耗费资源、资源管理、其它组件的支持性和扩展性的需求。
  2Hadoop版本演化复杂度分析
  Hadoop作为一个开源的挂架,其源码可以从gRhub克隆到本地进行分析。目前Hadoop一共有191名代码开发人员,发布了315个小版本、273个分支、22000次代码提交,不断提升Ha-doop的计算性能和扩展性支持。
  使用eclipse的JDT API来获取Hadoop中各个类和包的关系。结合UML建模原则,类之间的关系主要包括继承、关联、依赖和实现。根据软件架构质量度量指标对Hadoop1.0.3、Ha-doop2.2.0、Hadoop2.4.0、Hadoop2.6.0、Hadoop2.7.3等版本源码进行分析。先分别求出hadoop-client-common和core包中各个类代码行数的平均值,这个指标是一个维度指标,对于开发者而言,代码行数越多,类越难读懂,从而增加软件架构的复杂度。从下图分析得出,Hadoop随着版本的演化,其复杂度是在降低的。
  3MapReduce任务演化
  在Hadoop 2.0中引入了Yarn框架,Yarn框架中将Job-Tracker资源分配和作业控制分开,分为Resource Manager(RM)以及Application Master(AM),而Yarn框架作为一个通用的资源调度和管理模块,同时支持多种其它的编程模型,比如最出名的sDark。
  Yarn的主要三个组件如下:
  Resource Manager:ResourceManager包含两个主要的组件:定时调用器(Scheduler)以及应用管理器(ApplieationManager)。
  Application Master:每个应用程序的ApplicationMaster负责从Scheduler申请资源,以及跟踪这些资源的使用情况以及任务进度的监控。
  Node Manager:NodeManager是ResourceManager在每台机器的上代理,负责容器的管理,并监控他们的资源使用情况(cpu,内存,磁盘及网络等),以及向ResourceManager/Scheduler提供这些资源使用报告。
  在MapReduce编程模型中,Mapper、Reducer中封装了应用程序的数据处理逻辑。MapReduce要求所有储存在HDFS上的数据解释成键值对,经过map、reduce函数处理,形成新的键值对。Hadoop1.0中,Mapper和Reducer类体系非常相似,其中包括四个方面的演化:Mapper由接口变成抽象类,且不再继承JobConffigurable和Closeable兩个接口,而是直接在类中添加set-up和cleanup两个方法进行初始化和清理工作;将参数封装到Context对象中,这使得接口具有良好的扩展性;去掉MapRun-nable接口,在Mapper中添加run方法,以便用户定制mapf)方法的调用;Reducer遍历value的迭代器类型编程java.lang.Iter-able,使得用户可以参用foreach形式遍历所有value。
  4ETL中InnerJoin任务编程模型演化
  在企业ETL处理中,对两个数据集根据key进行inner join,是数据处理中常见的需求。MapReduce编程和Spark编程方面有很大的区别,MapReduce采用Java语言编程,Spark主要使用Scala语言进行编程,如图所示,MapReduce中的Mapper类转变成Spark编程中map、flatMap、filter等算子,Reducer类转变成re-duceByKey、groupBykey等算子,FileOutputFormat.setOutputPath(job,outDir)转变成value3.saveAs TextFile(outPath)。
  Spark对两个文件进行inner join操作的算法步骤:
  在实际计算时,spark会基于streamIter来遍历,每次取出streamlter中的一条记录RowA,根据Join条件计算KeyA,然后根据该KeyA去buildIter中查找所有满足Join条件fKeyB=KeyA)的记录RowBs,并将RowBs中每条记录分别与RowAjoin得到join后的记录,最后根据过滤条件得到最终join的记录。
  根据不同大小的数据集,每个数据集分别测试运行5次,MapReduce和Spark平均计算时间统计结果如下表:
  结果表明,在InnerJoin任务模型上,MapReduce任务演化为Spark任务之后,在不改变运行结束的前提下,离线计算速度提升10倍,大大的节省了集群资源开销。
  5总结
  Hadoop2.x版本对MapReduce向前兼容,hadoop2.x的client包中既有基于1.x版本编写程序所需要的包和类,也有新的Ma-pReduce包和类。基于1.x版本MapReduce任务可以直接在YARN上运行;通过实验表明Spark计算速度比MapReduce要快10倍以上。从编程角度而言,Scala语言比Java语言编写的时候要简明许多。
其他文献
摘要:目前,各种应用程序与应用工具不断被开发出来,并在数据库访问系统当中得到了应用。这其中VB编程开发技术可以为数据库的应用提供强大的支持,同时还可以对外来的数据库进行操作,适用性比较强。数据库最大的特点在于高效与合理,而在设计和使用数据库访问技术的时候,需要借助于VB编程开发,这是使用计算机语言进行编程的重要环节。基于此,本文从数据库访问技术在VB编程开发应用的主要技术出发,探究了数据库访问技术
摘要:在计算机普及的现在,仍有着一定数量的人们不懂如何使用计算机,且现今计算机操作的步骤繁多,暂时找不到一种人机交互的简单方式,现市场上也出现了用于提高人机交互效果的软件,但是,均存在功能不完善、设计不够人性化等问题,该文将介绍计算机云端助理的研究与设计,帮助更多的用户轻松愉快的使用计算机。  关键词:精简操作;人机交互;语音操作  中图分类号:TP311 文献标识码:A  文章编号:1009-3
摘要:该文以MOODLE平台为例,对教学资源平台进行性能优化及本地化实践研究,目的是为了搭建一个典型的LNMP应用,为智慧校园实践项目,提供一个实用和完善的测试环境,同时了解系统的测试和优化的全过程。形成相对成熟的配置方法,为类似项目提供参考,提升理论研究水平、共享平台建设经验。  關键词:Linux;服务器;高并发;性能优化  中图分类号:TP311 文献标识码:A  文章编号:1009-304
摘要:现有的电力载波通信分为宽带电力载波、窄带电力载波两种通信方式,宽带电力载波通信距离短,频谱范围大,应用于短距离小范围内的、数据量大的通信领域,其成本高昂,难以推广应用。目前市场主体为窄带电力载波通信模块,窄带通信模块通信距离长,传输数据量能够满足电力通信数据量要求,因此得到大量推广,但是目前市场存在的国外窄带电力通信模块在通信载波频率、通信速率、路由协议等方面不能满足国内国际的通信标准,从而
摘要:该文通过对国内外医疗绩效的研究,设计出了基于信息系统的医疗绩效平台的基本框架及实现的具体指标,经过指标的复杂计算后得出个人绩效,达到按劳分配,多劳多得的目的,让有限的医疗资源发挥最大效能,以更优质的医疗服务解除患者的病痛。  关键词:信息系统;医疗;绩效  中图分类号:R-058 文献标识码:A  文章编号:1009-3044(2019)31-0033-02  1基本框架  随着生活水平的日
该文论述了设计开发一个在线日程管理的web小程序设计和开发的过程,以及用javascript实现点击更改指定位置颜色的两种方法。
摘要:该文从高校毕业生就业信息管理系统的建设中存在的问题出发,寻找解决这些问题的方案,探讨高校就业联动信息管理系统的设计与实现方法。在高校就业联动信息管理系统的设计上要关注网络扩展、体系多元、信息引导、系统强化、素质建设等五个方面的问题,以保障整个系统的有效实现和利用。  关键词:高校就业;信息管理系统;设计与实现  中图分类号:TP311 文献标识码:A  文章编号:1009-3044(2019
摘要:针对目前网民普遍关注的由互联网技术快速发展而带来海量网络热点话题和焦点很容易因误导或传播方式不当导致网络群体事件或突发事件问题,以“互联网 ”与网络舆情监控分析深度融合发展为切入点,将互联网、物联网、大数据以及云计算等新一代信息技术应用到网络舆情监控与分析上,设计实现了基于“互联网 ”的网络舆情监控系统。该系统主要由舆情数据信息采集子系统、舆情数据信息预处理子系统、舆情监控分析子系统和舆情应
摘要:该系统通过对苎麻种质资源信息进行分析和归类,设计一个以苎麻种质信息为核心的苎麻种质资源库,结合现在主流的JavaWeb技术,以htm15页面展示数据图片信息,使用户可以快速、方便地通过苎麻的各个特征查询苎麻的种质信息。系统后台使用Spring技术,结合MySQL数据库打造高可靠性和高稳定性的苎麻种质信息管理系统。  关键词:苎麻;种质资源;JavaWeb  中图分类号:TP311 文献标识码
摘要:科技的进步对人们的日常生活产生了重大且深远的影响,尤其是网络的广泛普及和应用,让人们得以享受更加便捷的服务。而伴随而来的网络安全问题也成了大家关注的焦点,当下日益增长的网络信息安全需求已经难以凭借传统网络安全分析进行处理,因此有必要引入更加先进的技术进行改善优化。鉴于此,文章以大数据技术为核心,探讨了其在网络安全分析领域的应用情况。  关键词:网络安全分析;大数据技术;应用  中图分类号:T