- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Hadoop海量xml索引查询方案
基于Hadoop海量xml索引查询方案
摘 要:XML(Extensible Markup Language,可扩展标记语言)凭借其简单、跨平台、方便阅读等优点,在当今各个领域得到了广泛的应用。然而,作为数据交换标准的XML面对当今海量数据,由于结构不易拆分等问题,其存储和查询性能并不理想。Hadoop的出现,提供了一种新的解决办法。由于Hadoop本身并不适合类似XML格式的半结构化文件处理,因此本文提出来一种基于Hadoop的海量XML查询的解决方案,充分利用Hadoop的并行性能,同时还引入了高效的索引机制,很好的解决了海量XML存储于查询性能问题,实验证明,该方案能达到良好的效果。
关键词:Hadoop;XML;索引;查询;海量数据
中图分类号:TP311.52
XML是一个万维网联盟(W3C)的建议标准[1],它被越来越多地用于在不同数据源间进行各种形式的数据交流。在最近几年XML海量应用正在快速增长,互联网上如用户搜索行为记录、数据库历史日志记录、数字图书馆系统等,在科学研究上如对历史天气记录,DNA序列记录等。这些海量XML对我们存储、查询、分析数据提出了更高的挑战。
Hadoop是近几年发展比较成熟的开源云计算平台之一,凭借其可靠、高效、可伸缩的特性在互联网领域得到了广泛的应用,同时也得到了学术界的普遍关注[2]。Hadoop的HDFS(Hadoop distributed file system)分布式文件系统和MapReduce分布式计算框架提供了高可靠性的分布式存储和高速的海量数据计算[3],使海量存储XML与高效查询XML成为可能。
但由于Hadoop对结构化数据查询分析比较容易,对类似于XML这种半结构化,内容属性可扩展的数据查询检索,Hadoop也略显无力。因此,本文提出了一种对海量XML文件半结构化数据的分割方法,充分利用了已知的XML大致结构,通过MapReduce编程,将海量XML文件并行处理,实现了海量XML查询;同时,引入了索引机制,避免Hadoop扫描整个海量数据,大大减少了查询时间。
1 相关研究
迄今为止,对于XML的存储以及查询的优化算法大部分都是在树结构的基础上提出的。这些算法在单机上实现都能表现出不错的效果,但是,一旦把他们发到分布式集群上,由于树不在完整,将无法应用算法。
1.1 传统XML存储与查询
对于传统XML存储,可直接存放在操作系统的文件系统上即可。
对于传统XML查询,传统的查询数据的做法有:
(1)基于Tree-Based解析:代表有DOM、JDOM、DOM4J,原理是把XML整个以树的形式读入内存,然后查找。优点是可随机多次查找,支持XPATH路径查找,支持读写操作。缺点是需要加载整个XML,资源耗费大。
(2)基于Event-Based计息:代表有SAX,STAX,原理是以流的方式顺序读取XML信息。优点是:不需要加载整个XML,节约内存,节约时间,速度快。缺点是:不支持多次随机查找,不支持XPATH,只读而不能写。
1.2 海量XML存储与查询
由于是海量XML数据,数据量已超过了单台电脑硬盘的容量,因此需要一个特殊的分布式文件系统,本文使用的是Hadoop的HDFS。
HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。它有如下特点[4]:
(1)硬件故障是常态。即硬件故障是常态,而不是异常,HDFS提供了一个很好的故障检测和自动快速恢复的容灾系统。
(2)流式的数据访问。即运行在HDFS之上的应用程序必须流式地访问它们的数据集,这样极大的提高了分布式数据的吞吐量,便于多台机器协同工作。
(3)大数据集。运行在HDFS之上的程序有很大量的数据集。典型的HDFS文件大小是GB到TB的级别。所以,HDFS被调整成支持大文件。
(4)一次写入,多次读出。一个文件一旦创建、写入、关闭之后就不需要修改了。这个假定简单化了数据一致的问题和并使高吞吐量的数据访问变得可能。一个Map-Reduce程序或者网络爬虫程序都可以完美地适合这个模型。
(5)数据本地化运行。在靠近计算数据所存储的位置来进行计算是最理想的状态,尤其是在数据集特别巨大的时候。这样消除了网络的拥堵,提高了系统的整体吞吐量。
对海量XML查询,我们需要对其进行特殊的分割,然后交由分布式环境进行流式计算处理。
2 海量XML文件处理方案
对于海量XML文件处理,因为HDFS分布式文件系统给我们海量XML文件提供了可靠而高效的存储管理,所以,我们不必太过关心XML文件的存储问题。因此下面着重介绍在
文档评论(0)