CN105302838B - 分类方法、查找方法和设备 - Google Patents
分类方法、查找方法和设备 Download PDFInfo
- Publication number
- CN105302838B CN105302838B CN201410373639.4A CN201410373639A CN105302838B CN 105302838 B CN105302838 B CN 105302838B CN 201410373639 A CN201410373639 A CN 201410373639A CN 105302838 B CN105302838 B CN 105302838B
- Authority
- CN
- China
- Prior art keywords
- node
- hash codes
- bucket
- hash
- node device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种分类方法、查找方法和设备。该分类方法用于包括X个节点和一个主节点的分布式系统中,该分类方法包括:第一节点将主节点分配的待分类数据进行哈希编码得到哈希码,第一节点为该X个节点之一;第一节点将多个哈希码根据高m位存储到第一节点的s个第一存储桶中,使得s个第一存储桶中的每个第一存储桶中的哈希码的具有相同的高m位,并且s个第一存储桶中的不同第一存储桶中的哈希码具有不同的高m位;第一节点与X个节点中的第二节点交换各自的s个第一存储桶中的哈希码,使得具有相同高m位的哈希码唯一对应所述X个节点中的一个节点。本发明实施例的技术方案使得在查找时能够提高查找速度。
Description
技术领域
本发明涉及通信领域,尤其涉及分类方法、查找方法和设备。
背景技术
基于Mahout机器学习平台的分布式集群文本分类技术,将任务切割给多个从机并行执行,由主机汇总词频。在Mahout平台中文本查找使用哈希树结构来完成新输入单词的词频查找过程,利用哈希函数对字符串生成32位(bits)的哈希编码进行寻址。对于每个从机,采用双重哈希线性探测的方法,来匹配特定单词并统计词频。双重哈希线性探查法使用两个哈希函数在哈希表中形成一个探查序列。可以沿此探查序列逐个查找,直到找到给定的关键字。由于哈希树是分布式地存放在集群各节点(即从机)中,探查序列对应的哈希地址跳跃地分布在整个分布式集群中各节点对应的哈希表中。因此在采用双重哈希线性探查法查找存在冲突的关键字时,需要跨节点查找,查找速度较慢。
发明内容
本发明实施例提供了一种分类方法、查找方法和设备,使得在查找时能够提高查找速度。
第一方面,提供了一种分类方法,分类方法用于分布式系统中,分布式系统包括一个主节点和X个节点,方法包括:第一节点将主节点分配的待分类数据进行哈希编码得到多个哈希码,第一节点为X个节点之一;第一节点将多个哈希码根据高m位存储到第一节点的s个第一存储桶中,使得s个第一存储桶中的每个第一存储桶中的哈希码具有相同的高m位,并且s个第一存储桶中的不同第一存储桶中的哈希码具有不同的高m位;第一节点与X个节点中的第二节点交换各自的s个第一存储桶中的哈希码,使得X个节点中的每个节点的第二存储桶存储X个节点中的具有相同高m位的哈希码,并且X个节点中的不同节点的第二存储桶中存储的哈希码具有不同的高m位;第一节点将X个节点中与第一节点对应的具有相同高m位的哈希码存储到第一节点的第二存储桶中。
结合第一方面,在第一种可能的实现方式中,第一节点与X个节点中的第二节点交换各自的s个第一存储桶中的哈希码,使得X个节点中的每个节点的第二存储桶存储X个节点中的具有相同高m位的哈希码,包括:第一节点确定第二节点对应的哈希码的高m位,将与第二节点对应的哈希码的高m位相同的第一节点的第p个存储桶中的哈希码发送至第二节点,以便第二节点将第一节点的第p个存储桶中的哈希码与具有相同高m位的第二节点的第q个存储桶中的哈希码存储在第二节点的第二存储桶中;第一节点接收第二节点发送的第x个存储桶中的哈希码,其中,第一节点将X个节点中与第一节点对应的具有相同高m位的哈希码存储到第一节点的第二存储桶中,包括:第一节点将第二节点发送的第x个存储桶中的哈希码与具有相同高m位的第一节点的第y个存储桶中的哈希码存储在第一节点的第二存储桶中,使得具有相同高m位的哈希码唯一对应X个节点中的一个节点。
结合第一方面或第一种可能的实现方式,在第二种可能的实现方式中,该分类方法还包括:第一节点将第一节点的第二存储桶中的哈希码根据次高n位存储到t个第三个存储桶中,其中t个第三存储桶中的每个第三存储桶中的哈希码具有相同的高m位和次高n位,并且t个第三存储桶中的不同第三存储桶中的哈希码具有不同的高m位和次高n位。
结合第二种可能的实现方式,在第三种可能的实现方式中,该分类方法还包括:第一节点将t个第三存储桶中的每个第三存储桶中的哈希码排序;第一节点获取每个第三存储桶中的预设哈希码和预设哈希码在第三存储桶中的位置信息;第一节点根据每个第三存储桶中的预设哈希码和预设哈希码在第三存储桶中的位置信息生成查找表,以便第一节点根据查找表确定待查找的哈希码在第三存储桶中的位置。
结合第二种或第三种可能的实现方式中,在第四种可能的实现方式中,n和t满足以下关系:t=2n。
结合上述任一种可能的实现方式,在第五种可能的实现方式中,待分类数据为待分类文本中的多个单词,在第一节点将主节点分配的待分类文本中的多个单词根据哈希编码得到多个哈希码之后,分类方法还包括:第一节点确定多个哈希码分别对应的多个P位码,多个P位码分别表示多个哈希码对应的多个单词的统计频次;第一节点将多个P位码与对应的多个哈希码分别结合为多个第一码,使得多个P位码分别为多个第一码的低P位。
结合第五种可能的实现方式,在第六种可能的实现方式中,在第一节点将X个节点中与第一节点对应的具有相同高m位的哈希码存储到第一节点的第二存储桶中之后,该分类方法还包括:第一节点将第二存储桶中具有相同哈希码的第一码的低P位相加。
结合第一方面的第一种至第六种可能的实现方式中的任一种可能的实现方式,在第七种可能的实现方式中,在第一节点确定第二节点对应的哈希码的高m位之前,分类方法还包括:第一节点接收主节点发送的信息,信息指示哈希码的高m位与X个节点的对应关系;其中,第一节点确定第二节点对应的哈希码的高m位包括:第一节点根据对应关系,确定第二节点对应的哈希码的高m位。
结合上述任一种可能的实现方式,在第八种可能的实现方式中,s和m满足以下关系:s=2m。
结合上述任一种可能的实现方式,在第九种可能的实现方式中,X和m满足以下关系:X=2m。
第二方面,提供了一种分类方法,分类方法用于分布式系统中,分布式系统包括一个主节点和X个节点,分类方法包括:主节点确定X个节点存储的哈希码的高m位与X个节点的对应关系,使得具有相同高m位的哈希码唯一对应X个节点中的一个节点;主节点向X个节点发送信息,信息用于指示哈希码的高m位与X个节点的对应关系。
第三方面,提供了一种查找方法,该查找方法包括:该查找方法用于分布式系统中,所述分布式系统包括一个主节点和X个节点,X个节点中的第一节点根据第一方面及第一方面的第一种至第九种可能的实现方式中的任一种可能的实现方式所述的分类方法存储哈希码,查找方法包括:第一节点接收主节点发送的待查找的哈希码;第一节点根据待查找的哈希码的高m位查找待查找的哈希码。
结合第三方面,在第三方面的第一种可能的实现方式中,第一节点根据待查找的哈希码的高m位查找待查找的哈希码包括:第一节点根据待查找的哈希码的高m位和次高n位查找待查找的哈希码。
第四方面,提供了一种查找方法,该查找方法用于分布式系统中,分布式系统包括一个主节点和X个节点,主节点根据权利要求11的分类方法存储哈希码,查找方法包括:主节点对待查找数据进行哈希编码得到待查找的哈希码;主节点根据哈希码的高m位与X个节点的对应关系确定待查找的哈希码的高m位对应的第一节点,第一节点为X个节点之一;主节点将待查找的哈希码发送至第一节点,以便第一节点查找待查找的哈希码。
第五方面,提供了一种节点设备,节点设备用于分布式系统中,分布式系统包括一个主节点设备和X个节点设备,节点设备包括:编码模块,用于将主节点分配的待分类数据进行哈希编码得到多个哈希码;存储模块,用于将多个哈希码根据高m位存储到s个第一存储桶中,使得s个第一存储桶中的每个第一存储桶中的哈希码具有相同的高m位,并且s个第一存储桶中的不同第一存储桶中的哈希码具有不同的高m位;交互模块,用于与X个节点设备中的第二节点设备交换各自的s个第一存储桶中的哈希码,使得X个节点设备中的每个节点设备的第二存储桶存储X个节点设备中的具有相同高m位的哈希码,并且X个节点设备中的不同节点设备的第二存储桶存储的哈希码具有不同的高m位,其中,存储模块还用于将X个节点中与节点设备对应的具有相同高m位的哈希码存储到节点设备的第二存储桶中。
结合第五方面,在第五方面的第一种可能的实现方式中,该节点设备还包括:确定模块,用于确定第二节点设备对应的哈希码的高m位;交互模块包括:发送单元,用于将与第二节点设备对应的哈希码的高m位相同的节点设备的第p个存储桶中的哈希码发送至第二节点设备,以便第二节点设备将节点设备的第p个存储桶中的哈希码与具有相同高m位的第二节点设备的第q个存储桶中的哈希码存储在第二节点设备的第二存储桶中;接收单元,用于接收第二节点设备发送的第x个存储桶中的哈希码,其中,存储模块具体用于:将第二节点设备发送的第x个存储桶中的哈希码与具有相同高m位的节点设备的第y个存储桶中的哈希码存储在节点设备的第二存储桶中,使得具有相同高m位的哈希码唯一对应X个节点设备中的一个节点设备。
结合第五方面或第五方面的第一种可能的实现方式,在第五方面的第二种可能的实现方式中,存储模块还用于:将节点设备的第二存储桶中的哈希码根据次高n位存储到t个第三个存储桶中,其中t个第三存储桶中的每个第三存储桶中的哈希码具有相同的高m位和次高n位,并且t个第三存储桶中的不同第三存储桶中的哈希码具有不同的高m位和次高n位。
结合第五方面的第二种可能的实现方式,在第五方面的第三种可能的实现方式中,该节点设备还包括:查找表模块:用于将t个第三存储桶中的每个第三存储桶中的哈希码排序;获取每个第三存储桶中的预设哈希码和预设哈希码在第三存储桶中的位置信息;根据每个第三存储桶中的预设哈希码和预设哈希码在第三存储桶中的位置信息生成查找表,以便节点设备根据查找表确定待查找的哈希码在第三存储桶中的位置。
结合第五方面的第二种或第三种可能的实现方式,在第五方面的第四种可能的实现方式中,n和t满足以下关系:t=2n。
结合第五方面或第五方面的第一种至第四种可能的实现方式中的任一种可能的实现方式,在第五方面的第五种可能的实现方式中,待分类数据为待分类文本中的多个单词,编码模块还用于:在将主节点分配的待分类文本中的多个单词进行哈希编码得到多个哈希码之后,确定多个哈希码分别对应的多个P位码,多个P位码分别表示多个哈希码对应的的多个单词的统计频次;将多个P位码与多个哈希码分别结合为多个第一码,使得多个P位码分别为多个第一码的低P位。
结合第五方面的第五种可能的实现方式中的任一中可能的实现方式,在第五方面的第六种可能的实现方式中,存储模块还用于:在将X个节点中与节点设备对应的具有相同高m位的哈希码存储到节点设备的第二存储桶中之后,将第二存储桶中具有相同哈希码的第一码的低P位相加。
结合第五方面的第一种至第六种可能的实现方式中的任一种可能的实现方式,在第五方面的第七种可能的实现方式中,接收单元还用于:在确定模块确定第二节点设备对应的哈希码的高m位之前,接收主节点设备发送的信息,信息指示哈希码的高m位与X个节点设备的对应关系;确定模块具体用于:根据该对应关系,确定第二节点设备对应的哈希码的高m位。
结合第五方面或第五方面的第一种至第七种可能的实现方式,在第五方面的第八种可能的实现方式中,s和m满足以下关系:s=2m。
结合第五方面或第五方面的第一种至第八种可能的实现方式中,在第九种可能的实现方式中,X和m满足以下关系:X=2m。
第六方面,提供了一种主节点设备,主节点设备用于分布式系统中,分布式系统包括一个主节点和X个节点设备,主节点设备包括:确定模块,用于确定X个节点设备存储的哈希码的高m位与X个节点设备的对应关系,使得具有相同高m位的哈希码唯一对应X个节点设备中的一个节点设备;发送模块,用于向X个节点设备发送信息,信息用于指示确定模块确定的哈希码的高m位与X个节点设备的对应关系。
第七方面,提供了一种节点设备,该节点设备如第五方面或第五方面的第一种至第九种可能的实现方式中的任一种可能的实现方式所述的节点设备,交互模块还用于:接收主节点设备发送的待查找的哈希码;节点设备还包括:查找模块,用于根据交互模块接收到的待查找的哈希码的高m位查找待查找的哈希码。
结合第七方面,在第七方面的第一种可能的实现方式中,查找模块具体用于:根据待查找的哈希码的高m位和次高n位查找待查找的哈希码。
第八方面,提供了一种主节点设备,该主节点设备如第六方面所述的主节点设备,该主节点设备还包括:主节点设备还包括:编码模块,用于对待查找数据进行哈希编码得到待查找的哈希码,其中,确定模块还用于根据哈希码的高m位与X个节点设备的对应关系确定待查找的哈希码对应的第一节点设备,发送模块还用于将待查找的哈希码发送至第一节点设备,以便第一节点设备查找待查找的哈希码。
基于上述技术方案,通过将哈希码根据高m位映射到与节点具有对应关系的存储桶中,能够根据哈希码的高m位确定该码所对应的节点,避免跨节点查找,从而能够提高查找速度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的分类方法的示意性流程图。
图2是根据本发明实施例的码的示意性结构图。
图3是根据本发明另一实施例的分类方法的示意性流程图。
图4是根据本发明一个实施例的查找方法的示意性流程图。
图5是根据本发明另一实施例的查找方法的示意性流程图。
图6是根据本发明实施例的分类方法的映射过程的示意性流程图。
图7是根据本发明实施例的分类方法的交互过程的示意性流程图。
图8是根据本发明实施例的分类方法的重新映射过程的示意性流程图。
图9a是根据本发明一个实施例的节点设备的示意性框图。
图9b是根据本发明一个实施例的节点设备的交互模块的示意性框图。
图10是根据本发明一个实施例的主节点设备的示意性框图.
图11是根据本发明另一实施例的节点设备的示意性框图。
图12是根据本发明另一实施例的主节点设备的示意性框图.
图13是根据本发明另一实施例的节点设备的示意性框图。
图14是根据本发明另一实施例的主节点设备的示意性框图.
图15是根据本发明又一实施例的节点设备的示意性框图。
图16是根据本发明又一实施例的主节点设备的示意性框图.
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
图1是根据本发明实施例的分类方法100的示意性流程图。分类方法应用于分布式系统中,该分布式系统包括一个主节点和X个节点。主节点将分类任务交割该X个节点并行执行。分类方法100包括如下内容。
110,第一节点将主节点分配的待分类数据进行哈希编码得到多个哈希码,第一节点为X个节点之一。
例如,待分类数据可以是文本、数据等。哈希码可以为32位哈希码,或64位哈希码,或128位哈希码等,本发明实施例对此并不限制。
120,第一节点将多个哈希码根据高m位存储到第一节点的s个第一存储桶中,使得s个第一存储桶中的每个第一存储桶中的哈希码具有相同的高m位,并且s个第一存储桶中的不同第一存储桶中的哈希码具有不同的高m位。
130,第一节点与X个节点中的第二节点交换各自的s个第一存储桶中的哈希码,使得X个节点中的每个节点的第二存储桶存储X个节点中的具有相同高m位的哈希码,并且X个节点中的不同节点的第二存储桶存储的哈希码具有不同的高m位。
140,第一节点将X个节点中与第一节点对应的具有相同高m位的哈希码存储到第一节点的第二存储桶中。
在本发明实施例中,存储桶可以理解为是节点内的数据存储单元。X个节点中的任一节点可以唯一对应一个第二存储桶,也可以对应多个第二存储桶。但每个第二存储桶只唯一对应一个节点,根据哈希码的高m位即可确定该哈希码所对应的节点。这样,就可以将冲突的哈希码分到同一节点中。
根据本发明实施例的分类方法,通过将哈希码根据高m位映射到与节点具有对应关系的存储桶中,能够根据哈希码的高m位确定该码所对应的节点,使得在查找时能够避免跨节点查找,从而能够提高查找速度。
在本发明实施例中,s和m可以满足关系:s=2m。此时每个节点的待分类数据对应的哈希码的高m位包括高m位的所有二进制组合。但本发明并不限于此,s也可以小于2m。例如,当m=5时,待分类数据对应的哈希码不存在11110XX…X和11111XX…X,此时根据哈希码的高5位可以将待分类数据对应的哈希码映射到30个存储桶中,即s=30。
在本发明实施例中,X和m可以满足关系:X=2m。此时哈希码的高m位构成的二进制组合与分布式系统的节点一一对应,即每个节点中存储的哈希码的高m位均相同,且根据哈希码的高m位即可确定该哈希码存放在哪个节点中。但本发明实施例不限于此,X也可以小于2m,此时一个节点可以对应高m位构成的两种或多种二进制组合。
当s=2m,X=2m时,高m位表示的二进制组合、第二存储桶和节点满足一一对应的关系。
根据本发明实施例的分类方法100可以应用于分布式集群文本分类中,本发明实施例中的节点可以对应于集群中的节点。例如,根据分类方法100对待分类分本进行分类后,在匹配特定单词时,根据该单词的哈希码的高m位就可以确定该单词的码所在的节点,因此不需要在节点间通信以判断在哪个节点上,从而能够避免跨节点查找,降低通讯开销。
根据本发明实施例的分类方法100还可以应用于分布式数据库中。例如,采用分类方法100将数据分类存放在数据库中。当要查找特定数据时,可以根据特定数据的哈希码的高m位快速找到数据。
具体地,在130中,第一节点确定第二节点对应的哈希码的高m位,将与第二节点对应的哈希码的高m位相同的第一节点的第p个存储桶中的哈希码发送至第二节点,以便第二节点将第一节点的第p个存储桶中的哈希码与具有相同高m位的第二节点的第q个存储桶中的哈希码存储在第二节点的第二存储桶中;第一节点接收第二节点发送的第x个存储桶中的哈希码。在140中,第一节点将第二节点发送的第x个存储桶中的哈希码与具有相同高m位的第一节点的第y个存储桶中的哈希码存储在第一节点的第二存储桶中,使得具有相同高m位的哈希码唯一对应X个节点中的一个节点。
例如,分布式系统包括四个节点,该四个节点互相交换各自的哈希码,使得具有相同高2位的哈希码唯一对应指定的节点,例如,第一节点对应的哈希码的高2位为00,第二节点对应的哈希码的高2位为01,第三节点对应的哈希码的高2位为10,第四节点对应的哈希码的高2位为11。具体地,第一节点接收其他三个节点发送的高2位为00的哈希码,并且第一节点将高2位为01的哈希码发送至第二节点,将高2位为10的哈希码发送至第三节点,将高2位为11的哈希码发送至第四节点,其他节点与第一节点类似,不再赘述。
可选地,作为另一实施例,在第一节点确定第二节点对应的哈希码的高m位之前,分类方法100还可以包括:第一节点接收主节点发送的信息,该信息指示哈希码的高m位与X个节点的对应关系;其中,第一节点确定第二节点对应的哈希码的高m位包括:第一节点根据该对应关系,确定第二节点对应的哈希码的高m位。
换句话说,哈希码的高m位与分布式系统中的X个节点的对应关系可以是由分布式系统的主节点确定并下发给各个节点的。
可替代地,在本发明实施例中,哈希码的高m位与分布式系统中的X个节点的对应关系还可以是由分布式系统的X个节点确定的,例如X个节点间相互通信确定哈希码的高m位与X个节点的对应关系。
可选地,作为另一实施例,在第一节点与X个节点中的第二节点交换各自的s个第一存储桶中的哈希码之后,分类方法100还可以包括:第一节点将第二存储桶中相同的哈希码合并。
例如,将各个第二存储桶中相同的哈希码对应的值(如频次)相加,保留首个出现的哈希码对应的地址,清空后出现的相同的哈希码。这样就可以实现对数据的统计,例如待分类的海量文本中某个单词出现的次数。
可选地,作为另一实施例,待分类数据为待分类文本中的多个单词,在第一节点将主节点分配的待分类文本中的多个单词根据哈希编码得到多个哈希码之后,分类方法100还可以包括:第一节点确定多个哈希码分别对应的多个P位码,该多个P位码分别表示该多个哈希码对应的多个单词的统计频次;第一节点将该多个P位码与对应的该多个哈希码分别结合为多个第一码,使得该多个P位码分别为该多个第一码的低P位。如图2所示,图2示出的码为N位码。
例如,将待分类文本中的单词进行编码得到32位哈希码,取其高22位作为本发明实施例的22位哈希码,或者直接将待分类文本中的单词进行编码得到22位哈希码,将得到的22位哈希码对应的值(如单词出现的次数)用10位二进制表示,然后将该22位哈希码和该单词对应的值(如单词出现的频次)合并成为32位码。
根据本发明的实施例,将逻辑上对应,空间上分开的哈希码和对应的值合并成一个码,能够减少查找到哈希码后还需要指针索引到对应的值的过程,加速检索过程,同时还能够降低存储浪费。
相应地,在本发明实施例中,在140之后,第一节点可以将第二存储桶中具有相同哈希码的第一码的低P位相加。
当第一码中低P位对应的值溢出时,第一节点可以向处理器发送一个错误指示(ERROR),删除原先相同的哈希码或码的哈希码部分(如n个),依次在第二存储桶中空的内存段存放(n+1)个码。
例如,在莎士比亚文集中,统计出来的the原先有4092个(1023*4,用10位二进制表示),现在又多统计了一次,那么会在将前4个满的码搬移到空的内存段,并在后面加一个频次段为1的新码。另外,根据齐夫规律,若把一篇较长的文章中每个词出现的频次从高到低进行递减排列,其数量关系特征呈双曲线分布。也就是说对于绝大多数单词出现的频次都是较低的。我们通过将逻辑相连,空间分开的哈希码和哈希码对应的值合并成一个码,减少了查找到key后还需要指针索引到value所得到益处,会远大于对极少数单词溢出进行特殊处理所浪费的额外开销。
可选地,作为另一实施例,分类方法100还包括:第一节点将第一节点的第二存储桶中的哈希码根据次高n位存储到t个第三个存储桶中,其中该t个第三存储桶中的每个第三存储桶中的哈希码具有相同的的高m位和次高n位,并且t个第三存储桶中的不同第三存储桶中的哈希码具有不同的高m位和次高n位。
在本发明实施例中,n和t可以满足t=2n。此时,次高n位表示的二进制组合可与所在的第三存储桶一一对应。但本发明实施例不限于此,X也可以小于2m。
将第二存储桶中的哈希码根据次高n位分别存储到t个第三个存储桶中之后,在根据哈希码的高m位确定待查找的哈希码所对应的节点和所在的第二存储桶的基础上,根据哈希码的次高n为能够更加精确地确定待查找的哈希码所在的位置,例如哈希码所在的内存段。
例如,将根据本发明实施例的分类方法100应用于分布式集群文本分类中。匹配特定单词时,根据该单词的码的高m位就可以确定该单词的码所在的节点,进一步地根据该单词的码的次高n位就可以确定该单词的码位于该节点的哪段内存中,能够进一步提高查找速度。例如,当节点将存储桶的入口(即存储桶的初始地址)保存在高速缓冲存储器(Cache)上时,N位码的高m位可以映射节点层,次高n位可以映射节点的cache层。另外,节点可以将桶内全部码都保存在cache上,节点还可以将桶内的全部码都保存在内存中。
可选地,作为另一实施例,分类方法100还可以包括:第一节点将t个第三存储桶中的每个第三存储桶中的哈希码排序;第一节点获取每个第三存储桶中的预设哈希码和该预设哈希码在第三存储桶中的位置信息;第一节点根据每个第三存储桶中的预设哈希码和该预设哈希码在第三存储桶中的位置信息生成查找表,以便第一节点根据查找表确定待查找的哈希码在第三存储桶中的位置。
例如,每个存储桶对应的查找表中可以存储预设的哈希码及其位置信息(如首尾哈希码、五分点哈希码、或八分点哈希码等)。对于数据量特别大的情况,存储桶会比较深,此时能够根据查找表来确定待查找的N位码位于桶内的哪个地址段,无需在存储桶内逐次匹配,从而加速存储桶内的匹配过程。
应理解,本发明的实施例的层次化的分类方法不限于将哈希码分为两层,例如将哈希码依次根据高m位和次高n位进行分类。本发明的实施例的层次化的分类方法还可以根据实际需求将哈希码分为两层以上的层次(如三层或五层),并将哈希码依次根据划分的层次进行分类,具体过程与本发明实施例上文描述类似,为简洁,在此不再赘述。
根据本发明实施例的分类方法,通过将哈希码根据高m位映射到与节点具有对应关系的存储桶中,能够根据哈希码的高m位确定该码所对应的节点,使得在查找时能够避免跨节点查找,从而能够提高查找速度。
根据本发明另一实施例提供了一种分类方法300。分类方法300用于分布式系统中,该分布式系统包括X个节点。分类方法300包括如下内容。
310,确定X个节点存储的哈希码的高m位与X个节点的对应关系,使得具有相同高m位的哈希码唯一对应X个节点中的一个节点。
320,向X个节点发送信息,该信息用于指示哈希码的高m位与X个节点的对应关系。
根据本发明实施例的分类方法,通过确定哈希码的高m位与节点的对应关系,并向节点发送指示该对应关系的信息,能够使得节点根据该对应关系存储哈希码,以便在查找时避免跨节点查找,从而能够提高查找速度。
图4示出了根据本发明实施例的查找方法400的示意性流程图。查找方法400用于分布式系统中,该分布式系统包括一个主节点和X个节点,X个节点中的第一节点根据图1所示实施例的分类方法100存储哈希码。如图4所示,查找方法400包括如下内容。
410,第一节点接收主节点发送的待查找的哈希码。
420,第一节点根据待查找的哈希码的高m位查找待查找的哈希码。
例如,第一节点对应的哈希码可以包括两种高m位,分别存储在两个存储桶中,第一节点根据待查找的哈希码的高m位能够确定该待查找的哈希码所在的存储桶。
根据本发明实施例的查找方法,节点能够根据待查找的哈希码的高m位查找待查找的哈希码,并且无需与其他节点通信,从而能够提高查找速度。
可选地,作为另一实施例,在420中,第一节点可以根据待查找的哈希码的高m位和次高n位查找待查找的哈希码。
当存储桶较深时,第一节点可以根据哈希码的次高n位确定待查找的哈希码在桶中的哪段存储空间,进一步缩小了查找范围,从而能够进一步提高查找速度。
图5示出了根据本发明实施例的查找方法500的示意性流程图。查找方法500用于分布式系统中,该分布式系统包括一个主节点和X个节点,主节点根据图3所示实施例的分类方法300存储哈希码。如图5所示,查找方法500包括如下内容。
510,主节点对待查找数据进行哈希编码得到待查找的哈希码。
520,主节点根据哈希码的高m位与X个节点的对应关系确定待查找的哈希码的高m位对应的第一节点,第一节点为X个节点之一。
530,主节点将待查找的哈希码发送至第一节点,以便第一节点查找待查找的哈希码。
根据本发明实施例的查找方法,主节点能够根据待查找的哈希码的高m位确定唯一对应的节点,无需节点间通信,从而能够提高查找速度。
下面结合图6和图7详细描述根据本发明实施例的分类方法600,分类方法600是分类方法100的具体例子,为便于描述,本发明实施例以分布式集群对海量文本中的单词进行分类的应用场景为例进行描述。该分布式集群包括32个节点。应理解,下面的例子仅是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。
601、主节点将待分类文本分配至32个节点,各节点采用BKDRHash函数(31位),将任意文本中的字符串转化成31位原始哈希码(编码冲撞率极低),并截取高22位,作为如下编码的哈希编码(Hash_Code)段。
602、各节点将逻辑对应的哈希码和值(即该哈希码对应的单词出现的频次)合并成一个32位(bit)的数。如下表所示,高22位为哈希码,低10位为对应的频次。哈希码部分包括高5位和次高5位。存储桶对应的位宽与集群中的节点数N节点满足N节点=2桶宽,例如N节点=32。
603、如图6所示,各节点根据哈希码的高5位映射到相应的存储桶中,该相应的存储桶可以存储在cache中,还可以存储在内存中,也可以一部分存储在cache(如桶的入口地址)另一部分存储在内存中。以节点1为例:节点1将得到的乱序码通过映射函数,按哈希码的高5位地址映射到节点1的内存中的32个存储桶中,其中地址映射是指节点1的码中高5位相同的码会被分别存储到对应的存储桶中,如节点1中的00000XX…X码被存储在节点1中的第一个存储桶,00001XX…X码被存储在节点1中的第二个存储桶,在一个存储桶中的码根据先来后到的原则存放。在节点1的内存中有地址高五位为00000-11111的32个桶,每个存储桶内存储的码的高5位都是相同的,但在桶存储内的码还是乱序的。其他节点与节点1的操作类似,在此不在赘述。进一步可以得到全局有序,局部无序的分布式哈希树。
604、如图7所示,确定每个节点对应的码的高5位,每个节点将各自的32个存储桶中具有相同的高5位的码交换至对应的节点。以各节点的存储桶1为例说明,节点1对应高5位为00000的码,各节点将其存储桶1的码都发往节点1中,则节点1存放的都是整颗哈希树中高5位为00000的全部码,在存放的过程中将相同的码合并,最终生成右边节点1对应的码。各节点的其他存储桶的操作与存储桶1的操作类似,在此不再赘述。此时每个节点对应的码的高5位相同,但是各个节点内的码仍然是无序的。
具体地,合并频次的原则是:判断同一存储桶内两个码是否相同,若相同,频次段相加,如下图所示。不同则依次放入桶中;对于相同的码,相加完频次后,写回首个出现的地址,清空后出现重复的码;当频次段溢出时,向处理器回报一个ERROR,删除原先相同的码(n个),依次在桶中空的内存段存放(n+1)个码。
605、如图8所示,按次高5位地址映射的方式重新映射(re-map)步骤304得到的中间结果,重新映射到各自节点。以节点1为例,节点1内对应的码的高位都是00000,节点1内的码经过次高5位映射到32个桶内,如图8所示,最终节点1内的码,高5位为00000,次高5位与其所在桶的位置一一对应,例如桶1内依次映射:0000000000XX…X、0000000001XX…X、……0000011111XX…X。其他节点的操作与节点1类似,在此不再赘述。通过以上的过程,高5位可以指示码所在节点号,次高5位可以指示码所在内存段号(即所在桶的地址)。
606、根据输入的需要匹配的单词的哈希码,快速得到其词频。具体包括:主节点根据该待查找的单词的哈希码的高5位判断对应的节点;主节点将该待查找的哈希码发送至对应的该节点,该节点根据该待查找的哈希码的次高5位,找到桶的入口,进而逐次匹配到词频,就能够实现较为精准的层次化的查找匹配。
根据本发明实施例的分类方法,通过将哈希码根据高m位映射到与节点具有对应关系的存储桶中,能够根据哈希码的高m位确定该码所对应的节点,使得在查找时能够避免跨节点查找,从而能够提高查找速度。
上文结合图1至图8描述了根据本发明实施例的分类方法和查找方法,下面结合图9至图12详细描述根据本发明实施例的节点设备和主节点设备。
图9a示出了根据本发明实施例的节点设备900的示意性框图。节点设备900用于分布式系统中,该分布式系统包括一个主节点和X个节点。如图9a所示,节点设备900包括:编码模块910、存储模块920和交互模块930。
编码模块910,用于将主节点分配的待分类数据进行哈希编码得到多个哈希码。
存储模块920,用于将编码模块910得到的该多个哈希码根据高m位存储到s个第一存储桶中,使得s个第一存储桶中的每个第一存储桶中的哈希码具有相同的高m位,并且s个第一存储桶中的不同第一存储桶中的哈希码具有不同的高m位。
交互模块930,用于与X个节点设备中的第二节点设备交换各自的s个第一存储桶中的哈希码,使得X个节点设备中的每个节点设备的第二存储桶存储X个节点设备中的具有相同高m位的哈希码,并且X个节点设备中的不同节点设备的第二存储桶存储的哈希码具有不同的高m位。
存储模块920还用于将X个节点中与该节点设备对应的具有相同高m位的哈希码存储到该节点设备的第二存储桶中。
根据本发明实施例的节点设备,通过将哈希码根据高m位映射到与节点设备具有对应关系的存储桶中,能够根据哈希码的高m位确定该码所对应的节点设备,使得在查找时能够避免跨节点设备查找,从而能够提高查找速度。
具体地,在本发明实施例中,s和m可以满足以下关系:s=2m。此时待分类数据对应的哈希码的高m位包括高m位的所有二进制组合。
具体地,在本发明实施例中,X和m可以满足以下关系:X=2m。此时哈希码的高m位构成的二进制组合与分布式系统的节点设备一一对应。
具体地,在本发明实施例中,如图9b所示,节点设备900还包括:确定模块940,用于确定第二节点设备对应的哈希码的高m位。交互模块930可以包括:发送单元931,用于将与第二节点设备对应的哈希码的高m位相同的节点设备的第p个存储桶中的哈希码发送至第二节点设备,以便第二节点设备将节点设备900的第p个存储桶中的哈希码与具有相同高m位的第二节点设备的第q个存储桶中的哈希码存储在第二节点设备的第二存储桶中;接收单元932,用于接收第二节点设备发送的第x个存储桶中的哈希码。其中,存储模块920还用于:将接收单元932接收的第二节点设备发送的第x个存储桶中的哈希码与具有相同高m位的节点设备900的第y个存储桶中的哈希码存储在节点设备900的第二存储桶中,使得具有相同高m位的哈希码唯一对应X个节点设备中的一个节点设备。
可选地,作为另一实施例,接收单元932还用于:在确定模块940确定第二节点设备对应的哈希码的高m位之前,接收主节点设备发送的信息,信息指示哈希码的高m位与X个节点设备的对应关系。确定模块940具体用于:根据该对应关系,确定第二节点设备对应的哈希码的高m位。
换句话说,哈希码的高m位与分布式系统中的X个节点的对应关系可以是由分布式系统的主节点确定并下发给各个节点的。
可替代地,在本发明实施例中,哈希码的高m位与分布式系统中的X个节点的对应关系还可以是由分布式系统的X个节点确定的,例如X个节点间相互通信确定哈希码的高m位与X个节点的对应关系。
可选地,作为另一实施例,存储模块920还可以用于在交互模块930与X个节点设备中的第二节点设备交换各自的s个第一存储桶中的哈希码之后,将第二存储桶中的相同的哈希码合并。
可选地,作为另一实施例,待分类数据为待分类文本中的多个单词,编码模块910还可以用于:在将主节点分配的待分类文本中的多个单词进行哈希编码得到多个哈希码之后,确定多个哈希码分别对应的多个P位码,多个P位码分别表示多个哈希码对应的多个单词的统计频次;将多个P位码与多个哈希码分别结合为多个第一码,使得多个P位码分别为多个第一码的低P位。
相应地,在本发明实施例中,存储模块920还可以用于:在将X个节点中与节点设备900对应的具有相同高m位的哈希码存储到节点设备900的第二存储桶中之后,将该第二存储桶中具有相同哈希码的第一码的低P位相加。
可选地,作为另一实施例,存储模块920还可以用于:将节点设备900的第二存储桶中的哈希码根据次高n位存储到t个第三个存储桶中,其中t个第三存储桶中的每个第三存储桶中的哈希码具有相同的高m位和次高n位,并且t个第三存储桶中的不同第三存储桶中的哈希码具有不同的高m位和次高n位。
可选地,作为另一实施例,节点设备900还可以包括:查找表模块950:用于将t个第三存储桶中的每个第三存储桶中的哈希码排序;获取每个第三存储桶中的预设哈希码和预设哈希码在第三存储桶中的位置信息;根据每个第三存储桶中的预设哈希码和预设哈希码在第三存储桶中的位置信息生成查找表,以便节点设备900根据查找表确定待查找的哈希码在第三存储桶中的位置。此时能够根据查找表来确定待查找的哈希码位于桶内的哪个地址段,无需在存储桶内逐次匹配,从而加速存储桶内的匹配过程。
应理解,根据本发明实施例的节点设备900可对应于根据本发明实施例的分类方法100中的节点,并且节点设备900中的各个模块的上述和其它操作和/或功能分别为了实现图1示出的实施例中的各个方法的相应流程,为了简洁,在此不再赘述。
根据本发明实施例的节点设备,通过将哈希码根据高m位映射到与节点设备具有对应关系的存储桶中,能够根据哈希码的高m位确定该码所对应的节点设备,使得在查找时能够避免跨节点查找,从而能够提高查找速度。
图10示出了根据本发明实施例的主节点设备1000。主节点设备1000用于分布式系统中,该分布式系统包括一个主节点和X个节点设备。如图10所示,主节点设备1000包括:确定模块1010和发送模块1020。
确定模块1010,用于确定X个节点设备存储的哈希码的高m位与X个节点设备的对应关系,使得具有相同高m位的哈希码唯一对应X个节点设备中的一个节点设备。
发送模块1020,用于向X个节点设备发送信息,信息用于指示确定模块确定的哈希码的高m位与X个节点设备的对应关系。
根据本发明实施例的主节点设备,通过确定哈希码的高m位与节点设备的对应关系,并向节点设备发送指示该对应关系的信息,能够使得节点设备根据该对应关系存储哈希码,以便在查找时避免跨节点查找,从而能够提高查找速度。
图11示出了根据本发明另一实施例的节点设备1100的示意性框图。节点设备1100包括编码模块910、存储模块920、交互模块930和查找模块1110。节点设备1100中与图9所示的实施例的节点设备900中编号相同的模块具有相同的功能,在此不再赘述。
在本发明实施例中,交互模块930还可以用于接收主节点设备发送的待查找的哈希码。查找模块1110用于根据交互模块930接收到的待查找的哈希码的高m位查找待查找的哈希码。
根据本发明实施例的节点设备,能够根据待查找的哈希码的高m位查找待查找的哈希码,并且无需与其他节点设备通信,能够提高查找速度。
可选地,作为另一实施例,查找模块1110具体用于:根据待查找的哈希码的高m位和次高n位查找待查找的哈希码。
当存储桶较深时,节点设备1100可以根据哈希码的次高n位确定待查找的哈希码在桶中的哪段存储空间,进一步缩小了查找范围,从而能够进一步提高查找速度。
图12示出了根据本发明另一实施例的主节点设备1200的示意性框图。如图12所示,主节点设备1200包括:编码模块1210、确定模块1010和发送模块1020。主节点设备1200中与图9所示的实施例的主节点设备1000中编号相同的模块具有相同的功能,在此不再赘述。
在本发明实施例中,编码模块1210,用于对待查找数据进行哈希编码得到待查找的哈希码。确定模块1010还用于根据哈希码的高m位与X个节点设备的对应关系确定待查找的哈希码对应的第一节点设备。发送模块1020还用于将待查找的哈希码发送至第一节点设备,以便第一节点设备查找该待查找的哈希码。
根据本发明实施例的主节点设备,能够根据待查找的哈希码的高m位确定唯一对应的节点设备,查找时无需节点设备间通信,从而能够提高查找速度。
图13示出了根据本发明另一实施例的节点设备1300的示意性框图。节点设备1300用于分布式系统中,该分布式系统包括一个主节点设备和X个节点设备。如图13所示,节点设备1300包括:处理器1310、存储器1320、收发器1330和总线系统1340。其中,处理器1310、存储器1330和收发器1320通过总线系统1340相连,该存储器1320用于存储指令,该处理器1310用于执行该存储器1320存储的指令。
处理器1310用于将主节点设备分配的待分类数据进行哈希编码得到多个哈希码。存储器1320用于将多个哈希码根据高m位存储到s个第一存储桶中,使得s个第一存储桶中的每个第一存储桶中的哈希码具有相同的高m位,并且s个第一存储桶中的不同第一存储桶中的哈希码具有不同的高m位。收发器1330用于与X个节点设备中的第二节点设备交换各自的s个第一存储桶中的哈希码,使得X个节点设备中的每个节点设备的第二存储桶存储X个节点设备中的具有相同高m位的哈希码,并且X个节点设备中的不同节点设备的第二存储桶存储的哈希码具有不同的高m位。存储器1320还用于将X个节点中与该节点设备对应的具有相同高m位的哈希码存储到该节点设备的第二存储桶中。
根据本发明实施例的节点设备,通过将哈希码根据高m位映射到与节点设备具有对应关系的存储桶中,能够根据哈希码的高m位确定该码所对应的节点设备,使得在查找时能够避免跨节点查找,从而能够提高查找速度。
应理解,在本发明实施例中,该处理器1310可以是中央处理单元(CentralProcessing Unit,CPU),该处理器1310还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器1320可以包括只读存储器和随机存取存储器,并向处理器1310提供指令和数据。存储器1320的一部分还可以包括非易失性随机存取存储器。例如,存储器1320还可以存储设备类型的信息。
该总线系统1330除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统1330。
在实现过程中,上述方法的各步骤可以通过处理器1310中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1320,处理器1310读取存储器1320中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
具体地,在本发明实施例中,s和m可以满足以下关系:s=2m。此时待分类数据对应的哈希码的高m位包括高m位的所有二进制组合。
具体地,在本发明实施例中,X和m可以满足以下关系:X=2m。此时哈希码的高m位构成的二进制组合与分布式系统的节点设备一一对应。
具体地,在本发明实施例中,处理器1310还可以用于确定第二节点设备对应的哈希码的高m位。收发器1330具体可以用于:将与第二节点设备对应的哈希码的高m位相同的节点设备的第p个存储桶中的哈希码发送至第二节点设备,以便第二节点设备将节点设备的第p个存储桶中的哈希码与具有相同高m位的第二节点设备的第q个存储桶中的哈希码存储在第二节点设备的第二存储桶中;接收第二节点设备发送的第x个存储桶中的哈希码。其中,存储器1320还可以具体用于:将第二节点设备发送的第x个存储桶中的哈希码与具有相同高m位的节点设备的第y个存储桶中的哈希码存储在所示节点设备的第二存储桶中,使得具有相同高m位的哈希码唯一对应X个节点设备中的一个节点设备。
可选地,作为另一实施例,收发器1330还可以用于:在处理器1310确定第二节点设备对应的哈希码的高m位之前,接收主节点设备发送的信息,信息指示哈希码的高m位与X个节点设备的对应关系。处理器1310可以具体用于根据对应关系,确定第二节点设备对应的哈希码的高m位。
换句话说,哈希码的高m位与分布式系统中的X个节点的对应关系可以是由分布式系统的主节点确定并下发给各个节点的。
可替代地,在本发明实施例中,哈希码的高m位与分布式系统中的X个节点的对应关系还可以是由分布式系统的X个节点确定的,例如X个节点间相互通信确定哈希码的高m位与X个节点的对应关系。
可选地,作为另一实施例,存储器1320还可以用于在收发器1330与X个节点设备中的第二节点设备交换各自的s个第一存储桶中的哈希码之后,将第二存储桶中的相同的哈希码合并。
可选地,作为另一实施例,待分类数据为待分类文本中的多个单词,处理器1310还可以用于:在将主节点分配的待分类文本中的多个单词进行哈希编码得到多个哈希码之后,确定多个哈希码分别对应的多个P位码,多个P位码分别表示多个哈希码对应的多个单词的统计频次;将多个P位码与多个哈希码结合为多个第一码,使得多个P位码分别为多个第一码的低P位。
相应地,在本发明实施例中,存储器1320还可以用于在将X个节点中与节点设备900对应的具有相同高m位的哈希码存储到节点设备900的第二存储桶中之后,将该第二存储桶中具有相同哈希码的第一码的低P位相加。
可选地,作为另一实施例,存储器1320还可以用于:将节点设备1300的第二存储桶中的哈希码根据次高n位存储到t个第三个存储桶中,其中t个第三存储桶中的每个第三存储桶中的哈希码具有相同的高m位和次高n位,并且t个第三存储桶中的不同第三存储桶中的哈希码具有不同的高m位和次高n位。
可选地,作为另一实施例,处理器1310还可以用于:将t个第三存储桶中的每个第三存储桶中的哈希码排序;获取每个第三存储桶中的预设哈希码和预设哈希码在第三存储桶中的位置信息;根据每个第三存储桶中的预设哈希码和预设哈希码在第三存储桶中的位置信息生成查找表,以便节点设备900根据查找表确定待查找的哈希码在第三存储桶中的位置。此时能够根据查找表来确定待查找的哈希码位于桶内的哪个地址段,无需在存储桶内逐次匹配,从而加速存储桶内的匹配过程。
应理解,根据本发明实施例的节点设备1300可对应于根据本发明实施例的分类方法100的节点,并且节点设备1300中的各个模块的上述和其它操作和/或功能分别为了实现图1所示实施例的相应流程,为了简洁,在此不再赘述。
根据本发明实施例的节点设备,通过将哈希码根据高m位映射到与节点设备具有对应关系的存储桶中,能够根据哈希码的高m位确定该码所对应的节点设备,使得在查找时避免跨节点查找,从而能够提高查找速度。
图14示出了根据本发明另一实施例的主节点设备1400。主节点设备用于分布式系统中,该分布式系统包括一个主节点设备和X个节点设备。主节点设备1400包括:处理器1410、存储器1420、收发器1430和总线1440。其中,处理器1410、收发器1430和存储器1420通过总线系统1440相连,该存储器1420用于存储指令,该处理器1410用于执行该存储器1420存储的指令。
处理器1410用于确定X个节点存储的哈希码的高m位与X个节点的对应关系,使得具有相同高m位的哈希码唯一对应X个节点中的一个节点。收发器1420用于向X个节点发送信息,该信息用于指示哈希码的高m位与X个节点的对应关系。
应理解,根据本发明实施例的节点设备1400可对应于根据本发明实施例的分类方法300的节点,并且节点设备1400中的各个模块的上述和其它操作和/或功能分别为了实现图3所示实施例的相应流程,为了简洁,在此不再赘述。
根据本发明实施例的主节点设备,通过确定哈希码的高m位与节点设备的对应关系,并向节点设备发送指示该对应关系的信息,能够使得节点设备根据该对应关系存储哈希码,以便在查找时避免跨节点查找,从而能够提高查找速度。
本发明另一实施例提供了一种节点设备1500。节点设备1500包括:处理器1510、存储器1520、收发器1530和总线系统1540。其中,处理器1510、存储器1530和收发器1520通过总线系统1540相连,该存储器1520用于存储指令,该处理器1510用于执行该存储器1520存储的指令。
处理器1510、存储器1520、收发器1530和总线系统1540具有图13所示的实施例的节点设备1300中的处理器1310、存储器1320、收发器1330和总线系统1340的全部功能。
在本发明实施例中,收发器1530还可以用于接收主节点设备发送的待查找的哈希码。处理器1510还可以用于根据收发器1530接收到的待查找的哈希码的高m位查找待查找的哈希码。
根据本发明实施例的节点设备,能够根据待查找的哈希码的高m位查找待查找的哈希码,并且无需与其他节点设备通信,能够提高查找速度。
可选地,作为另一实施例,处理器具体用于:根据待查找的哈希码的高m位和次高n位查找待查找的哈希码。
当存储桶较深时,节点设备1500可以根据哈希码的次高n位确定待查找的哈希码在桶中的哪段存储空间,进一步缩小了查找范围,从而能够进一步提高查找速度。
应理解,根据本发明实施例的节点设备1500可对应于根据本发明实施例的查找方法400中的节点,并且节点设备1500中的各个模块的上述和其它操作和/或功能分别为了实现图4所示实施例的相应流程,为了简洁,在此不再赘述。
本发明另一实施例提供了一种主节点设备1600。主节点设备1600包括:处理器1610、存储器1620、收发器1630和总线系统1640。其中,处理器1610、存储器1630和收发器1620通过总线系统1640相连,该存储器1620用于存储指令,该处理器1610用于执行该存储器1620存储的指令。
处理器1610、存储器1620、收发器1630和总线系统1640具有图14所示的实施例的主节点设备1400中的处理器1410、存储器1420、收发器1430和总线系统1440的全部功能。
此外,处理器1610还可以用于:对待查找数据进行哈希编码得到待查找的哈希码;根据哈希码的高m位与X个节点设备的对应关系确定待查找的哈希码对应的第一节点设备。收发器1630还可以用于将待查找的哈希码发送至第一节点设备,以便第一节点设备查找该待查找的哈希码。
应理解,根据本发明实施例的主节点设备1600可对应于根据本发明实施例的查找方法500中的主节点,并且主节点设备1600中的各个模块的上述和其它操作和/或功能分别为了实现图5所示实施例的相应流程,为了简洁,在此不再赘述。
根据本发明实施例的主节点设备,能够根据待查找的哈希码的高m位确定唯一对应的节点设备,查找时无需节点设备间通信,从而能够提高查找速度。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (28)
1.一种分类方法,其特征在于,所述分类方法用于分布式系统中,所述分布式系统包括一个主节点和X个节点,所述方法包括:
第一节点将所述主节点分配的待分类数据进行哈希编码得到多个哈希码,所述第一节点为所述X个节点之一;
所述第一节点将所述多个哈希码根据高m位存储到所述第一节点的s个第一存储桶中,使得所述s个第一存储桶中的每个第一存储桶中的哈希码具有相同的高m位,并且所述s个第一存储桶中的不同第一存储桶中的哈希码具有不同的高m位;
所述第一节点与所述X个节点中的第二节点交换各自的s个第一存储桶中的哈希码,使得所述X个节点中的每个节点的第二存储桶存储所述X个节点中的具有相同高m位的哈希码,并且所述X个节点中的不同节点的第二存储桶中存储的哈希码具有不同的高m位;
所述第一节点将所述X个节点中与所述第一节点对应的具有相同高m位的哈希码存储到所述第一节点的第二存储桶中。
2.根据权利要求1所述的分类方法,其特征在于,所述第一节点与所述X个节点中的第二节点交换各自的s个第一存储桶中的哈希码,使得所述X个节点中的每个节点的第二存储桶存储所述X个节点中的具有相同高m位的哈希码,包括:
所述第一节点确定所述第二节点对应的哈希码的高m位,将与所述第二节点对应的哈希码的高m位相同的第一节点的第p个存储桶中的哈希码发送至所述第二节点,以便所述第二节点将所述第一节点的第p个存储桶中的哈希码与具有相同高m位的第二节点的第q个存储桶中的哈希码存储在所述第二节点的第二存储桶中;
所述第一节点接收所述第二节点发送的第x个存储桶中的哈希码,
其中,所述第一节点将所述X个节点中与所述第一节点对应的具有相同高m位的哈希码存储到所述第一节点的第二存储桶中,包括:
所述第一节点将所述第二节点发送的所述第x个存储桶中的哈希码与具有相同高m位的所述第一节点的第y个存储桶中的哈希码存储在所述第一节点的第二存储桶中,使得具有相同高m位的哈希码唯一对应所述X个节点中的一个节点。
3.根据权利要求1或2所述的分类方法,其特征在于,还包括:
所述第一节点将所述第一节点的第二存储桶中的哈希码根据次高n位存储到t个第三个存储桶中,其中所述t个第三存储桶中的每个第三存储桶中的哈希码具有相同的高m位和次高n位,并且所述t个第三存储桶中的不同第三存储桶中的哈希码具有不同的高m位和次高n位。
4.根据权利要求3所述的分类方法,其特征在于,还包括:
所述第一节点将所述t个第三存储桶中的每个第三存储桶中的哈希码排序;
所述第一节点获取所述每个第三存储桶中的预设哈希码和所述预设哈希码在所述第三存储桶中的位置信息;
所述第一节点根据所述每个第三存储桶中的预设哈希码和所述预设哈希码在第三存储桶中的位置信息生成查找表,以便所述第一节点根据所述查找表确定待查找的哈希码在所述第三存储桶中的位置。
5.根据权利要求3所述的分类方法,其特征在于,所述n和所述t满足以下关系:t=2n。
6.根据权利要求1或2所述的分类方法,其特征在于,所述待分类数据为待分类文本中的多个单词,在所述第一节点将所述主节点分配的待分类文本中的多个单词根据哈希编码得到多个哈希码之后,所述分类方法还包括:
所述第一节点确定所述多个哈希码分别对应的多个P位码,所述多个P位码分别表示所述多个哈希码对应的所述多个单词的统计频次;
所述第一节点将所述多个P位码与对应的所述多个哈希码分别结合为多个第一码,使得所述多个P位码分别为所述多个第一码的低P位。
7.根据权利要求6所述的分类方法,其特征在于,在所述第一节点将所述X个节点中与所述第一节点对应的具有相同高m位的哈希码存储到所述第一节点的第二存储桶中之后,所述方法还包括:
所述第一节点将所述第二存储桶中具有相同哈希码的第一码的低P位相加。
8.根据权利要求2所述的分类方法,其特征在于,在所述第一节点确定第二节点对应的哈希码的高m位之前,所述分类方法还包括:
所述第一节点接收所述主节点发送的信息,所述信息指示哈希码的高m位与所述X个节点的对应关系,
其中,所述第一节点确定所述第二节点对应的哈希码的高m位包括:
所述第一节点根据所述对应关系,确定所述第二节点对应的哈希码的高m位。
9.根据权利要求1或2所述的分类方法,其特征在于,所述s和所述m满足以下关系:s=2m。
10.根据权利要求1或2所述的分类方法,其特征在于,所述X和所述m满足以下关系:X=2m。
11.一种分类方法,其特征在于,所述分类方法用于分布式系统中,所述分布式系统包括一个主节点和X个节点,所述分类方法包括:
所述主节点确定所述X个节点存储的哈希码的高m位与所述X个节点的对应关系,使得具有相同高m位的哈希码唯一对应所述X个节点中的一个节点;
所述主节点向所述X个节点发送信息,所述信息用于指示所述哈希码的高m位与所述X个节点的对应关系。
12.一种查找方法,其特征在于,所述查找方法用于分布式系统中,所述分布式系统包括一个主节点和X个节点,所述X个节点中的第一节点根据权利要求1至10中任一项所述的分类方法存储哈希码,所述查找方法包括:
所述第一节点接收所述主节点发送的待查找的哈希码;
所述第一节点根据所述待查找的哈希码的高m位查找所述待查找的哈希码。
13.根据权利要求12所述的查找方法,其特征在于,所述所述第一节点根据所述待查找的哈希码的高m位查找所述待查找的哈希码包括:
所述第一节点根据所述待查找的哈希码的高m位和次高n位查找所述待查找的哈希码。
14.一种查找方法,其特征在于,所述查找方法用于分布式系统中,所述分布式系统包括一个主节点和X个节点,所述主节点根据权利要求11所述的分类方法存储哈希码,所述查找方法包括:
所述主节点对待查找数据进行哈希编码得到待查找的哈希码;
所述主节点根据哈希码的高m位与所述X个节点的对应关系确定所述待查找的哈希码的高m位对应的第一节点,所述第一节点为所述X个节点之一;
所述主节点将所述待查找的哈希码发送至所述第一节点,以便所述第一节点查找所述待查找的哈希码。
15.一种节点设备,其特征在于,所述节点设备用于分布式系统中,所述分布式系统包括一个主节点设备和X个所述节点设备,所述节点设备包括:
编码模块,用于将所述主节点分配的待分类数据进行哈希编码得到多个哈希码;
存储模块,用于将所述编码模块得到的所述多个哈希码根据高m位存储到s个第一存储桶中,使得所述s个第一存储桶中的每个第一存储桶中的哈希码具有相同的高m位,并且所述s个第一存储桶中的不同第一存储桶中的哈希码具有不同的高m位;
交互模块,用于与所述X个节点设备中的第二节点设备交换各自的s个第一存储桶中的哈希码,使得所述X个节点设备中的每个节点设备的第二存储桶存储所述X个节点设备中的具有相同高m位的哈希码,并且所述X个节点设备中的不同节点设备的第二存储桶存储的哈希码具有不同的高m位,
其中,所述存储模块还用于将所述X个节点中与所述节点设备对应的具有相同高m位的哈希码存储到所述节点设备的第二存储桶中。
16.根据权利要求15所述的节点设备,其特征在于,还包括:
确定模块,用于确定所述第二节点设备对应的哈希码的高m位;
所述交互模块包括:
发送单元,用于将与所述第二节点设备对应的哈希码的高m位相同的所述节点设备的第p个存储桶中的哈希码发送至所述第二节点设备,以便所述第二节点设备将所述节点设备的第p个存储桶中的哈希码与具有相同高m位的所述第二节点设备的第q个存储桶中的哈希码存储在所述第二节点设备的第二存储桶中;
接收单元,用于接收所述第二节点设备发送的第x个存储桶中的哈希码,
其中,所述存储模块具体用于:将所述接收单元接收的所述第二节点设备发送的第x个存储桶中的哈希码与具有相同高m位的所述节点设备的第y个存储桶中的哈希码存储在所述节点设备的第二存储桶中,使得具有相同高m位的哈希码唯一对应所述X个节点设备中的一个节点设备。
17.根据权利要求15或16所述的节点设备,其特征在于,所述存储模块还用于:将所述节点设备的第二存储桶中的哈希码根据次高n位存储到t个第三个存储桶中,其中所述t个第三存储桶中的每个第三存储桶中的哈希码具有相同的高m位和次高n位,并且所述t个第三存储桶中的不同第三存储桶中的哈希码具有不同的高m位和次高n位。
18.根据权利要求17所述的节点设备,其特征在于,还包括:
查找表模块:用于将所述t个第三存储桶中的每个第三存储桶中的哈希码排序;获取所述每个第三存储桶中的预设哈希码和所述预设哈希码在所述第三存储桶中的位置信息;根据所述每个第三存储桶中的预设哈希码和所述预设哈希码在所述第三存储桶中的位置信息生成查找表,以便所述节点设备根据所述查找表确定待查找的哈希码在所述第三存储桶中的位置。
19.根据权利要求17所述的节点设备,其特征在于,所述n和所述t满足以下关系:t=2n。
20.根据权利要求15或16所述的节点设备,其特征在于,所述待分类数据为待分类文本中的多个单词,所述编码模块还用于:在将所述主节点分配的待分类文本中的多个单词进行哈希编码得到多个哈希码之后,确定所述多个哈希码分别对应的多个P位码,所述多个P位码分别表示所述多个哈希码对应的的所述多个单词的统计频次;将所述多个P位码与所述多个哈希码分别结合为多个第一码,使得所述多个P位码分别为所述多个第一码的低P位。
21.根据权利要求20所述的节点设备,其特征在于,所述存储模块还用于:在将所述X个节点中与所述节点设备对应的具有相同高m位的哈希码存储到所述节点设备的第二存储桶中之后,将所述第二存储桶中具有相同哈希码的第一码的低P位相加。
22.根据权利要求16所述的节点设备,其特征在于,所述接收单元还用于:在所述确定模块确定所述第二节点设备对应的哈希码的高m位之前接收所述主节点设备发送的信息,所述信息指示哈希码的高m位与所述X个节点设备的对应关系;
所述确定模块具体用于:根据所述对应关系,确定所述第二节点设备对应的哈希码的高m位。
23.根据权利要求15或16所述的节点设备,其特征在于,所述s和所述m满足以下关系:s=2m。
24.根据权利要求15或16所述的节点设备,其特征在于,所述X和所述m满足以下关系:X=2m。
25.一种主节点设备,其特征在于,所述主节点设备用于分布式系统中,所述分布式系统包括一个主节点和X个节点设备,所述主节点设备包括:
确定模块,用于确定所述X个节点设备存储的哈希码的高m位与所述X个节点设备的对应关系,使得具有相同高m位的哈希码唯一对应所述X个节点设备中的一个节点设备;
发送模块,用于向所述X个节点设备发送信息,所述信息用于指示所述确定模块确定的哈希码的高m位与所述X个节点设备的对应关系。
26.一种节点设备,其特征在于,所述节点设备如权利要求15至24中任一项所述的节点设备,
所述交互模块还用于:接收主节点设备发送的待查找的哈希码;
所述节点设备还包括:
查找模块,用于根据所述交互模块接收到的所述待查找的哈希码的高m位查找所述待查找的哈希码。
27.根据权利要求26所述的节点设备,其特征在于,所述查找模块具体用于:根据所述待查找的哈希码的高m位和次高n位查找所述待查找的哈希码。
28.一种主节点设备,其特征在于,所述主节点设备如权利要求25所述的主节点设备,所述主节点设备还包括:
编码模块,用于对待查找数据进行哈希编码得到待查找的哈希码,
其中,所述确定模块还用于根据哈希码的高m位与所述X个节点设备的对应关系确定所述待查找的哈希码对应的第一节点设备,
所述发送模块还用于将所述待查找的哈希码发送至所述第一节点设备,以便所述第一节点设备查找所述待查找的哈希码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410373639.4A CN105302838B (zh) | 2014-07-31 | 2014-07-31 | 分类方法、查找方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410373639.4A CN105302838B (zh) | 2014-07-31 | 2014-07-31 | 分类方法、查找方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105302838A CN105302838A (zh) | 2016-02-03 |
CN105302838B true CN105302838B (zh) | 2019-01-15 |
Family
ID=55200112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410373639.4A Active CN105302838B (zh) | 2014-07-31 | 2014-07-31 | 分类方法、查找方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105302838B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108253977B (zh) * | 2016-12-28 | 2020-11-24 | 沈阳美行科技有限公司 | 用于更新导航数据的增量数据的生成方法及生成装置 |
CN109800228B (zh) * | 2018-12-28 | 2023-03-10 | 深圳竹云科技有限公司 | 一种高效快速解决hash冲突的方法 |
US20200233882A1 (en) * | 2019-01-18 | 2020-07-23 | Huawei Technologies Co., Ltd. | Bucketizing data into buckets for processing by code modules |
CN109976896B (zh) * | 2019-04-09 | 2021-06-29 | 中国联合网络通信集团有限公司 | 业务排重处理方法和装置 |
CN110321347A (zh) * | 2019-05-30 | 2019-10-11 | 上海数据交易中心有限公司 | 数据匹配方法及装置、存储介质、终端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6463433B1 (en) * | 1998-07-24 | 2002-10-08 | Jarg Corporation | Distributed computer database system and method for performing object search |
CN103023970A (zh) * | 2012-11-15 | 2013-04-03 | 中国科学院计算机网络信息中心 | 一种物联网海量数据存储方法及系统 |
CN103425772A (zh) * | 2013-08-13 | 2013-12-04 | 东北大学 | 一种具有多维信息的海量数据查询方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8155880B2 (en) * | 2008-05-09 | 2012-04-10 | Locomatix Inc. | Location tracking optimizations |
US20130080639A1 (en) * | 2011-09-24 | 2013-03-28 | AWIT Systems, Inc. | Quality of service in a structured peer-to-peer network |
-
2014
- 2014-07-31 CN CN201410373639.4A patent/CN105302838B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6463433B1 (en) * | 1998-07-24 | 2002-10-08 | Jarg Corporation | Distributed computer database system and method for performing object search |
CN103023970A (zh) * | 2012-11-15 | 2013-04-03 | 中国科学院计算机网络信息中心 | 一种物联网海量数据存储方法及系统 |
CN103425772A (zh) * | 2013-08-13 | 2013-12-04 | 东北大学 | 一种具有多维信息的海量数据查询方法 |
Non-Patent Citations (2)
Title |
---|
"分布式哈希查找模型的研究";於文刚,于春玲;《电脑编程技巧与维护》;20100218;论文第3-4页 |
"基于分布式哈希表的分布式子空间聚类算法";曲琳 等;《浙江大学学报》;20100215;第44卷(第2期);论文第225页-231页 |
Also Published As
Publication number | Publication date |
---|---|
CN105302838A (zh) | 2016-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105302838B (zh) | 分类方法、查找方法和设备 | |
CN102457571B (zh) | 一种云存储中数据均衡分布方法 | |
CN103345472B (zh) | 基于有限二叉树布隆过滤器的去冗文件系统及其构建方法 | |
CN111027702B (zh) | 一种实现量子线路替换的方法、装置、存储介质和电子装置 | |
US8325721B2 (en) | Method for selecting hash function, method for storing and searching routing table and devices thereof | |
CN105681153A (zh) | 一种虚拟网络映射方法及装置 | |
CN104021223B (zh) | 一种集群数据库测点的访问方法及装置 | |
CN104462549A (zh) | 一种数据处理方法和装置 | |
CN108038576A (zh) | 基于改进Dijkstra算法的物流配送路径选择方法及系统 | |
CN106991056A (zh) | 用于芯片内和芯片间哈希的系统地址映射 | |
CN106326475A (zh) | 一种高效的静态哈希表实现方法及系统 | |
CN106302843B (zh) | 一种ip地址库更新方法及装置 | |
CN109376789B (zh) | 一种网络包分类算法与系统 | |
CN112985443B (zh) | 路径规划方法、装置及终端设备 | |
Vin et al. | A multiple-objective grouping genetic algorithm for the cell formation problem with alternative routings | |
CN106161106A (zh) | 一种应用于有向拓扑图的节点聚合方法及装置 | |
CN112381231A (zh) | 一种量子拓扑图优化方法、装置、终端及存储介质 | |
CN106326776A (zh) | 基于规则的数据对象验证方法、装置、系统及电子设备 | |
CN108920105A (zh) | 基于社区结构的图数据分布式存储方法及装置 | |
CN105959224B (zh) | 基于比特向量的高速路由查找装置及方法 | |
CN103457855B (zh) | 无类域间路由表建立、以及报文转发的方法和装置 | |
CN111124313A (zh) | 电力采集终端数据读写方法、装置和电子设备 | |
CN107818113A (zh) | 文件访问位置的确定方法及装置 | |
CN108052743B (zh) | 一种阶梯接近中心度确定方法及系统 | |
CN106789727A (zh) | 报文分类方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |