- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?
?
一种基于Hadoop的多表链接策略
?
?
徐剑等
摘要:Hadoop系统在处理多表链接问题时,每轮都会将大量的中间结果写入本地磁盘,从而严重降低了系统的处理效率。为解决该问题,提出一种“替换?查询”方法,该方法通过对链接表建立索引,将预输出的元组集替换为索引信息输出到中间结果,以索引的形式参与多表链接,以此减少中间结果的I/O代价。运用缓冲池、二次排序和多线程技术对索引信息进行优化管理,加快索引查询速度。最后在TPC?H数据集上,设计了与原Hadoop的对比实验,结果表明该方法可减少35.5%的存储空间,提高12.9%的运行效率。
关键词:多表链接;替换?查询;索引;缓冲池;二次排序
:TN911?34;TP311:A:1004?373X(2014)06?0090?05
0引言
随着互联网应用的快速发展,海量数据的存储与处理成为研究人员面临的严峻挑战。近年来,谷歌提出的分布式文件系统GFS、并行编程框架Map?Reduce。基于此,开源社区Apache的Hadoop项目实现了分布式文件系统HDFS和并行编程框架HadoopMap?Reduce。Hadoop因其良好的可扩展性、高可用性以及容错性,广泛地应用在IBM,百度,360,阿里巴巴等互联网公司的海量数据存储与分析应用中,是目前使用最为广泛的云计算平台之一。
针对分布式计算环境中多表链接运算的问题,文献[1?2]提出一种在单个Map?Reduce任务中同时链接多个关系表的优化算法,文献[3]提出一种基于预排序的多表链接算法。这些算法都存在中间结果快速增加的问题,一方面,为了防止链接属性缺失现象的出现,本次链接要尽可能的将下一步或者下几步链接相关的属性信息输出到中间结果;另一方面,每一步链接操作之后,中间结果的属性列增加,伴随着链接次数的增加,输出到中间结果的属性列越来越多;最后,子链接的中间结果要被多次复制,溢写磁盘或者网络传输到其他节点。这些因素使得中间结果快速膨胀,从而导致大量的内存占用,过多的磁盘溢写和不必要的网络传输代价,严重降低了系统性能。
为了解决多表链接中间结果快速增加的问题,本文提出“替换?查询”方法,该方法具体如下,在每一次子链接结果集输出到中间结果之前,系统对结果集中的记录元组建立非侵入式的Hadoop分布式文件索引(Non?invasiveIndexofHadoopDistributedFileSystem,NIHDFS),在保证结果集信息完整性的前提下,用索引替代记录元组信息并输出到中间结果,记录元组以索引的形式参与以后的链接过程;当需要记录元组信息时,该方法能够通过查询操作快速的实现元组信息恢复。在索引的平均长度比记录元组的平均长度短或者链接表的数量较多的情况下,该方法能够有效地减少中间结果的数据规模并降低其增长速度。
在Hadoop?1.1.2上,修改系统源码并实现“替换?查询”多步链接的处理方法,本文将改造后的系统命名为Hadoop?1.1.2?NIHDFS。在与原系统的对比实验中,“替换?查询”的多表链接处理方法,能够有效的提升Hadoop处理多表链接的性能。
1Hadoop?1.1.2?NIHDFS系统整体设计
原Hadoop在处理多表链接问题时,Map阶段对输入的记录元组进行键?值解析,解析出真实的记录元组之后便直接进行Map端的链接操作。Hadoop?1.1.2?NIHDFS系统则不然,在执行Map端链接操作之前,系统要对输入的信息依照“替换?查询”方法进行处理。该处理包含3个部分,分别是对链接表建立NIHDFS索引,替换链接表元组信息以及元组信息的快速查询。他们分别由索引化模块,替换模块和查询模块来完成,如图1所示。
T3是原始链接表,当该链接表进入系统后,先后进行索引化和替换操作,并用记录元组的索引信息和本次链接的属性信息替换原始记录元组,然后再进行Map端链接操作。Output_1是子链接的链接结果,IndexT1_1表示链接表T1中某个记录元组的索引,IndexT1_1:IndexT2_1表示链接表T1和T2的一条链接结果,其中只存储着2条记录对应的索引信息。当Output_1作为该系统的输入时,该系统需要对其中的索引信息进行查询,恢复出原始记录元组并进行解析,然后再进行Map端的链接操作。Map端和Reduce端链接操作的操作内容由具体的多表链接算法来决定。
2NIHDFS索引
HDFS(HadoopDistributedFileSystem)是被设计成适合运行在通用硬件上的分布式文件系统。本文以HDFS为基础,建立非侵入式的Hadoop分布式文件系统索引,即NIHDFS。它是根据链接表各记录元组在HDFS存储的物理位置信息建立起来的预链接索引。
NIHD
文档评论(0)