CN104199992B - 数据拖取的方法和装置 - Google Patents

数据拖取的方法和装置 Download PDF

Info

Publication number
CN104199992B
CN104199992B CN201410510515.6A CN201410510515A CN104199992B CN 104199992 B CN104199992 B CN 104199992B CN 201410510515 A CN201410510515 A CN 201410510515A CN 104199992 B CN104199992 B CN 104199992B
Authority
CN
China
Prior art keywords
scope
drag
node
take
data
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.)
Expired - Fee Related
Application number
CN201410510515.6A
Other languages
English (en)
Other versions
CN104199992A (zh
Inventor
王�锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201410510515.6A priority Critical patent/CN104199992B/zh
Publication of CN104199992A publication Critical patent/CN104199992A/zh
Application granted granted Critical
Publication of CN104199992B publication Critical patent/CN104199992B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本发明提供了一种数据拖取的方法和装置,该方法,包括:获取在分布式存储系统集群中增加新节点的触发事件,计算所述新节点即将在所述分布式存储系统的环形存储空间上管理数据的第一范围;从所述分布式存储系统集群的、保存有所述第一范围的数据副本的原始节点中选择提供所述第一范围的数据的拖取节点;将所述第一范围划分成N个细粒度的第二范围,根据所述第二范围的划分状态分别从所述拖取节点拖取每个所述第二范围对应的数据,直至从所述拖取节点拖取N个所述第二范围对应的数据。本发明提供的技术方案,可以节约时间资源,提高Streaming的效率。

Description

数据拖取的方法和装置
技术领域
本发明涉及计算机技术领域,特别是一种数据拖取的方法和装置。
背景技术
Cassandra是依赖DHT(Distributed Hash Table,分布式哈希表)技术实现的一种典型的无中心节点的环形结构的分布式存储系统。Cassandra数据存储空间可以抽象为一个环形结构,数据就是通过hash(哈希)分散在这个环形存储空间上。每个节点负责管理这个环形存储空间上的某一块连续的Range(范围),落在此Range空间上的数据就存储在这个节点上。
当Cassandra集群剩余容量不足时,则需要向环形结构中增加一些新节点进行扩容。或者,当现有的环形结构中某个数据节点因故障无法恢复时,则需要使用一个新节点顶替故障节点。无论是增加新节点进行扩容,或是增加新节点顶替故障节点,都需要从环形结构上的其他节点拖取该新节点未来负责管理的数据,即该新节点未来负责管理的某一块连续的Range的数据,从而对外提供数据访问服务,这种拖取数据的过程也称为Streaming(流)过程。
相关技术中,实现上述Streaming过程如图1所示。首先,数据索取方A节点(即新节点)计算出未来负责管理环形存储空间上的某一块Range,从Cassandra环形结构上的原始节点中选择可以提供该Range的数据的节点,如B节点。接着,A节点主动与B节点建立连接,之后A节点将获取该Range的数据请求发送给B节点,B节点根据该Range生成文件列表。随后,B节点将文件列表中的文件(File 0、File 1、File 2……)逐个发送给A节点。A节点在收到文件后进行校验,如果文件数据有错误或异常,则向B节点发送RETRY(重试)指令告知B节点重传该文件;反之,发送NEXT(下一个)指令告知B节点传输下一文件。当B节点向A节点发送完最后一个文件,并且收到A节点回复的NEXT指令,则B节点向A节点发送FINISHED(完成)指令,并断开连接,从而完成数据拖取。最后,A节点接收完所有的文件后,遍历读取文件数据建立索引。图1所示的Streaming过程,虽然是由A节点发起,但是A节点只是被动接收文件数据,它只知道某个文件数据是否正确的传输过来,并根据传输正确与否来给出相应的回复。然而A节点并不清楚到底有多少文件数据需要接收,即其无法记录断点信息,无法获知Streaming进度。如果在Streaming过程中发生机器故障或网络异常,导致A节点与B节点的连接断开,由于没有断点信息,即使恢复了连接也无法恢复Streaming过程,因而只能从头开始Streaming。而在大容量的分布式存储系统的集群中,单节点存储容量往往有几十TB,从头开始Streaming是完全不可以接受的。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的数据拖取的方法和相应的装置。
依据本发明的一个方面,提供了一种数据拖取的方法,包括:获取在分布式存储系统集群中增加新节点的触发事件,计算所述新节点即将在所述分布式存储系统的环形存储空间上管理数据的第一范围;从所述分布式存储系统集群的、保存有所述第一范围的数据副本的原始节点中选择提供所述第一范围的数据的拖取节点;将所述第一范围划分成N个细粒度的第二范围,根据所述第二范围的划分状态分别从所述拖取节点拖取每个所述第二范围对应的数据,直至从所述拖取节点拖取N个所述第二范围对应的数据。
可选地,根据所述第二范围的划分状态分别从所述拖取节点拖取每个所述第二范围对应的数据,包括:对N个所述第二范围进行排序,根据所述第二范围的划分状态依序从所述拖取节点拖取每个所述第二范围对应的数据。
可选地,根据所述第二范围的划分状态依序从所述拖取节点拖取每个所述第二范围对应的数据,包括:根据所述第二范围的划分状态依序从所述拖取节点拖取每个所述第二范围对应的结构化数据,其中,所述结构化数据是由所述拖取节点获取所述第二范围对应的文件列表、并利用所述文件列表中的文件生成。
可选地,依序从所述拖取节点拖取每个所述第二范围对应的结构化数据,包括:在所述新节点与所述拖取节点之间建立长连接;依序向所述拖取节点发送拖取每个所述第二范围的数据的拖取请求,其中,所述拖取请求中携带有所述第二范围;接收所述拖取节点返回的每个所述第二范围对应的结构化数据。
可选地,每次从所述拖取节点拖取所述第二范围对应的结构化数据之后,还包括:判断从所述拖取节点拖取的所述第二范围对应的结构化数据是否存在错误;若是,重新从所述拖取节点拖取所述第二范围对应的结构化数据;若否,记录所述第二范围的序号,以表明已从所述拖取节点拖取该序号的第二范围对应的结构化数据。
可选地,若依序从所述拖取节点拖取每个所述第二范围对应的结构化数据的过程中,所述新节点与所述拖取节点之间的长连接断开,且重新建立所述新节点与所述拖取节点之间的长连接后,还包括:确定N个所述第二范围中未记录序号的第二范围;依序从所述拖取节点拖取每个所述未记录序号的第二范围对应的结构化数据,直至从所述拖取节点拖取所有的所述未记录序号的第二范围对应的结构化数据。
可选地,每次从所述拖取节点拖取所述第二范围对应的结构化数据之后,还包括:将所述结构化数据写入内存表Memtable;当所述Memtable管理的数据达到预设阈值时,将所述结构化数据刷新到所述新节点的磁盘上,生成有序字符串表SSTable文件。
可选地,所述方法还包括:接收访问所述新节点的数据的访问请求,其中,所述访问请求中携带有待访问数据的标识;从所述新节点的SSTable文件中,查询与所述待访问数据的标识对应的待访问数据,进行访问操作。
可选地,所述触发事件包括:在所述分布式存储系统集群中增加新节点以对所述分布式存储系统集群进行扩容;或者在所述分布式存储系统集群中增加新节点以顶替所述分布式存储系统集群的原始节点中的故障节点。
可选地,计算所述新节点在所述分布式存储系统的环形存储空间上管理数据的第一范围,包括:对所述新节点分配令牌token;根据所述token计算所述新节点在所述分布式存储系统的环形存储空间上管理数据的第一范围。
可选地,所述分布式存储系统为Cassandra系统。
依据本发明的另一个方面,还提供了一种数据拖取的装置,包括:
计算模块,适于获取在分布式存储系统集群中增加新节点的触发事件,计算所述新节点即将在所述分布式存储系统的环形存储空间上管理数据的第一范围;
选择模块,适于从所述分布式存储系统集群的、保存有所述第一范围的数据副本的原始节点中选择提供所述第一范围的数据的拖取节点;
拖取模块,适于将所述第一范围划分成N个细粒度的第二范围,根据所述第二范围的划分状态分别从所述拖取节点拖取每个所述第二范围对应的数据,直至从所述拖取节点拖取N个所述第二范围对应的数据。
可选地,所述拖取模块还适于:对N个所述第二范围进行排序,根据所述第二范围的划分状态依序从所述拖取节点拖取每个所述第二范围对应的数据。
可选地,所述拖取模块还适于:根据所述第二范围的划分状态依序从所述拖取节点拖取每个所述第二范围对应的结构化数据,其中,所述结构化数据是由所述拖取节点获取所述第二范围对应的文件列表、并利用所述文件列表中的文件生成。
可选地,所述拖取模块还适于:在所述新节点与所述拖取节点之间建立长连接;依序向所述拖取节点发送拖取每个所述第二范围的数据的拖取请求,其中,所述拖取请求中携带有所述第二范围;接收所述拖取节点返回的每个所述第二范围对应的结构化数据。
可选地,所述装置还包括判断模块,适于:在所述拖取模块每次从所述拖取节点拖取所述第二范围对应的结构化数据之后,判断从所述拖取节点拖取的所述第二范围对应的结构化数据是否存在错误;若是,重新从所述拖取节点拖取所述第二范围对应的结构化数据;若否,记录所述第二范围的序号,以表明已从所述拖取节点拖取该序号的第二范围对应的结构化数据。
可选地,若所述拖取模块依序从所述拖取节点拖取每个所述第二范围对应的结构化数据的过程中,所述新节点与所述拖取节点之间的长连接断开,且重新建立所述新节点与所述拖取节点之间的长连接后,所述拖取模块还适于:确定N个所述第二范围中未记录序号的第二范围;依序从所述拖取节点拖取每个所述未记录序号的第二范围对应的结构化数据,直至从所述拖取节点拖取所有的所述未记录序号的第二范围对应的结构化数据。
可选地,所述装置还包括生成模块,适于:在所述拖取模块每次从所述拖取节点拖取所述第二范围对应的结构化数据之后,将所述结构化数据写入内存表Memtable;当所述Memtable管理的数据达到预设阈值时,将所述结构化数据刷新到所述新节点的磁盘上,生成有序字符串表SSTable文件。
可选地,所述装置还包括访问模块,适于:接收访问所述新节点的数据的访问请求,其中,所述访问请求中携带有待访问数据的标识;从所述新节点的SSTable文件中,查询与所述待访问数据的标识对应的待访问数据,进行访问操作。
可选地,所述触发事件包括:在所述分布式存储系统集群中增加新节点以对所述分布式存储系统集群进行扩容;或者在所述分布式存储系统集群中增加新节点以顶替所述分布式存储系统集群的原始节点中的故障节点。
可选地,所述计算模块还适于:对所述新节点分配令牌token;根据所述token计算所述新节点在所述分布式存储系统的环形存储空间上管理数据的第一范围。
可选地,所述分布式存储系统为Cassandra系统。
依据本发明的技术方案,获取在分布式存储系统集群中增加新节点的触发事件,计算新节点即将在分布式存储系统的环形存储空间上管理数据的第一范围,随后从分布式存储系统集群的、保存有第一范围的数据副本的原始节点中选择提供第一范围的数据的拖取节点,之后将第一范围划分成N个细粒度的第二范围,根据第二范围的划分状态分别从拖取节点拖取每个第二范围对应的数据,直至从拖取节点拖取N个第二范围对应的数据。由于第一范围被划分成N个细粒度的第二范围,因而新节点可以主动根据第二范围的划分状态分别从拖取节点拖取每个第二范围对应的数据,直至从拖取节点拖取N个第二范围对应的数据,也就是说,新节点可以知道哪些第二范围对应的数据已从拖取节点拖取或者还未从拖取节点拖取,即能够获知Streaming进度,解决了相关技术中无法获知Streaming进度的问题。并且,相关技术中由于无法获知Streaming进度,如果在Streaming过程中发生机器故障或网络异常,导致新节点与拖取节点的连接断开,由于没有断点信息,即使恢复了连接也无法恢复Streaming过程,因而只能从头开始Streaming。而本发明能够获知Streaming进度,因而在恢复连接后能够恢复Streaming过程,无需从头开始Streaming,可以节约时间资源,提高Streaming的效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了相关技术中Streaming过程的示意图;
图2示出了根据本发明一个实施例的数据拖取的方法的流程图;
图3示出了采用本发明实施例提供的数据拖取方法的Streaming过程的示意图;
图4示出了根据本发明一个实施例的数据拖取的装置的一种结构示意图;以及
图5示出了根据本发明一个实施例的数据拖取的装置的另一种结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为解决上述技术问题,本发明实施例提供了一种数据拖取的方法,图2示出了根据本发明一个实施例的数据拖取的方法的流程图。如图2所示,该方法至少包括以下步骤S202至步骤S206。
步骤S202、获取在分布式存储系统集群中增加新节点的触发事件,计算新节点即将在分布式存储系统的环形存储空间上管理数据的第一范围。
步骤S204、从分布式存储系统集群的、保存有第一范围的数据副本的原始节点中选择提供第一范围的数据的拖取节点。
步骤S206、将第一范围划分成N个细粒度的第二范围,根据第二范围的划分状态分别从拖取节点拖取每个第二范围对应的数据,直至从拖取节点拖取N个第二范围对应的数据。
依据本发明的技术方案,获取在分布式存储系统集群中增加新节点的触发事件,计算新节点即将在分布式存储系统的环形存储空间上管理数据的第一范围,随后从分布式存储系统集群的、保存有第一范围的数据副本的原始节点中选择提供第一范围的数据的拖取节点,之后将第一范围划分成N个细粒度的第二范围,根据第二范围的划分状态分别从拖取节点拖取每个第二范围对应的数据,直至从拖取节点拖取N个第二范围对应的数据。由于第一范围被划分成N个细粒度的第二范围,因而新节点可以主动根据第二范围的划分状态分别从拖取节点拖取每个第二范围对应的数据,直至从拖取节点拖取N个第二范围对应的数据,也就是说,新节点可以知道哪些第二范围对应的数据已从拖取节点拖取或者还未从拖取节点拖取,即能够获知Streaming进度,解决了相关技术中无法获知Streaming进度的问题。并且,相关技术中由于无法获知Streaming进度,如果在Streaming过程中发生机器故障或网络异常,导致新节点与拖取节点的连接断开,由于没有断点信息,即使恢复了连接也无法恢复Streaming过程,因而只能从头开始Streaming。而本发明能够获知Streaming进度,因而在恢复连接后能够恢复Streaming过程,无需从头开始Streaming,可以节约时间资源,提高Streaming的效率。
本发明实施例中的分布式存储系统是一种分布式非关系型数据系统,可以是Cassandra系统,还可以是其他分布式非关系型数据系统。
前文步骤S202提及的触发事件可以是分布式存储系统集群中节点增加或减少所引起的任意事件,例如,在分布式存储系统集群中增加新节点以对分布式存储系统集群进行扩容,在分布式存储系统集群中增加新节点以顶替分布式存储系统集群的原始节点中的故障节点,等等。进一步地,步骤S202中计算新节点即将在分布式存储系统的环形存储空间上管理数据的第一范围,本实施例提供了一种新节点管理数据的优选的技术手段,在该手段中,对新节点分配token(令牌),进而根据token计算新节点在分布式存储系统的环形存储空间上管理数据的第一范围。这里的token决定了节点在环中的位置,从而也决定了节点负责管理数据的范围。当然,实施时,新节点也可以采用其他手段,能够实现这一管理目的即可。
步骤S206中将第一范围划分成N个细粒度的第二范围,根据第二范围的划分状态分别从步骤S204选择的、提供第一范围的数据的拖取节点拖取每个第二范围对应的数据,直至从拖取节点拖取N个第二范围对应的数据。这里,可以对N个第二范围进行排序,根据第二范围的划分状态依序从拖取节点拖取每个第二范围对应的数据。这样,根据排序情况,按序进行拖取每个第二范围对应的数据,可以知道哪些第二范围对应的数据已从拖取节点拖取或者还未从拖取节点拖取,即能够获知Streaming进度。
进一步地,可以根据第二范围的划分状态依序从拖取节点拖取每个第二范围对应的结构化数据,其中,结构化数据是由拖取节点获取第二范围对应的文件列表、并利用文件列表中的文件生成。也就是说,新节点直接从拖取节点拖取了结构化数据,由于这些结构化数据本身就包含了索引信息,因而不需要再遍历文件建立索引,省去了建立索引的过程,并保证新节点在Streaming过程完毕后即能提供数据访问服务。此外,依序从拖取节点拖取每个第二范围对应的结构化数据,本实施例提供了一种拖取结构化数据的优选的技术手段,在该手段中,首先在新节点与拖取节点之间建立长连接,随后依序向拖取节点发送拖取每个第二范围的数据的拖取请求,其中,拖取请求中携带有第二范围,之后接收拖取节点返回的每个第二范围对应的结构化数据。
另外,每次从拖取节点拖取第二范围对应的结构化数据之后,判断从拖取节点拖取的第二范围对应的结构化数据是否存在错误,若存在错误,则重新从拖取节点拖取第二范围对应的结构化数据;反之,则记录第二范围的序号,以表明已从拖取节点拖取该序号的第二范围对应的结构化数据。这样,一方面保证了数据传输的准确性,另一方面可以根据记录的序号知道哪些第二范围对应的数据已从拖取节点拖取或者还未从拖取节点拖取,即能够获知Streaming进度。如果依序从拖取节点拖取每个第二范围对应的结构化数据的过程中发生机器故障、网络异常等情况,导致新节点与拖取节点之间的长连接断开,那么在重新建立新节点与拖取节点之间的长连接后,可以确定N个第二范围中未记录序号的第二范围,进而依序从拖取节点拖取每个未记录序号的第二范围对应的结构化数据,直至从拖取节点拖取所有的未记录序号的第二范围对应的结构化数据,无需从头开始Streaming,可以节约时间资源,提高Streaming的效率。
此外,每次从拖取节点拖取第二范围对应的结构化数据之后,将结构化数据写入Memtable(内存表),当Memtable管理的数据达到预设阈值时,将结构化数据刷新到新节点的磁盘上,生成SSTable(Sorted String Table,有序字符串表)文件。进一步地,在执行步骤S206之后(即新节点在Streaming过程完毕后),能够提供数据访问服务。即接收访问新节点的数据的访问请求,其中,访问请求中携带有待访问数据的标识,随后从新节点的SSTable文件中,查询与待访问数据的标识对应的待访问数据,进行访问操作。再者,数据是以SSTable文件格式存储在新节点的磁盘上,每个SSTable文件在系统启动时将会加载到内存中,并在内存中创建一个唯一的SSTable内存对象与其一一对应。当读数据时候,通过内存对象中的索引来定位数据,进而访问SSTable文件读取对应数据。
以上介绍了图2所示的实施例中各环节的多种实现方式,下面通过具体的优选实施例对本发明实施例提供的数据拖取的方法做进一步说明。
如前文介绍的,相关技术采用图1所示的Streaming过程实现数据拖取,然而图1所示的数据拖取过程,无法记录断点信息,无法获知Streaming进度。在Streaming过程中发生机器故障或网络异常时,由于没有断点信息,即使恢复了连接也无法恢复Streaming过程,因而只能从头开始Streaming。本发明实施例提供的数据拖取方法解决了上述的技术问题,图3示出了采用本发明实施例提供的数据拖取方法的Streaming过程的示意图,以分布式存储系统为Cassandra系统为例。如图3所示,数据索取方A节点(即新节点)计算出即将负责管理环形存储空间上的某一块Range,从Cassandra环形结构上的原始节点中选择可以提供该Range的数据的节点,如B节点,详细的Streaming过程如下。首先,A节点将负责管理环形存储空间上的某一块Range划分成N个细粒度的range(range 0、range 1、……range N-1),这里N越大,粒度越细,效果越好。随后,在A节点与B节点之间建立长连接,之后A节点依次将各细粒度的range作为请求发送给B节点。接着,B节点根据各细粒度的range请求,获得其对应的所有文件列表,进而依次读取文件中的数据块内容,将其结构化、序列化后作为结构化数据(Block0、Block 1、……Block N-1)发送给A节点。在A节点收到这些结构化数据后,将结构化数据反序列化写入(Write)Memtable,当Memtable管理的数据达到预设阈值时,将结构化数据刷新到新节点的磁盘上,生成SSTable文件,其中已经包含数据的索引信息。如果A节点在接收结构化数据的过程中出现了异常,则重新发送请求该range的数据给B节点即可(图3中所示,A节点接收range 1异常,则向B节点重新发送range 1的请求)。此外,在每次拖取一个range对应的结构化数据之后,A节点都会记录当前range的序号,当所有range对应的结构化数据拖取完成之后,即完成了Streaming过程。另外,在Streaming的过程中发生机器故障或网络异常,导致A节点与B节点的连接断开,那么在重新建立A节点与B节点之间的长连接后,可以确定N个range中未记录序号的range,进而依序从B节点拖取每个未记录序号的range对应的结构化数据,直至从B节点拖取所有的未记录序号的range对应的结构化数据,无需从头开始Streaming,可以节约时间资源,提高Streaming的效率。
需要说明的是,实际应用中,上述所有可选实施方式可以采用结合的方式任意组合,形成本发明的可选实施例,在此不再一一赘述。
基于同一发明构思,本发明实施例还提供了一种数据拖取的装置,以实现上述数据拖取的方法。
图4示出了根据本发明一个实施例的数据拖取的装置的一种结构示意图。参见图4,该装置至少包括:计算模块410、选择模块420以及拖取模块430。
现介绍本发明实施例的数据拖取的装置的各组成或器件的功能以及各部分间的连接关系:
计算模块410,适于获取在分布式存储系统集群中增加新节点的触发事件,计算新节点即将在分布式存储系统的环形存储空间上管理数据的第一范围;
选择模块420,与计算模块410相耦合,适于从分布式存储系统集群的、保存有第一范围的数据副本的原始节点中选择提供第一范围的数据的拖取节点;
拖取模块430,与选择模块420相耦合,适于将第一范围划分成N个细粒度的第二范围,根据第二范围的划分状态分别从拖取节点拖取每个第二范围对应的数据,直至从拖取节点拖取N个第二范围对应的数据。
在一个实施例中,上述拖取模块430还适于:对N个第二范围进行排序,根据第二范围的划分状态依序从拖取节点拖取每个第二范围对应的数据。
在一个实施例中,上述拖取模块430还适于:根据第二范围的划分状态依序从拖取节点拖取每个第二范围对应的结构化数据,其中,结构化数据是由拖取节点获取第二范围对应的文件列表、并利用文件列表中的文件生成。
在一个实施例中,上述拖取模块430还适于:在新节点与拖取节点之间建立长连接;依序向拖取节点发送拖取每个第二范围的数据的拖取请求,其中,拖取请求中携带有第二范围;接收拖取节点返回的每个第二范围对应的结构化数据。
图5示出了根据本发明一个实施例的数据拖取的装置的另一种结构示意图。如图5所示,上述图4展示的装置还可以包括判断模块440,与拖取模块430相耦合,适于:在拖取模块430每次从拖取节点拖取第二范围对应的结构化数据之后,判断从拖取节点拖取的第二范围对应的结构化数据是否存在错误;若是,重新从拖取节点拖取第二范围对应的结构化数据;若否,记录第二范围的序号,以表明已从拖取节点拖取该序号的第二范围对应的结构化数据。
在一个实施例中,若拖取模块430依序从拖取节点拖取每个第二范围对应的结构化数据的过程中,新节点与拖取节点之间的长连接断开,且重新建立新节点与拖取节点之间的长连接后,拖取模块430还适于:确定N个第二范围中未记录序号的第二范围;依序从拖取节点拖取每个未记录序号的第二范围对应的结构化数据,直至从拖取节点拖取所有的未记录序号的第二范围对应的结构化数据。
在一个实施例中,上述装置还可以包括生成模块450,与拖取模块430相耦合,适于:在拖取模块430每次从拖取节点拖取第二范围对应的结构化数据之后,将结构化数据写入内存表Memtable;当Memtable管理的数据达到预设阈值时,将结构化数据刷新到新节点的磁盘上,生成有序字符串表SSTable文件。
在一个实施例中,上述装置还可以包括访问模块460,与生成模块450相耦合,适于:接收访问新节点的数据的访问请求,其中,访问请求中携带有待访问数据的标识;从新节点的SSTable文件中,查询与待访问数据的标识对应的待访问数据,进行访问操作。
在一个实施例中,触发事件包括:在分布式存储系统集群中增加新节点以对分布式存储系统集群进行扩容;或者在分布式存储系统集群中增加新节点以顶替分布式存储系统集群的原始节点中的故障节点。
在一个实施例中,计算模块410还适于:对新节点分配令牌token;根据token计算新节点在分布式存储系统的环形存储空间上管理数据的第一范围。
在一个实施例中,分布式存储系统为Cassandra系统。
根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:
依据本发明的技术方案,获取在分布式存储系统分布式存储系统集群中增加新节点的触发事件,计算新节点即将在分布式存储系统的环形存储空间上管理数据的第一范围,随后从分布式存储系统集群的、保存有第一范围的数据副本的原始节点中选择提供第一范围的数据的拖取节点,之后将第一范围划分成N个细粒度的第二范围,根据第二范围的划分状态分别从拖取节点拖取每个第二范围对应的数据,直至从拖取节点拖取N个第二范围对应的数据。由于第一范围被划分成N个细粒度的第二范围,因而新节点可以主动根据第二范围的划分状态分别从拖取节点拖取每个第二范围对应的数据,直至从拖取节点拖取N个第二范围对应的数据,也就是说,新节点可以知道哪些第二范围对应的数据已从拖取节点拖取或者还未从拖取节点拖取,即能够获知Streaming进度,解决了相关技术中无法获知Streaming进度的问题。并且,相关技术中由于无法获知Streaming进度,如果在Streaming过程中发生机器故障或网络异常,导致新节点与拖取节点的连接断开,由于没有断点信息,即使恢复了连接也无法恢复Streaming过程,因而只能从头开始Streaming。而本发明能够获知Streaming进度,因而在恢复连接后能够恢复Streaming过程,无需从头开始Streaming,可以节约时间资源,提高Streaming的效率。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的数据拖取的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

Claims (22)

1.一种数据拖取的方法,包括:
获取在分布式存储系统集群中增加新节点的触发事件,计算所述新节点即将在所述分布式存储系统的环形存储空间上管理数据的第一范围;
从所述分布式存储系统集群的、保存有所述第一范围的数据副本的原始节点中选择提供所述第一范围的数据的拖取节点;
将所述第一范围划分成N个细粒度的第二范围,由所述新节点根据所述第二范围的划分状态分别依次从所述拖取节点拖取每个所述第二范围对应的数据,直至从所述拖取节点拖取N个所述第二范围对应的数据;
其中,所述新节点每次拖取一个所述第二范围对应的数据之后,记录当前所述第二范围的序号,从而在所述新节点从所述拖取节点拖取每个所述第二范围对应的数据的过程中,若所述新节点与所述拖取节点之间的长连接断开并重新建立后,确定N个所述第二范围中未记录序号的第二范围;依序从所述拖取节点拖取每个所述未记录序号的第二范围对应的数据,直至从所述拖取节点拖取所有的所述未记录序号的第二范围对应的数据。
2.根据权利要求1所述的方法,其中,根据所述第二范围的划分状态分别从所述拖取节点拖取每个所述第二范围对应的数据,包括:
对N个所述第二范围进行排序,根据所述第二范围的划分状态依序从所述拖取节点拖取每个所述第二范围对应的数据。
3.根据权利要求2所述的方法,其中,根据所述第二范围的划分状态依序从所述拖取节点拖取每个所述第二范围对应的数据,包括:
根据所述第二范围的划分状态依序从所述拖取节点拖取每个所述第二范围对应的结构化数据,其中,所述结构化数据是由所述拖取节点获取所述第二范围对应的文件列表、并利用所述文件列表中的文件生成。
4.根据权利要求3所述的方法,其中,依序从所述拖取节点拖取每个所述第二范围对应的结构化数据,包括:
在所述新节点与所述拖取节点之间建立长连接;
依序向所述拖取节点发送拖取每个所述第二范围的数据的拖取请求,其中,所述拖取请求中携带有所述第二范围;
接收所述拖取节点返回的每个所述第二范围对应的结构化数据。
5.根据权利要求3或4所述的方法,其中,每次从所述拖取节点拖取所述第二范围对应的结构化数据之后,还包括:
判断从所述拖取节点拖取的所述第二范围对应的结构化数据是否存在错误;
若是,重新从所述拖取节点拖取所述第二范围对应的结构化数据;
若否,记录所述第二范围的序号,以表明已从所述拖取节点拖取该序号的第二范围对应的结构化数据。
6.根据权利要求5所述的方法,其中,若依序从所述拖取节点拖取每个所述第二范围对应的结构化数据的过程中,所述新节点与所述拖取节点之间的长连接断开,且重新建立所述新节点与所述拖取节点之间的长连接后,还包括:
确定N个所述第二范围中未记录序号的第二范围;
依序从所述拖取节点拖取每个所述未记录序号的第二范围对应的结构化数据,直至从所述拖取节点拖取所有的所述未记录序号的第二范围对应的结构化数据。
7.根据权利要求3至4、6任一项所述的方法,其中,每次从所述拖取节点拖取所述第二范围对应的结构化数据之后,还包括:
将所述结构化数据写入内存表Memtable;
当所述Memtable管理的数据达到预设阈值时,将所述结构化数据刷新到所述新节点的磁盘上,生成有序字符串表SSTable文件。
8.根据权利要求7所述的方法,其中,还包括:
接收访问所述新节点的数据的访问请求,其中,所述访问请求中携带有待访问数据的标识;
从所述新节点的SSTable文件中,查询与所述待访问数据的标识对应的待访问数据,进行访问操作。
9.根据权利要求1至4任一项所述的方法,其中,所述触发事件包括:
在所述分布式存储系统集群中增加新节点以对所述分布式存储系统集群进行扩容;或者
在所述分布式存储系统集群中增加新节点以顶替所述分布式存储系统集群的原始节点中的故障节点。
10.根据权利要求1至4任一项所述的方法,其中,计算所述新节点在所述分布式存储系统的环形存储空间上管理数据的第一范围,包括:
对所述新节点分配令牌token;
根据所述token计算所述新节点在所述分布式存储系统的环形存储空间上管理数据的第一范围。
11.根据权利要求1至4任一项所述的方法,其中,所述分布式存储系统为Cassandra系统。
12.一种数据拖取的装置,包括:
计算模块,适于获取在分布式存储系统集群中增加新节点的触发事件,计算所述新节点即将在所述分布式存储系统的环形存储空间上管理数据的第一范围;
选择模块,适于从所述分布式存储系统集群的、保存有所述第一范围的数据副本的原始节点中选择提供所述第一范围的数据的拖取节点;
拖取模块,适于将所述第一范围划分成N个细粒度的第二范围,由所述新节点根据所述第二范围的划分状态分别依次从所述拖取节点拖取每个所述第二范围对应的数据,直至从所述拖取节点拖取N个所述第二范围对应的数据;
其中,所述拖取模块还适于:
所述新节点每次拖取一个所述第二范围对应的数据之后,记录当前所述第二范围的序号,从而在所述新节点从所述拖取节点拖取每个所述第二范围对应的数据的过程中,若所述新节点与所述拖取节点之间的长连接断开并重新建立后,确定N个所述第二范围中未记录序号的第二范围;依序从所述拖取节点拖取每个所述未记录序号的第二范围对应的数据,直至从所述拖取节点拖取所有的所述未记录序号的第二范围对应的数据。
13.根据权利要求12所述的装置,其中,所述拖取模块还适于:
对N个所述第二范围进行排序,根据所述第二范围的划分状态依序从所述拖取节点拖取每个所述第二范围对应的数据。
14.根据权利要求13所述的装置,其中,所述拖取模块还适于:
根据所述第二范围的划分状态依序从所述拖取节点拖取每个所述第二范围对应的结构化数据,其中,所述结构化数据是由所述拖取节点获取所述第二范围对应的文件列表、并利用所述文件列表中的文件生成。
15.根据权利要求14所述的装置,其中,所述拖取模块还适于:
在所述新节点与所述拖取节点之间建立长连接;
依序向所述拖取节点发送拖取每个所述第二范围的数据的拖取请求,其中,所述拖取请求中携带有所述第二范围;
接收所述拖取节点返回的每个所述第二范围对应的结构化数据。
16.根据权利要求14或15所述的装置,其中,还包括判断模块,适于:
在所述拖取模块每次从所述拖取节点拖取所述第二范围对应的结构化数据之后,判断从所述拖取节点拖取的所述第二范围对应的结构化数据是否存在错误;
若是,重新从所述拖取节点拖取所述第二范围对应的结构化数据;
若否,记录所述第二范围的序号,以表明已从所述拖取节点拖取该序号的第二范围对应的结构化数据。
17.根据权利要求16所述的装置,其中,若所述拖取模块依序从所述拖取节点拖取每个所述第二范围对应的结构化数据的过程中,所述新节点与所述拖取节点之间的长连接断开,且重新建立所述新节点与所述拖取节点之间的长连接后,所述拖取模块还适于:
确定N个所述第二范围中未记录序号的第二范围;
依序从所述拖取节点拖取每个所述未记录序号的第二范围对应的结构化数据,直至从所述拖取节点拖取所有的所述未记录序号的第二范围对应的结构化数据。
18.根据权利要求14至15、17任一项所述的装置,其中,还包括生成模块,适于:
在所述拖取模块每次从所述拖取节点拖取所述第二范围对应的结构化数据之后,将所述结构化数据写入内存表Memtable;
当所述Memtable管理的数据达到预设阈值时,将所述结构化数据刷新到所述新节点的磁盘上,生成有序字符串表SSTable文件。
19.根据权利要求18所述的装置,其中,还包括访问模块,适于:
接收访问所述新节点的数据的访问请求,其中,所述访问请求中携带有待访问数据的标识;
从所述新节点的SSTable文件中,查询与所述待访问数据的标识对应的待访问数据,进行访问操作。
20.根据权利要求12至15任一项所述的装置,其中,所述触发事件包括:
在所述分布式存储系统集群中增加新节点以对所述分布式存储系统集群进行扩容;或者
在所述分布式存储系统集群中增加新节点以顶替所述分布式存储系统集群的原始节点中的故障节点。
21.根据权利要求12至15任一项所述的装置,其中,所述计算模块还适于:
对所述新节点分配令牌token;
根据所述token计算所述新节点在所述分布式存储系统的环形存储空间上管理数据的第一范围。
22.根据权利要求12至15任一项所述的装置,其中,所述分布式存储系统为Cassandra系统。
CN201410510515.6A 2014-09-28 2014-09-28 数据拖取的方法和装置 Expired - Fee Related CN104199992B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410510515.6A CN104199992B (zh) 2014-09-28 2014-09-28 数据拖取的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410510515.6A CN104199992B (zh) 2014-09-28 2014-09-28 数据拖取的方法和装置

Publications (2)

Publication Number Publication Date
CN104199992A CN104199992A (zh) 2014-12-10
CN104199992B true CN104199992B (zh) 2018-03-09

Family

ID=52085285

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410510515.6A Expired - Fee Related CN104199992B (zh) 2014-09-28 2014-09-28 数据拖取的方法和装置

Country Status (1)

Country Link
CN (1) CN104199992B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9785698B2 (en) * 2014-12-31 2017-10-10 Business Objects Software Ltd. Behaviorally consistent cluster-wide data wrangling based on locally processed sampled data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102098571A (zh) * 2009-12-14 2011-06-15 中国电信股份有限公司 一种数据动态推送的方法及系统
CN103744745A (zh) * 2013-12-13 2014-04-23 北京奇虎科技有限公司 一种数据存储的检测方法、设备及分布式存储系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2490645A1 (en) * 2004-12-16 2006-06-16 Ibm Canada Limited - Ibm Canada Limitee Data-centric distributed computing
CN101909068A (zh) * 2009-06-02 2010-12-08 华为技术有限公司 一种文件副本管理方法及装置、系统
WO2014101044A1 (zh) * 2012-12-27 2014-07-03 华为技术有限公司 分布式存储系统中的分区平衡方法、装置及服务器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102098571A (zh) * 2009-12-14 2011-06-15 中国电信股份有限公司 一种数据动态推送的方法及系统
CN103744745A (zh) * 2013-12-13 2014-04-23 北京奇虎科技有限公司 一种数据存储的检测方法、设备及分布式存储系统

Also Published As

Publication number Publication date
CN104199992A (zh) 2014-12-10

Similar Documents

Publication Publication Date Title
CN105786808B (zh) 一种用于分布式执行关系型计算指令的方法与设备
CN107040585A (zh) 一种业务校验的方法及装置
CN103186554B (zh) 分布式数据镜像方法及存储数据节点
US20110302141A1 (en) Save set bundling for staging
CN104023246B (zh) 一种视频数据私有云存储系统和视频数据私有云存储方法
CN103647850B (zh) 一种分布式版本控制系统的数据处理方法、设备及系统
CN110471923B (zh) 一种区块链交易记录的处理方法及装置
CN106446159B (zh) 一种存储文件的方法、第一虚拟机及名称节点
CN104641614A (zh) 用于可扩展的结构化数据分布的系统和方法
CN109799948B (zh) 一种数据存储方法及装置
CN104011701A (zh) 内容传送网络
US20190286629A1 (en) Method for processing transactions using blockchain network, and transaction management server using the same
CN105095294B (zh) 一种分布式存储系统中管理异构副本的方法及装置
CN103577546B (zh) 一种数据备份的方法、设备及分布式集群文件系统
CN105516284B (zh) 一种集群数据库分布式存储的方法和装置
CN105183389A (zh) 一种数据分级管理方法、装置及电子设备
CN107085546A (zh) 基于故障域技术的数据管理方法和装置
CN109800336A (zh) 基于键值对存储系统的表格实现方法、装置、设备和介质
CN104125303B (zh) 数据读写请求方法、客户端及系统
CN107612950A (zh) 一种提供服务的方法、装置、系统、电子设备
CN108470039A (zh) 区块链中的数据处理方法和装置
CN108491163A (zh) 一种大数据处理方法、装置和存储介质
CN105550230B (zh) 分布式存储系统节点故障的侦测方法和装置
CN106294627A (zh) 数据管理方法及数据服务器
CN109597903A (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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220719

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180309