论文部分内容阅读
随着语义万维网的迅猛发展,越来越多的数据以RDF的形式发布出来,如何对这种语义数据进行存储、管理、查询以及有价值信息的挖掘,已经成为一个热门的话题。传统的三元组库设计实现了对RDF数据的存储,并且支持结构化查询语言如SPARQL的执行操作。但是,其设计基本上是单机的,而单机三元组库的处理能力毕竟是有限的,已经不能满足增长速度如此迅猛的RDF数据。另一方面,以Hadoop为代表的开源的分布式系统,提供了大规模数据的存储系统HDFS,以及分布式计算框架MapReduce,在数据分析领域取得了很大的成就。本文的研究重点就是结合这两种系统的优点,来提供一种可扩展的、大规模且有效的语义数据分析服务。近几年来,越来越多的研究工作都把重点集中在Hadoop与RDF存储查询操作的结合中,如利用迭代式MapReduce函数来实现SPARQL的查询,基于MapReduce的语义数据的推理等。基于相关工作的调研,本文设计实现了一个大规模语义数据分析系统——HadoopRDF,来实现对RDF数据的分析操作。首先,搭建一个基于Hadoop的分布式集群,作为该系统的基础平台,集群中的每个数据节点将安装一个传统三元组库(如Sesame),作为底层的RDF的存储工具以及支持SPARQL的执行。其次,设计实现一种策略将需要存储的原始RDF数据集分割成若干个数据子集,然后将每个子数据集分别存储到一个节点的三元组库。然后,在执行SPARQL的分析性任务的过程中,将原始的查询同样分割成若干子查询,根据策略,每个子查询只与集群中某一个特定节点的三元组库中所存储的RDF子数据集相关,于是每个子查询都将会并行地在不同的节点上执行。再然后,设计实现了一系列的MapReduce任务,这些对应于SPARQL的相应操作,对每个节点返回的子查询结果进行处理,来得到最终的查询结果。最后,一些基于统计操作的分析性的任务操作,也将被设计成MapReduce任务来实现。本文设计的系统同时获得了分布式系统Hadoop的大规模数据分析能力和规模可扩展能力,以及传统三元组库对复杂的结构化查询的良好支持能力。在BSBM这个标准的用来测试RDF存储和查询能力的数据集上,笔者做了大量的实验。从实验结果上看,HadoopRDF是一个可靠的、可扩展的、有效的语义数据分析系统。