一种基于Hadoop的海量RDF数据分布式查询处理方法

文档序号:6398918阅读:572来源:国知局
专利名称:一种基于Hadoop的海量RDF数据分布式查询处理方法
技术领域
本发明属于计算机技术领域,具体涉及一种基于Hadoop的海量RDF数据集的分布式查询处理方法。
背景技术
目前语义网(Semantic Web)发展迅速以及资源描述框架(Resource DescriptionFramework,RDF)运用广泛,运用RDF描述的数据呈指数级增长,如何高性能、易扩展地存储和查询海量RDF成为亟需解决的问题。传统语义网工具如Jena、Sesame、RDF3X等采用单机环境集中式处理方式,利用关系数据库作为存储系统,面对海量的RDF数据其存储能力及查询效率受到严重限制。云计算利用分布式技术,提供了一套高性能、易扩展的分布式存储和计算系统,已成为工业界和学术界公认的海量数据存储与计算的最优解决方案。其中Hadoop因其成本低廉、扩容性强、效率高、可扩展性强、可靠性高等优点,迅速成为各行各业进行海量数据存储和分析的首选平台,其提供的HBase数据库以其独特的面向列、分布式、高容错性等特点已成为Hadoop平台下进行海量数据处理的主要存储系统。因此将Hadoop平台及HBase数据库运用到海量RDF数据的存储和查询中具有重要意义。

发明内容
本发明的目的在于利用Hadoop平台来解决海量RDF数据查询效率低的问题,提出一种基于MapReduce的海量RDF数据分布式查询处理方法,用于今后支持海量RDF数据的查询,并且可扩展地应对SPARQL语句的修订。其特征在于,具体包括如下步骤:步骤a:将RDF数据上传至HDFS中,通过Hadoop平台的MapReduce框架读取数据将其并行存储在HBase当中;步骤b:对用户提交的SPARQL查询语句段进行预处理,对语句进行解析并提取出其中的前缀声明、结果变量、图模式子句;步骤c:还原图模式子句中的前缀字符,将还原后的图模式子句转化为树模型,以树的结构来表示查询语句的完整图模式。其树中的叶子节点代表SPARQL语句中的三元组模式,其值为三元组模式的编号;非叶子节点表示对三元组模式执行的操作,其值为UNION、OPTIONAL和AND,分别代表SPARQL语句中的union、optional以及连接操作;步骤d:分解树模型,以自底向上、自左向右的方式遍历树节点并生成匹配各节点的执行计划,将执行计划发送到Hadoop平台;步骤e:通过MapReduce框架从HBase中读取数据,按执行计划执行分布式查询,最后按结果变量返回查询结果。相对于现有技术,本发明具有如下有益效果:1、本发明将RDF数据存储在分布式数据库HBase中,提出了一种RDF基于HBase的三表存储模式,该模式不需要额外建立索引便可尽可能地提高查询效率,为海量RDF数据的存储提供了一个可行方案,缓解了传统集中式存储RDF数据面临的压力。2、本发明提出了一种利用Hadoop平台来对RDF数据进行分布式查询的方法,利用MapReduce在查询过程中对数据进行BGP连接操作,大大提高了查询效率。


图1:方法整体流程的说明2:本发明提出的一种RDF数据基于HBase的三表存储结构图。图3 =MapReduce执行BGP连接流程图。
具体实施例方式下面结合附图和实施例对本发明的技术做进一步的说明。应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读本发明之后,本领域技术人员对发明的各种等价形式的修改均落于本申请所得权利要求所限定的范围。按照如下步骤对RDF数据进行分布式查询处理:步骤a:将RDF数据上传至HDFS中,通过Hadoop平台的MapReduce框架读取数据将其并行存储在HBase当中,具体步骤如下:al:将RDF数据上传至HDFS中,并均衡地分布到集群中的各个数据节点中;a2:利用MapReduce框架从HDFS中读取数据并将其并行存储入HBase中,在HBase中用三张表A_SP_0,A_P0_S, A_0S_P来存储;其中表A_SP_0中,将RDF三元组的主体、谓词组合作为row key存储,客体作为column name存储;表A_P0_S中,将RDF三元组的谓词、客体组合作为row key存储,主体作为column name存储;表A_0S_P中,将RDF三元组的客体、主体组合作为rowkey存储,谓词作为column name存储;其存储表结构依次为如图2所
/Jn ο步骤b:对用户提交的SPARQL查询语句段进行预处理,对语句进行解析并提取出其中的前缀声明、结果变量、图模式子句,具体步骤如下:bl:利用语义网框架Jena的ARQ工具对SPARQL查询语句进行解析验证;b2:分离SPARQL语句中的前缀声明、结果变量、图模式子句。步骤c:还原图模式子句中的前缀字符,将还原后的图模式子句转化为树模型,以树的结构来表示查询语句的完整图模式:具体步骤如下:Cl:依次将步骤bl中提取的前缀声明替代图模式子句中的前缀字符串;c2:对图模式子句中的三元组模式进行编号;c3:从图模式子句由外到里依次取出操作符union、optional、成对的{}以及三元组模式,按原结构构造图模式子句的树结构模型QueryTree,其中叶子节点代表三元组模式,其值为三元组模式的编号;非叶子节点表示对三元组模式执行的操作,其值为UNION、OPTIONAL和AND,分别代表SPARQL语句中的union、optional以及连接操作。步骤d:分解树模型,以自底向上、自左向右的方式遍历树节点并生成匹配各节点的执行计划,将执行计划发送到Hadoop平台,具体步骤如下:dl:首先从树模型QueryTree倒数第二层以自底向上、自左向右的方式遍历整棵树,依次取出节点;
d2:根据节点的子节点创建三元组模式集合TP(tPl "tpn)以及变量集合V(Vl,'...vn),变量集合包括变量名、变量连接三元组模式编号及其在三元组模式中的位置;d3:判断节点类型,如果节点的值为AND,则执行步骤d4 ;如果节点的值为OPTIONAL,则创建MapReduce job信息用于对TP (tPl...tpn)中三元组模式结果集执行左连接操作;如果节点的值为UNION,则创建普通job信息对TP(tp^"tpn)中三元组模式结果集执行并集操作;d4:根据三元组模式集合TP Up1…七口』,仓Li建MapReduce job信息用以对集合中三元组模式结果集按连接变量执行连接操作,其中连接变量顺序的选择遵循I)连接越多三元组模式的变量优先处理;2)对于连接有相同数量三元组模式的变量,则选择连接有最多主体绑定三元组模式的变量优先处理;3)在选择消除某个变量时,若变量集合中存在与该变量非冲突的变量(与该变量不同在一个三元组模式中)则在同一个MapReduce job中消除;具体步骤如下:d41:初始化一个空Job集合,计算V (V1, VfvJ中各变量Vi的选择度,并按选择
度降序排列;d42:如果TP不为空,则执行步骤d43,d44,d45,d46,d47 ;否则执行步骤d48 ;d43:如果V不为空且V中还存在连接变量,则执行步骤d44 ;否则执行步骤d45 ;d44:创建一个MapReduce job信息,如果V不为空,依次取出变量Vi,如果Vi是连接变量且为非冲突变量(与job中存在的变量互为非冲突变量),将其加入job中,并从V中删除,将Vi连接的TP2 (tPl. .tpn)加入job中,并从TP中删除,根据TP2重写为新的tp并加入TP中;d45:创建一个MapReduce job信息,将V中变量、TP元素加入job中用于执行笛卡尔积;d46:将job加入Job集合中;d47:迭代执行步骤 d42,d43,d44,d45,d46 ;d48:重写AND节点并返回Job ;d5:将生成的一系列job信息作为执行计划发送到Hadoop平台。步骤e:通过MapReduce框架从HBase中读取数据,按查询计划执行分布式查询,最后按结果变量返回查询结果;查询执行计划包括BGP连接操作、左连接操作、求并集操作,其中并集操作简单地将数据合并,BGP连接操作利用MapReduce框架特有的Map/Reduce模型将数据拆分后再进行连接,左连接操作是一种更简单的BGP连接操作,因此查询计划执行的核心是BGP连接操作;如图2为BGP连接执行流程图,具体步骤如下:e21:Mapper任务读取HBase中数据,利用HBase过滤器首先对数据进行过滤;e22:在Mapper任务中进一步对数据进行过滤,并重新组织数据,按key-value形式输出;e23:在Mapper_>Reducer阶段,对数据进行排序、浓缩,将Mapper输出数据按key值进行排序并浓缩;e24:在Reducer任务中,将具有相同key的value按key执行连接操作,完成BGP连接。
BGP连接操作中,对于一个简单基本图模式:? X pl yl,?xp2 y2,假设有<sl, pi, olXsl, p2, o2>两个RDF三元组数据,通过Mapper任务读取,在Mapper任务中过滤,组装形成 <x_sl, yl_ol I tpl>、<x_sl, y2_o2 | tp2>,经过排序、浓缩形成 <x_sl, <yl_ο 11 tpl, y2_o2 | tp2>>,在reducer任务中对具有相同key的value进行连接,形成sl,ol,02,由此完成BGP连接。实施例:本实施例中采用的RDF数据集为SP2Bench提供的标准数据集以及标准SPARQL查询语句。SP2Bench是一个针对SPARQL查询语句的开源的公共测试平台。它提供了一个RDF标准数据集产生器和多个复杂SPARQL标准语句。SP2Bench提供的标准数据集产生器可以产生任意大小的数据集,其产生数据以N3格式文件存储。SP2Bench平台提供的SPARQL语句更全面,其包含多种操作符如Optional、Union。采用2台master节点、8台slave节点构建Hadoop平台,两台master节点分别作为 namenode/ jobtracker 节点,配置为 2 核 Intel Pentium4CPU, 2GB 内存,80GB 硬盘;8 台slave 节点,作为 datanode/tasktracker 节点,配置为 2 核 Intel Pentium4CPU, 1.5GB 内存,80GB硬盘。将当前流行的语义网框架Jena、Sesame与本发明提出的基于Hadoop的处理方案进行对比,对基于Hadoop的处理方案进行性能评估。其中Jena、Sesame运行环境为
3.16GHz四核处理器、内存6GB、硬盘4TB。表I
权利要求
1.一种基于Hadoop的海量RDF数据分布式查询处理方法,利用MapReduce框架对存储于分布式数据库HBase中的RDF数据进行SPARQL查询,所述方法包括: 步骤a:将RDF数据上传至HDFS中,通过Hadoop平台的MapReduce框架读取数据将其并打存储在HBase中; 步骤b:对用户提交的SPARQL查询语句段进行预处理,对语句进行解析并提取出其中的前缀声明、结果变量、图模式子句; 步骤c:还原图模式子句中的前缀字符,将还原后的图模式子句转化为树模型,以树的结构来表示查询语句的完整图模式; 步骤d:分解树模型,以自底向上、自左向右的方式遍历树节点并生成匹配各节点的查询计划,并将查询计划发送到Hadoop平台; 步骤e:通过MapReduce框架从HBase中读取数据,按照查询计划执行分布式查询,最后按结果变量返回查询结果。
2.如权利要求1所述的基于Hadoop的海量RDF数据分布式查询处理方法,其特征在于,所述步骤a中: 利用MapReduce框架将RDF数据存储入HBase中,其中以三张表来存储RDF数据,分别为:将RDF三元组的主体、谓词组合作为rowkey存储,客体作为column name存储;将RDF三元组的谓词、客体组合作为rowkey存储,主体作为columnname存储;将RDF三元组的客体、主体组合作为row key存储,谓词作为column name存储。
3.如权利要求1所述的基于Hadoop的海量RDF数据分布式查询处理方法,其特征在于,所述步骤c包括: 步骤Cl:对图模式子句中的三元组模式进行编号; 步骤c2:利用提取出的前缀声明替代图模式子句中的前缀字符; 步骤c3:将图模式子句转化为树结构模型。
4.如权利要求1所述的基于Hadoop的海量RDF数据分布式查询处理方法,其特征在于,所述步骤d包括: 步骤dl:首先从树模型结构倒数第二层以自底向上、自左向右的方式遍历整棵树,依次取出各节点; 步骤d2:根据节点的子节点创建三元组模式集合以及变量集合,变量集合包括变量名、变量连接三元组模式编号及其在三元组模式中的位置; 步骤d3:按照节点类型创建匹配该节点的一系列job信息,并重写该节点; 步骤d4:将生成的一系列job信息作为查询执行计划发送到Hadoop平台。
5.如权利要求1所述的基于Hadoop的海量RDF数据分布式查询处理方法,其特征在于,所述步骤e包括: 步骤el:通过MapReduce框架读取HBase中数据; 步骤e2:按执行计划执行BGP连接操作、左连接操作以及合并操作,最终完成分布式查询; 步骤e3:按照结果变量提取最终结果,返回查询结果。
6.如权利要求5所述的基于Hadoop的海量RDF数据分布式查询处理方法,其特征在于,所述步骤e2中查询执行计划中MapReduce job执行BGP连接操作包括:步骤e21:Mapper任务读取HBase中数据,利用HBase过滤器首先对数据进行过滤。步骤e22:在Mapper任务中进一步对数据进行过滤,并重新组织数据,按key-value形式输出。
步骤e23:在Mapper_>Reducer阶段,对数据进行排序、浓缩,将Mapper输出数据按key值进行排序并浓缩。
步骤e24:在Reducer任务中, 将具有相同key的value按key执行连接操作,完成BGP连接。
全文摘要
本发明公开了一种基于Hadoop平台的海量RDF数据分布式查询处理方法,属于计算机领域。所述方法主要包括以下步骤,步骤a将RDF数据上传至HDFS中,通过Hadoop平台的MapReduce框架读取数据并存储在分布式数据库HBase中;步骤b对用户提交的SPARQL查询语句段进行预处理,对语句进行解析并提取出其中的前缀声明、结果变量、图模式子句;c还原图模式子句中的前缀字符,将还原后的图模式子句转化为树模型;d分解树模型,以自底向上、自左向右的方式遍历树节点并生成匹配各节点的查询计划,将最终的查询计划发送到Hadoop平台;e通过MapReduce框架从HBase中读取数据,按照查询计划执行分布式查询,最后按结果变量返回查询结果。
文档编号G06F17/30GK103116625SQ20131003766
公开日2013年5月22日 申请日期2013年1月31日 优先权日2013年1月31日
发明者张小洪, 杨丹, 李珩, 谢娟, 成正斌, 洪明坚, 葛永新, 杨梦宁, 徐玲, 胡海波 申请人:重庆大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1