CN111782367B - 分布式存储方法及装置、电子设备、计算机可读介质 - Google Patents

分布式存储方法及装置、电子设备、计算机可读介质 Download PDF

Info

Publication number
CN111782367B
CN111782367B CN202010616643.4A CN202010616643A CN111782367B CN 111782367 B CN111782367 B CN 111782367B CN 202010616643 A CN202010616643 A CN 202010616643A CN 111782367 B CN111782367 B CN 111782367B
Authority
CN
China
Prior art keywords
task
state
data
thread
service
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
Application number
CN202010616643.4A
Other languages
English (en)
Other versions
CN111782367A (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 Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202010616643.4A priority Critical patent/CN111782367B/zh
Publication of CN111782367A publication Critical patent/CN111782367A/zh
Priority to KR1020210008965A priority patent/KR102544755B1/ko
Priority to JP2021008733A priority patent/JP7226743B2/ja
Priority to US17/184,723 priority patent/US20210406067A1/en
Priority to EP21159869.3A priority patent/EP3933582B1/en
Application granted granted Critical
Publication of CN111782367B publication Critical patent/CN111782367B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

本公开提供了一种分布式存储方法,涉及计算机、云计算技术领域。该方法包括:响应驱动线程的任务请求,读取并向外部洗牌服务发送数据;在所述外部洗牌服务发送所述数据完毕后,将所述任务的状态修改为等待完成态;将所述等待完成态发送给所述驱动线程,以供所述驱动线程释放所述任务对应的执行线程。该分布式存储方法可减少执行线程资源的浪费,提升任务运行效率。本公开还提供了一种分布式存储装置、电子设备和计算机可读介质。

Description

分布式存储方法及装置、电子设备、计算机可读介质
技术领域
本公开实施例涉及计算机、云计算技术领域,特别涉及分布式存储方法及装置、电子设备、计算机可读介质。
背景技术
在分布式存储数据时,分布式计算引擎Spark需要借助外部洗牌(Shuffle)服务运行作业。具体地,Spark将数据不断地传输到外部Shuffle服务,外部Shuffle服务将这些数据合并和排序后,发送给分布式存储系统存储。当数据被成功地写入分布式存储系统之后,外部Shuffle服务会向Spark的执行线程(Executor线程)发送数据写入成功的响应消息。这个过程运行效率低、耗时较长,存在资源浪费。
发明内容
本公开实施例提供一种分布式存储方法及装置、电子设备、计算机可读介质。
第一方面,本公开实施例提供一种分布式存储方法,其包括:
响应驱动线程的任务请求,读取并向外部洗牌服务发送数据;
在所述外部洗牌服务发送所述数据完毕后,将所述任务的状态修改为等待完成态;
将所述等待完成态发送给所述驱动线程,以供所述驱动线程释放所述任务对应的执行线程。
在一些实施例中,所述响应驱动线程的任务请求,读取并向外部洗牌服务发送数据,包括:
响应驱动线程的任务请求,读取所述数据并构造弹性分布式数据集;
对所述弹性分布式数据集进行处理获得洗牌数据;
将所述洗牌数据写入所述外部洗牌服务。
在一些实施例中,所述在所述数据向所述外部洗牌服务发送完毕后,将所述任务的状态修改为等待完成态之后,包括:
将处于等待完成态的所述任务加入管道任务集合;其中,所述管道任务集合是处于等待完成态的任务的集合。
在一些实施例中,所述将处于等待完成态的所述任务加入管道任务集合之后,还包括:
响应所述外部洗牌服务返回的响应消息,调用回调函数对所述任务进行回调操作;
将执行所述回调操作后的所述任务从所述管道任务集合中移除。
在一些实施例中,所述将处于等待完成态的所述任务加入管道任务集合之后,还包括:
对所述管道任务集合中的任务进行冲刷操作;
从所述管道任务集合中获得处于终止态的任务;
调用失败回调函数和完成回调函数,对处于终止态的所述任务进行回调操作;
将执行所述回调操作后的所述任务从所述管道任务集合中移除。
在一些实施例中,所述对所述管道任务集合中的任务进行冲刷操作,包括:
按照预设时间间隔或所述任务的数量达到预设值时,对所述管道任务集合中的任务进行冲刷操作。
在一些实施例中,所述终止态包括停止态、超时态和完成态。
第二方面,本公开实施例提供一种分布式存储方法,其包括:
向执行线程发送任务请求,以使所述执行线程读取并向外部洗牌服务发送数据;
响应所述执行线程返回任务的状态为等待完成态,释放所述任务对应的执行线程;其中,所述等待完成态是所述执行线程向所述外部洗牌服务发送所述数据完毕后任务所处的状态。
第三方面,本公开实施例提供一种分布式存储装置,其包括:
读取数据模块,用于响应驱动线程的任务请求读取数据;
第一发送模块,用于将所述数据发送给外部洗牌服务;
状态修改模块,用于在所述外部洗牌服务发送所述数据完毕后,将所述任务的状态修改为等待完成态;
第二发送模块,用于将所述等待完成态发送给所述驱动线程,以供所述驱动线程释放所述任务对应的执行线程。
第四方面,本公开实施例提供一种分布式存储装置,其包括:
任务发送模块,用于向执行线程发送任务请求,以使所述执行线程读取并向外部洗牌服务发送数据;
资源释放模块,用于响应所述执行线程返回任务的状态为等待完成态,释放所述任务对应的执行线程;其中,所述等待完成态是所述执行线程向所述外部洗牌服务发送所述数据完毕后任务所处的状态。
第五方面,本公开实施例提供一种电子设备,其包括:
一个或多个处理器;
存储器,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器上述任意一种分布式存储方法;
一个或多个I/O接口,连接在所述处理器与存储器之间,配置为实现所述处理器与存储器的信息交互。
第六方面,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任意一种分布式存储方法。
本公开实施例提供的分布式存储方法,响应驱动线程的任务请求,读取并向外部洗牌服务发送数据;在所述外部洗牌服务发送所述数据完毕后,将所述任务的状态修改为等待完成态;将所述等待完成态发送给所述驱动线程,以供所述驱动线程释放所述任务对应的执行线程,即,当执行线程向外部洗牌服务发送完毕后,即向驱动线程返回该任务处于等待完成态,驱动线程随即释放该任务对应的执行线程,并不需要等到该任务为终止态时才释放对应的执行线程,减少了执行线程资源的浪费,提升了任务运行效率。
附图说明
附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开,并不构成对本公开的限制。通过参考附图对详细示例实施例进行描述,以上和其它特征和优点对本领域技术人员将变得更加显而易见,在附图中:
图1为本公开实施例提供的使用外部Shuffle服务分布式存储数据的流程示意图;
图2为本公开实施例提供的一种分布式存储方法的流程图;
图3为本公开实施例提供的分布式存储方法中驱动线程的工作流程图;
图4为本公开实施例提供的另一种分布式存储方法的流程图;
图5为本公开实施例提供的一种Pipeline线程对管道任务集合管理的流程图;
图6为本公开实施例提供的另一种Pipeline线程对管道任务集合管理的流程图;
图7为本公开实施例提供的状态更新函数更新任务状态的流程图;
图8为本公开实施例中利用失败回调函数进行失败回调的流程图;
图9为本公开实施例中利用完成回调函数进行完成回调的流程图;
图10为本公开实施例提供的一种分布式存储方法的流程图;
图11为本公开实施例提供的一种分布式存储装置的原理框图;
图12为本公开实施例提供的一种分布式存储装置的原理框图;
图13为本公开实施例提供的一种电子设备的组成框图。
实施方式
为使本领域的技术人员更好地理解本公开的技术方案,下面结合附图对本公开提供的分布式存储方法及装置、电子设备、计算机可读介质进行详细描述。
在下文中将参考附图更充分地描述示例实施例,但是所述示例实施例可以以不同形式来体现且不应当被解释为限于本文阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
Spark在将数据传输到外部Shuffle服务时,外部Shuffle服务将这些数据接收合并以及简单地排序,生成数据组,并在达到一定的分布式存储条件时,将这些数据组发送给分布式存储系统存储。
通常分布式存储条件主要有时间条件、数量条件和洗牌(Flush)命令。其中,时间条件是预设时间阈值,当外部Shuffle服务的等待时间达到预设时间阈值时,外部Shuffle服务将数据组发送给分布式存储系统存储。数量条件是预设数量阈值,当外部Shuffle服务的接收到的数据量达到预设数量阈值时,外部Shuffle服务将数据组发送给分布式存储系统存储。Flush命令是一个强制执行Flush命令,外部Shuffle服务强制执行Flush命令,以将数据组发送给分布式存储系统存储。
在本实施例中,Spark实现一个具体功能叫应用(Application),处理某一数据分片的具体执行单元叫任务(Task),任务可以分为两类,即洗牌地图任务(Map ShuffleTask)和结果任务(Result Task)。洗牌地图任务向外部Shuffle服务写入数据,外部Shuffle服务将数据持久化到分布式文件系统。结果任务从分布式存储系统中将数据读取合并,如果需要排序也会对数据进行排序,并生成数据组。
图1为本公开实施例提供的使用外部Shuffle服务分布式存储数据的流程示意图。如图1所示,Spark的一个应用会有一个驱动(Driver)线程11,同时也会有多个执行(Executor)线程12。其中,驱动线程11主要是负责任务的调度,执行线程12负责运行具体的任务。执行线程12在驱动线程11的调度下,通过外部Shuffle服务13向分布式文件存储系统14发送数据。当数据被发送给分布式文件存储系统时,分布式文件存储系统会写多个副本,当数据成功写入分布式存储系统之后,外部Shuffle服务才会向Spark的执行线程返回响应消息。显然,Spark将数据发送给外部Shuffle服务至接到写入成功的响应消息的时间段内,Spark的执行线程一直处于等待状态,这样浪费了执行线程的计算资源,同时也阻塞了后续任务的执行。
本公开实施例针对Spark利用外部Shuffle服务实现分布式存储的方法,以优化外部Shuffle服务的流水线性能。在资源相同的情况下,提升任务运行的并行度,从而提升Spark的运行效率,减少资源浪费。
第一方面,本公开实施例提供一种分布式存储方法。图2为本公开实施例提供的一种分布式存储方法的流程图。如图2所示,分布式存储方法包括:
步骤201,响应驱动线程的任务请求,读取并向外部洗牌服务发送数据。
其中,驱动线程给执行线程分配任务,执行线程响应驱动线程的任务请求执行相应的任务,将数据存储在分布式文件系统中。
在本实施例中,驱动线程通过外部Shuffle服务将数据存储在分布式文件系统中。当执行线程收到驱动线程分发的任务时,执行线程读取数据,并不断地将这些数据发送至外部Shuffle服务,外部Shuffle服务再将数据存储于分布式文件系统。
在一些实施例中,执行线程运行第一任务Map Shuffle Task和第二任务ResultTask。其中,执行线程运行Map Shuffle Task的步骤包括:Map Shuffle Task响应驱动线程的任务请求,读取用户的数据,并将数据构造弹性分布式数据集(Resilient DistributedDataSet,简称RDD);然后调用用户的处理逻辑对RDD进行处理获得洗牌数据;最后不断地将洗牌数据写入外部洗牌服务。
步骤202,在外部洗牌服务发送数据完毕后,将任务的状态修改为等待完成态。
在一些实施例中,执行线程利用任务集列表管理任务,该任务集列表标注每个任务的当前状态。其中,任务状态包括启动态、运行态、完成态、失败态、停止态、丢失态以及等待完成态。其中,等待完成态是执行线程将数据向外部Shuffle服务发送完毕,但还未完成时的状态。换言之,当数据已经被写入外部Shuffle服务,但外部Shuffle服务还未将这些数据写入分布式文件系统,任务的状态不属于完成态,即该任务实际上并未完全结束。
在本实施例中,在原有任务状态的基础上,增加了等待完成态,用以表示数据已经被写入外部Shuffle服务,正在等待外部Shuffle服务将数据存入分布式文件系统。此时,执行线程没有具体工作,已经不要占用资源。
步骤203,将等待完成态发送给驱动线程,以供驱动线程释放任务对应的执行线程。
在一些实施例中,当执行线程将数据写入外部Shuffle服务时,将等待完成态发送给驱动线程。驱动线程收到任务的状态为等待完成态时,释放该任务对应的执行线程,这样驱动线程可以为该执行线程重新分配任务。
图3为本公开实施例提供的分布式存储方法中驱动线程的工作流程图。如图3所示,当驱动线程收到执行线程汇报的任务状态后,执行以下步骤:
步骤301,接收执行线程汇报的任务状态。
在一些实施例中,当执行线程将数据写入外部Shuffle服务时,向驱动线程汇报该任务的状态为等待完成态。当执行线程收到外部Shuffle服务或分布式文件系统返回的数据存储完毕的返回消息后,向驱动线程汇报该任务的状态为完成态。
步骤302,判断任务的状态是否是等待完成态,若是,则执行步骤305;若否,则执行步骤303。
在一些实施例中,驱动线程判断任务的状态。当任务的状态是等待完成态时,执行步骤305;当任务的状态不是等待完成态时,执行步骤303。
步骤303,判断任务的状态是否是完成态;若是,则执行步骤304;若否,则执行步骤306。
在一些实施例中,驱动线程判断任务的状态是否是完成态。当判断任务的状态是完成态时,则执行步骤304。当判断任务的状态不是完成态时,则保持执行线程的资源不变,即不释放执行线程。
步骤304,判断该任务之前的状态是否是等待完成态,若是,则执行步骤306;若否,则执行步骤305。
在一些实施例中,驱动线程在判断任务是完成态时,需要再次判断该任务之前的状态是否是等待完成态。当任务之前的状态是等待完成态时,则执行步骤306。当任务之前的状态不是等待完成态时,则执行步骤305。
在本实施例中,步骤302和步骤304,两次判断任务的状态是否是等待完成态,以确保驱动线程对处于等待完成态的任务只释放一次执行线程,从而避免因逻辑混乱而导致的驱动线程错误的释放执行线程的资源。
步骤305,释放任务对应的执行线程。
在一些实施例中,驱动线程释放状态为等待完成态的任务对应的执行线程的资源,以便于该执行线程执行新任务。
在本实施例中,驱动线程在任务状态为等待完成态时,以及,驱动线程在任务状态为完成态,但之前的状态不是等待完成态时,释放该任务对应的执行线程的资源。
步骤306,保持执行线程的资源不变。
在一些实施例中,当任务的状态不是完成态时,不释放执行线程,保持执行线程的资源不变。当任务的状态时完成态,但该任务的状态之前是等待完成态,则不释放执行线程,保持执行线程的资源不变。
本实施例提供的分布式存储方法,响应驱动线程的任务请求,读取并向外部洗牌服务发送数据;在所述外部洗牌服务发送所述数据完毕后,将所述任务的状态修改为等待完成态;将所述等待完成态发送给所述驱动线程,以供所述驱动线程释放所述任务对应的执行线程,即,当执行线程向外部洗牌服务发送完毕后,即向驱动线程返回该任务处于等待完成态,驱动线程随即释放该任务对应的执行线程,并不需要等到该任务为终止态时才释放对应的执行线程,减少了执行线程资源的浪费,提升了任务运行效率。
图4为本公开实施例提供的另一种分布式存储方法的流程图。如图3所示,分布式存储方法包括:
步骤401,响应驱动线程的任务请求,读取并向外部洗牌服务发送数据。
其中,驱动线程给执行线程分配任务,执行线程响应驱动线程的任务请求执行相应的任务,将数据存储在分布式文件系统中。
在本实施例中,驱动线程通过外部Shuffle服务将数据存储在分布式文件系统中。当执行线程收到驱动线程分发的任务时,执行线程读取数据,并不断地将这些数据发送至外部Shuffle服务,外部Shuffle服务再将数据存储于分布式文件系统。
在一些实施例中,执行线程运行第一任务Map Shuffle Task和第二任务ResultTask。其中,执行线程运行Map Shuffle Task的步骤包括:Map Shuffle Task响应驱动线程的任务请求,读取用户的数据,并将数据构造弹性分布式数据集(Resilient DistributedData Set,简称RDD);然后调用用户的处理逻辑对RDD进行处理获得洗牌数据;最后不断地将洗牌数据写入外部洗牌服务。
其中,弹性分布式数据集RDD是分布式只读、且已分区集合对象。这些集合是弹性的,如果数据集一部分丢失,则可以对它们进行重建。
步骤402,在外部洗牌服务发送数据完毕后,将任务的状态修改为等待完成态。
在一些实施例中,执行线程利用任务集列表管理任务,该任务集列表标注每个任务的当前状态。其中,任务状态包括启动态、运行态、完成态、失败态、停止态、丢失态以及等待完成态。其中,等待完成态是执行线程将数据向外部Shuffle服务发送完毕,但还未完成时的状态。换言之,当数据已经被写入外部Shuffle服务,但外部Shuffle服务还未将这些数据写入分布式文件系统,任务的状态不属于完成态,即该任务实际上并未完全结束。
在本实施例中,在原有任务状态的基础上,增加了等待完成态,用以表示数据已经被写入外部Shuffle服务,正在等待外部Shuffle服务将数据存入分布式文件系统。此时,执行线程没有具体工作,已经不要占用资源。
步骤403,将等待完成态发送给驱动线程,以供驱动线程释放任务对应的执行线程。
在一些实施例中,当执行线程将数据写入外部Shuffle服务时,将等待完成态发送给驱动线程。驱动线程收到任务的状态为等待完成态时,释放该任务对应的执行线程。
步骤404,将处于等待完成态的任务加入管道任务集合。
其中,管道任务集合是执行线程管理状态为等待完成态的任务的集合,在管道任务集合中,任务以列表形成管理,即任务和任务的状态在列表中列出。
在一些实施例中,执行线程设置有外部Shuffle服务插件,在外部Shuffle服务插件中加入一个管道线程(Pipeline线程),该管道线程负责维护管道任务集合。当执行线程将数据写入外部Shuffle服务时,将该任务加入管道任务集合,并将该任务的状态修改为等待完成态。
在本实施例中,Pipeline线程对管道任务集合进行管理。图5为本公开实施例提供的一种Pipeline线程对管道任务集合管理的流程图。如图5所示,Pipeline线程对管道任务集合管理包括:
步骤501,响应外部洗牌服务返回的响应消息,调用回调函数对任务进行回调操作。
其中,外部洗牌服务返回的响应消息是外部洗牌服务执行任务后返回的消息,即外部洗牌服务将数据存储在分布式文件系统后返回的消息。返回的消息通常是任务的状态。
在一些实施例中,外部洗牌服务执行任务的结果包括停止、超时、完成等,对应的任务状态为停止态、超时态和完成态。为便于描述,本实施例将这几种状态统称为终止态,即表示任务已经终止。换言之,不管任务的状态是停止态、超时态,还是完成态,都认为该任务已经终止。
其中,回调函数包括失败回调函数和完成回调函数,每个任务都需要执行失败回调和完成回调。
在一些实施例中,Pipeline线程收到外部洗牌服务返回的响应消息后,调用相应的回调函数。
步骤502,将执行回调操作后的任务从管道任务集合中移除。
当Pipeline线程对任务进行回调操作后,将该任务从管道任务集合中移除。
图6为本公开实施例提供的另一种Pipeline线程对管道任务集合管理的流程图。如图6所示,Pipeline线程对管道任务集合管理包括:
步骤601,对管道任务集合的任务进行冲刷操作。
在一些实施例中,Pipeline线程按照冲刷策略对任务进行冲刷。冲刷策略可以是按照预设时间间隔或任务的数量达到预设值时,对管道任务集合中的任务进行冲刷操作。例如,预设时间间隔为10分钟,则Pipeline线程每间隔10分钟对管道任务集合中的任务执行一次冲刷操作。或者,当管道任务集合中的任务数量达到预设值时,Pipeline线程对管道任务集合中的任务执行一次冲刷操作。
需要说明的是,Pipeline线程根据冲刷策略对任务进行冲刷操作。本实施例对冲刷策略不作限定。
在本实施例中,利用冲刷策略可以减少分布式存储过程中小文件的数量,降低分布式存储的压力,同时提高分布式文件系统的吞吐能力。
步骤602,从管道任务集合中获得处于终止态的任务。
其中,终止态包括停止态、超时态和完成态,对应地,终止态的任务包括停止的任务、超时的任务和完成的任务。
在一些实施例中,对管道任务集合中的任务进行过滤,获得停止的任务、超时的任务和完成的任务。
步骤603,调用失败回调函数和完成回调函数,对处于终止态的任务进行回调操作。
在一些实施例中,触发失败回调函数和完成回调函数对任务进行回调。例如,对于停止态的任务,触发失败回调函数和完成回调函数对任务进行回调。对于超时的任务,触发失败回调函数和完成回调函数对任务进行回调。对于完成的任务,触发完成回调函数对任务进行回调。
需要说明的是,Pipeline线程对任务回调的顺序不作限定。如先过滤出停止态的任务,对该任务进行回调;再过滤出超时的任务,对该任务进行回调;最后过滤出完成的任务,对该任务进行回调。或者,先过滤出超时的任务,对该任务进行回调;再过滤出停止态的任务,对该任务进行回调;最后过滤出完成的任务,对该任务进行回调。
步骤604,将执行回调操作后的任务从管道任务集合中移除。
其中,Pipeline线程对任务进行回调后,将该任务从管道任务集合移除。
在一些实施例中,Pipeline线程在回调时,可以调用状态更新函数(StatusUpdate函数)将任务的状态和运行结果汇报给驱动线程。执行线程可支持两种回调函数,即失败回调函数和完成回调函数。
图7为本公开实施例提供的状态更新函数更新任务状态的流程图。如图7所示,状态更新函数更新任务状态的步骤包括:
步骤701,判断任务的状态是否是等待完成态。
在一些实施例中,当判断任务的状态不是等待完成态时,执行步骤708。当判断任务的状态是等待完成态时,执行步骤702。当任务的状态不是等待完成态时,即可认为该任务的状态为终止态。
步骤702,将任务放入管道任务集合中。
当任务的状态为等待完成态时,将该任务添加到管道任务集合中。
步骤703,注册失败回调函数。
在步骤703中,将失败回调函数注册到pipeline线程中。
步骤704,注册完成回调函数。
在步骤704中,将完成回调函数注册到pipeline线程中。
步骤705,判断任务是否在管道任务集合中。
在一些实施例中,若任务在管道任务集合中,则执行步骤706,若任务在管道任务集合中,则执行步骤707。
步骤706,将任务的状态汇报给驱动线程。
在步骤706中,将任务的等待完成态汇报驱动线程。
步骤707,终止任务。
在步骤707中,如果任务不在管道任务集合中,证明该任务的回调函数已经被触发过,不需要再汇报等待完成态,直接终止任务即可。
步骤708,将任务的终止态汇报给驱动线程。
需要说明的是,在步骤708中,执行线程按照Spark流程直接将任务的终止态汇报驱动线程。
图8为本公开实施例中利用失败回调函数进行失败回调的流程图。如图8所示,利用失败回调函数进行失败回调的步骤包括:
步骤801,从管道任务集合中移除任务。
在管道任务集合中的任务是等待完成态,但当外部Shuffle服务完成存储时,会返回新的状态,执行线程会随时更新任务的状态。因此,在Flush操作时,需要从管道任务集合中移除的任务。
步骤802,判断任务的状态是否是停止态。
在一些实施例中,若任务的状态是停止态,则执行步骤803;若任务的状态不是停止态,则执行步骤804。若任务的状态不是停止态,则认为该任务是失败态。
步骤803,将停止态汇报驱动线程。
步骤804,将失败汇报驱动线程。
图9为本公开实施例中利用完成回调函数进行完成回调的流程图。如图9所示,利用完成回调函数进行完成回调的步骤包括:
步骤901,判断管道任务集合中是否有任务。
在一些实施例中,当管道任务集合中有任务时,执行步骤902;当管道任务集合中没有任务时,执行步骤904。
步骤902,将该任务从管道任务集合中移除。
步骤903,将该任务的完成态汇报给驱动线程。
步骤904,终止任务。
在步骤904中,如果管道任务集合中没有任务,则证明任务全部是失败态或停止态,无需向驱动线程汇报,直接终止任务即可。
本公开实施例提供的分布式存储方法,响应驱动线程的任务请求,读取并向外部洗牌服务发送数据;在所述外部洗牌服务发送所述数据完毕后,将所述任务的状态修改为等待完成态;将所述等待完成态发送给所述驱动线程,以供所述驱动线程释放所述任务对应的执行线程,即,当执行线程向外部洗牌服务发送完毕后,即向驱动线程返回该任务处于等待完成态,驱动线程随即释放该任务对应的执行线程,并不需要等到该任务为终止态时才释放对应的执行线程,减少了执行线程资源的浪费,提升了任务运行效率。
第二方面,本公开实施例提供一种分布式存储方法,其应用于Spark的驱动线程。图10为本公开实施例提供的一种分布式存储方法的流程图。如图10所示,分布式存储方法包括:
步骤1001,向执行线程发送任务请求,以使执行线程读取并向外部洗牌服务发送数据。
其中,驱动线程给执行线程分配任务,执行线程响应驱动线程的任务请求执行相应的任务,将数据存储在分布式文件系统中。
在本实施例中,驱动线程通过外部Shuffle服务将数据存储在分布式文件系统中。当执行线程收到驱动线程分发的任务时,执行线程读取数据,并不断地将这些数据发送至外部Shuffle服务,外部Shuffle服务再将数据存储于分布式文件系统。
在一些实施例中,执行线程运行第一任务Map Shuffle Task和第二任务ResultTask。其中,执行线程运行Map Shuffle Task的步骤包括:Map Shuffle Task响应驱动线程的任务请求,读取用户的数据,并将数据构造弹性分布式数据集(Resilient DistributedDataSet,简称RDD);然后调用用户的处理逻辑对RDD进行处理获得洗牌数据;最后不断地将洗牌数据写入外部洗牌服务。
步骤1002,响应执行线程返回任务的状态为等待完成态,释放任务对应的执行线程。
其中,等待完成态是执行线程向外部洗牌服务发送数据完毕后任务所处的状态。
在一些实施例中,当执行线程将数据写入外部Shuffle服务时,将等待完成态发送给驱动线程。驱动线程收到任务的状态为等待完成态时,释放该任务对应的执行线程,这样驱动线程可以为该执行线程重新分配任务。
在一些实施例中,执行线程的具体工作流程可参照图3所示的流程图,在此不再赘述。
本公开实施例提供的分布式存储方法,响应驱动线程的任务请求,读取并向外部洗牌服务发送数据;在所述外部洗牌服务发送所述数据完毕后,将所述任务的状态修改为等待完成态;将所述等待完成态发送给所述驱动线程,以供所述驱动线程释放所述任务对应的执行线程,即,当执行线程向外部洗牌服务发送完毕后,即向驱动线程返回该任务处于等待完成态,驱动线程随即释放该任务对应的执行线程,并不需要等到该任务为终止态时才释放对应的执行线程,减少了执行线程资源的浪费,提升了任务运行效率。
第三方面,本公开实施例提供一种分布式存储装置,该分布式存储装置应用于执行线程。图11为本公开实施例提供的一种分布式存储装置的原理框图。如图11所示,分布式存储装置包括:
读取数据模块1101,用于响应驱动线程的任务请求读取数据。
其中,驱动线程给执行线程分配任务,执行线程响应驱动线程的任务请求执行相应的任务,将数据存储在分布式文件系统中。
在本实施例中,驱动线程通过外部Shuffle服务将数据存储在分布式文件系统中。当执行线程收到驱动线程分发的任务时,执行线程读取数据,并不断地将这些数据发送至外部Shuffle服务,外部Shuffle服务再将数据存储于分布式文件系统。
第一发送模块1102,用于将数据发送给外部洗牌服务。
在一些实施例中,执行线程在将数据发送给外部洗牌服务之前,还可以对该数据进行处理。具体地,响应驱动线程的任务请求,读取用户的数据,并将数据构造弹性分布式数据集(Resilient Distributed DataSet,简称RDD);然后调用用户的处理逻辑对RDD进行处理获得洗牌数据;最后不断地将洗牌数据写入外部洗牌服务。
状态修改模块1103,用于在外部洗牌服务发送数据完毕后,将任务的状态修改为等待完成态。
在一些实施例中,执行线程利用任务集列表管理任务,该任务集列表标注每个任务的当前状态。其中,任务状态包括启动态、运行态、完成态、失败态、停止态、丢失态以及等待完成态。其中,等待完成态是执行线程将数据向外部Shuffle服务发送完毕,但还未完成时的状态。换言之,当数据已经被写入外部Shuffle服务,但外部Shuffle服务还未将这些数据写入分布式文件系统,任务的状态不属于完成态,即该任务实际上并未完全结束。
在本实施例中,在原有任务状态的基础上,增加了等待完成态,用以表示数据已经被写入外部Shuffle服务,正在等待外部Shuffle服务将数据存入分布式文件系统。此时,执行线程没有具体工作,已经不要占用资源。
第二发送模块1104,用于将等待完成态发送给驱动线程,以供驱动线程释放任务对应的执行线程。
在一些实施例中,当执行线程将数据写入外部Shuffle服务时,将等待完成态发送给驱动线程。驱动线程收到任务的状态为等待完成态时,释放该任务对应的执行线程,这样驱动线程可以为该执行线程重新分配任务。
本公开实施例提供的分布式存储方法,响应驱动线程的任务请求,读取并向外部洗牌服务发送数据;在所述外部洗牌服务发送所述数据完毕后,将所述任务的状态修改为等待完成态;将所述等待完成态发送给所述驱动线程,以供所述驱动线程释放所述任务对应的执行线程,即,当执行线程向外部洗牌服务发送完毕后,即向驱动线程返回该任务处于等待完成态,驱动线程随即释放该任务对应的执行线程,并不需要等到该任务为终止态时才释放对应的执行线程,减少了执行线程资源的浪费,提升了任务运行效率。
第四方面,本公开实施例提供一种分布式存储装置,该分布式存储装置应用于驱动线程。图12为本公开实施例提供的一种分布式存储装置的原理框图。如图12所示,分布式存储装置包括:
任务发送模块1201,用于向执行线程发送任务请求,以使执行线程读取并向外部洗牌服务发送数据。
其中,驱动线程给执行线程分配任务,执行线程响应驱动线程的任务请求执行相应的任务,将数据存储在分布式文件系统中。
在本实施例中,驱动线程通过外部Shuffle服务将数据存储在分布式文件系统中。当执行线程收到驱动线程分发的任务时,执行线程读取数据,并不断地将这些数据发送至外部Shuffle服务,外部Shuffle服务再将数据存储于分布式文件系统。
在一些实施例中,执行线程运行第一任务Map Shuffle Task和第二任务ResultTask。其中,执行线程运行Map Shuffle Task的步骤包括:Map Shuffle Task响应驱动线程的任务请求,读取用户的数据,并将数据构造弹性分布式数据集(Resilient DistributedDataSet,简称RDD);然后调用用户的处理逻辑对RDD进行处理获得洗牌数据;最后不断地将洗牌数据写入外部洗牌服务。
接收模块1202,用于接收执行线程返回任务的状态。
资源释放模块1203,用于在执行线程返回任务的状态为等待完成态时,释放任务对应的执行线程。
其中,等待完成态是执行线程向外部洗牌服务发送数据完毕后任务所处的状态。
在一些实施例中,当执行线程将数据写入外部Shuffle服务时,将等待完成态发送给驱动线程。驱动线程收到任务的状态为等待完成态时,释放该任务对应的执行线程,这样驱动线程可以为该执行线程重新分配任务。
本公开实施例提供的分布式存储方法,响应驱动线程的任务请求,读取并向外部洗牌服务发送数据;在所述外部洗牌服务发送所述数据完毕后,将所述任务的状态修改为等待完成态;将所述等待完成态发送给所述驱动线程,以供所述驱动线程释放所述任务对应的执行线程,即,当执行线程向外部洗牌服务发送完毕后,即向驱动线程返回该任务处于等待完成态,驱动线程随即释放该任务对应的执行线程,并不需要等到该任务为终止态时才释放对应的执行线程,减少了执行线程资源的浪费,提升了任务运行效率。
第五方面,参照图13,本公开实施例提供一种电子设备,其包括:
一个或多个处理器1301;
存储器1302,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现上述任意一项的分布式存储方法;
一个或多个I/O接口1303,连接在处理器与存储器之间,配置为实现处理器与存储器的信息交互。
其中,处理器1301为具有数据处理能力的器件,其包括但不限于中央处理器(CPU)等;存储器1302为具有数据存储能力的器件,其包括但不限于随机存取存储器(RAM,更具体如SDRAM、DDR等)、只读存储器(ROM)、带电可擦可编程只读存储器(EEPROM)、闪存(FLASH);I/O接口(读写接口)1303连接在处理器1301与存储器1302间,能实现处理器1301与存储器1302的信息交互,其包括但不限于数据总线(Bus)等。
在一些实施例中,处理器1301、存储器1302和I/O接口1303通过总线相互连接,进而与计算设备的其它组件连接。
第六方面,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现上述任意一种分布式存储方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其它的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其它传输机制之类的调制数据信号中的其它数据,并且可包括任何信息递送介质。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其它实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。

Claims (10)

1.一种分布式存储方法,应用于执行线程,其包括:
接收驱动线程发送的任务请求,响应所述驱动线程的任务请求,读取并向外部洗牌服务发送数据;
在所述数据向外部洗牌服务发送完毕后,将所述任务的状态修改为等待完成态;所述等待完成态用以表示所述数据已经被写入所述外部洗牌服务,正在等待所述外部洗牌服务将所述数据存入分布式文件系统;
将所述等待完成态发送给所述驱动线程,以供所述驱动线程释放所述任务对应的执行线程;
所述在所述数据向所述外部洗牌服务发送完毕后,将所述任务的状态修改为等待完成态之后,包括:
将处于等待完成态的所述任务加入管道任务集合;其中,所述管道任务集合是处于等待完成态的任务的集合;
所述将处于等待完成态的所述任务加入管道任务集合之后,还包括:
对所述管道任务集合中的所述任务进行冲刷操作;
从所述管道任务集合中过滤出处于终止态的任务;
调用失败回调函数和完成回调函数,对处于终止态的所述任务进行回调操作;
将执行所述回调操作后的所述任务从所述管道任务集合中移除。
2.根据权利要求1所述的方法,其中,所述接收驱动线程发送的任务请求,响应驱动线程的任务请求,读取并向外部洗牌服务发送数据,包括:
响应驱动线程的任务请求读取所述数据,并基于所述数据构造弹性分布式数据集;
对所述弹性分布式数据集进行处理获得洗牌数据;
将所述洗牌数据写入所述外部洗牌服务。
3.根据权利要求1所述的方法,其中,所述将处于等待完成态的所述任务加入管道任务集合之后,还包括:
响应所述外部洗牌服务返回的响应消息,调用回调函数对所述任务进行回调操作;
将执行所述回调操作的所述任务从所述管道任务集合中移除。
4.根据权利要求1所述的方法,其中,所述对所述管道任务集合中的任务进行冲刷操作,包括:
按照预设时间间隔或所述任务的数量达到预设值时,对所述管道任务集合中的任务进行冲刷操作。
5.根据权利要求1或4所述的方法,其中,所述终止态包括停止态、超时态和完成态。
6.一种分布式存储方法,应用于驱动线程,其包括:
向执行线程发送任务请求,以使所述执行线程响应所述任务请求读取并向外部洗牌服务发送数据;
响应所述执行线程返回任务的状态为等待完成态,释放所述任务对应的执行线程;其中,所述等待完成态是所述执行线程在所述数据向所述外部洗牌服务发送完毕后所述任务所处的状态;所述等待完成态用以表示所述数据已经被写入所述外部洗牌服务,正在等待所述外部洗牌服务将所述数据存入分布式文件系统;
所述执行线程在所述数据向所述外部洗牌服务发送完毕后,还包括:
将处于等待完成态的所述任务加入管道任务集合;其中,所述管道任务集合是处于等待完成态的任务的集合;
所述将处于等待完成态的所述任务加入管道任务集合之后,还包括:
对所述管道任务集合中的所述任务进行冲刷操作;
从所述管道任务集合中过滤出处于终止态的任务;
调用失败回调函数和完成回调函数,对处于终止态的所述任务进行回调操作;
将执行所述回调操作后的所述任务从所述管道任务集合中移除。
7.一种分布式存储装置,应用于执行线程,其包括:
读取数据模块,用于接收驱动线程发送的任务请求,响应驱动线程的任务请求读取数据;
第一发送模块,用于将所述数据发送给外部洗牌服务;
状态修改模块,用于在所述数据向所述外部洗牌服务发送完毕后,将所述任务的状态修改为等待完成态;所述等待完成态用以表示所述数据已经被写入所述外部洗牌服务,正在等待所述外部洗牌服务将所述数据存入分布式文件系统;
第二发送模块,用于将所述等待完成态发送给所述驱动线程,以供所述驱动线程释放所述任务对应的执行线程;
状态修改模块,还用于在所述数据向所述外部洗牌服务发送完毕后,将所述任务的状态修改为等待完成态之后,将处于等待完成态的所述任务加入管道任务集合;其中,所述管道任务集合是处于等待完成态的任务的集合;
以及,所述将处于等待完成态的所述任务加入管道任务集合之后,还用于:对所述管道任务集合中的所述任务进行冲刷操作;从所述管道任务集合中过滤出处于终止态的任务;调用失败回调函数和完成回调函数,对处于终止态的所述任务进行回调操作;将执行所述回调操作后的所述任务从所述管道任务集合中移除。
8.一种分布式存储装置,应用于驱动线程,其包括:
任务发送模块,用于向执行线程发送任务请求,以使所述执行线程响应所述任务请求读取并向外部洗牌服务发送数据;
接收模块,用于接收所述执行线程返回任务的状态;
资源释放模块,用于在所述执行线程返回任务的状态为等待完成态时,释放所述任务对应的执行线程;其中,所述等待完成态是所述执行线程在所述数据向所述外部洗牌服务发送完毕后所述任务所处的状态;所述等待完成态用以表示所述数据已经被写入所述外部洗牌服务,正在等待所述外部洗牌服务将所述数据存入分布式文件系统;
所述执行线程在所述数据向所述外部洗牌服务发送完毕后,还包括:将处于等待完成态的所述任务加入管道任务集合;其中,所述管道任务集合是处于等待完成态的任务的集合;
所述将处于等待完成态的所述任务加入管道任务集合之后,还包括: 对所述管道任务集合中的所述任务进行冲刷操作;从所述管道任务集合中过滤出处于终止态的任务;调用失败回调函数和完成回调函数,对处于终止态的所述任务进行回调操作;将执行所述回调操作后的所述任务从所述管道任务集合中移除。
9.一种电子设备,其包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现根据权利要求1-6任意一项所述的方法;
一个或多个I/O接口,连接在所述处理器与存储器之间,配置为实现所述处理器与存储器的信息交互。
10.一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现根据权利要求1-6任意一项所述的方法。
CN202010616643.4A 2020-06-30 2020-06-30 分布式存储方法及装置、电子设备、计算机可读介质 Active CN111782367B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN202010616643.4A CN111782367B (zh) 2020-06-30 2020-06-30 分布式存储方法及装置、电子设备、计算机可读介质
KR1020210008965A KR102544755B1 (ko) 2020-06-30 2021-01-21 분산 저장 방법 및 장치, 전자 기기, 컴퓨터 판독 가능 매체 및 컴퓨터 프로그램 제품
JP2021008733A JP7226743B2 (ja) 2020-06-30 2021-01-22 分散型記憶方法および装置、電子機器、コンピュータ可読媒体およびコンピュータプログラム製品
US17/184,723 US20210406067A1 (en) 2020-06-30 2021-02-25 Distributed storage method, electronic apparatus and non-transitory computer-readable storage medium
EP21159869.3A EP3933582B1 (en) 2020-06-30 2021-03-01 Distributed storage method and device, electronic apparatus and computer-readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010616643.4A CN111782367B (zh) 2020-06-30 2020-06-30 分布式存储方法及装置、电子设备、计算机可读介质

Publications (2)

Publication Number Publication Date
CN111782367A CN111782367A (zh) 2020-10-16
CN111782367B true CN111782367B (zh) 2023-08-08

Family

ID=72760428

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010616643.4A Active CN111782367B (zh) 2020-06-30 2020-06-30 分布式存储方法及装置、电子设备、计算机可读介质

Country Status (5)

Country Link
US (1) US20210406067A1 (zh)
EP (1) EP3933582B1 (zh)
JP (1) JP7226743B2 (zh)
KR (1) KR102544755B1 (zh)
CN (1) CN111782367B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1976349A (zh) * 2001-10-05 2007-06-06 Bea系统公司 爪哇小服务程序和http客户机间异步消息接发的系统和方法
CN103279390A (zh) * 2012-08-21 2013-09-04 中国科学院信息工程研究所 一种面向小作业优化的并行处理系统
CN103605576A (zh) * 2013-11-25 2014-02-26 华中科技大学 一种基于多线程的MapReduce执行系统
CN105373420A (zh) * 2014-08-28 2016-03-02 北京奇虎科技有限公司 数据传输方法及装置
CN105718244A (zh) * 2016-01-18 2016-06-29 上海交通大学 一种流水化数据洗牌传输的Spark任务调度与执行方法
CN108173924A (zh) * 2017-12-26 2018-06-15 北京永洪商智科技有限公司 一种基于分布式平台的大数据传输系统
CN109523455A (zh) * 2018-09-30 2019-03-26 平安科技(深圳)有限公司 一种图像数据异步传输方法、装置及计算机可读存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100395715C (zh) * 2001-11-30 2008-06-18 富士通天株式会社 微型计算机的逻辑开发装置
JP2006185229A (ja) 2004-12-28 2006-07-13 Hitachi Ltd オンライン同期処理方法及び装置
KR20090065232A (ko) * 2007-12-17 2009-06-22 한국전자통신연구원 다중플랫폼 기반의 mac프로그램실행장치, mac 기반의센서노드에 최적화된 태스크스케줄링장치 및 방법
US9069790B2 (en) * 2013-03-14 2015-06-30 Stephen P. LORD Multi-threaded message passing journal
KR101594830B1 (ko) * 2014-01-13 2016-02-17 엔트릭스 주식회사 클라우드 스트리밍 서비스 시스템, 클라우드 스트리밍 서비스 방법 및 이를 위한 서버
KR20190069229A (ko) * 2017-12-11 2019-06-19 한국교통대학교산학협력단 분산 인메모리 이동 객체 관리 시스템 및 방법

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1976349A (zh) * 2001-10-05 2007-06-06 Bea系统公司 爪哇小服务程序和http客户机间异步消息接发的系统和方法
CN103279390A (zh) * 2012-08-21 2013-09-04 中国科学院信息工程研究所 一种面向小作业优化的并行处理系统
CN103605576A (zh) * 2013-11-25 2014-02-26 华中科技大学 一种基于多线程的MapReduce执行系统
CN105373420A (zh) * 2014-08-28 2016-03-02 北京奇虎科技有限公司 数据传输方法及装置
CN105718244A (zh) * 2016-01-18 2016-06-29 上海交通大学 一种流水化数据洗牌传输的Spark任务调度与执行方法
CN108173924A (zh) * 2017-12-26 2018-06-15 北京永洪商智科技有限公司 一种基于分布式平台的大数据传输系统
CN109523455A (zh) * 2018-09-30 2019-03-26 平安科技(深圳)有限公司 一种图像数据异步传输方法、装置及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
丁梦苏 ; 陈世敏 ; .轻量级大数据运算系统Helius.计算机应用.2017,(02),全文. *

Also Published As

Publication number Publication date
JP2022013618A (ja) 2022-01-18
CN111782367A (zh) 2020-10-16
KR20220002056A (ko) 2022-01-06
US20210406067A1 (en) 2021-12-30
EP3933582B1 (en) 2023-07-19
JP7226743B2 (ja) 2023-02-21
KR102544755B1 (ko) 2023-06-20
EP3933582A1 (en) 2022-01-05

Similar Documents

Publication Publication Date Title
US7698602B2 (en) Systems, methods and computer products for trace capability per work unit
US8074222B2 (en) Job management device, cluster system, and computer-readable medium storing job management program
US20180285216A1 (en) Virtual Machine Recovery Method and Virtual Machine Management Device
CN110532205B (zh) 数据传输方法、装置、计算机设备和计算机可读存储介质
CN107566214B (zh) 一种性能测试方法和装置
US10620871B1 (en) Storage scheme for a distributed storage system
CN111061690B (zh) 一种基于rac的数据库日志文件读取方法和装置
CN112039999A (zh) 一种内核态访问分布式块存储系统的方法及系统
CN111858077A (zh) 一种存储系统中io请求日志的记录方法、装置及设备
CN112948169A (zh) 数据备份的方法、装置、设备和存储介质
CN111782367B (zh) 分布式存储方法及装置、电子设备、计算机可读介质
CN113342554A (zh) Io多路复用方法、介质、设备和操作系统
CN111522598A (zh) 嵌入式设备的重启信息记录方法及装置
CN113127179A (zh) 资源调度方法、装置、电子设备及计算机可读介质
US20230393782A1 (en) Io request pipeline processing device, method and system, and storage medium
CN114327259A (zh) 一种闪存通道控制器运行方法、装置、设备及存储介质
CN108874560B (zh) 进行通信的方法和通信设备
CN115248745A (zh) 一种数据处理方法和装置
US10474532B1 (en) Automatic fault tolerance in a computing system providing concurrent access to shared computing resource objects
CN113452726A (zh) 数据传输方法、终端及计算机可读存储介质
CN112835521B (zh) 一种存储空间分配方法、装置
CN111524059A (zh) 一种图像缓存时内存利用方法、系统、终端和存储介质
CN113704297B (zh) 业务处理请求的处理方法、模块及计算机可读存储介质
CN107678838B (zh) 一种跟踪虚拟机操作的方法、装置及虚拟机管理平台
CN115103020B (zh) 数据迁移处理方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant