CN115687252A - 计算方法、装置、设备及存储介质 - Google Patents

计算方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN115687252A
CN115687252A CN202111266495.9A CN202111266495A CN115687252A CN 115687252 A CN115687252 A CN 115687252A CN 202111266495 A CN202111266495 A CN 202111266495A CN 115687252 A CN115687252 A CN 115687252A
Authority
CN
China
Prior art keywords
input data
computing node
task
file
reduce task
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.)
Pending
Application number
CN202111266495.9A
Other languages
English (en)
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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies 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 Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to PCT/CN2022/093459 priority Critical patent/WO2023005366A1/zh
Publication of CN115687252A publication Critical patent/CN115687252A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/13File access structures, e.g. distributed indices
    • 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/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种计算方法、装置、设备及存储介质,所述方法包括:接收并存储至少一个计算节点发送的分片文件以及对应的索引文件,其中,所述分片文件是所述至少一个计算节点执行映射map任务生成的,所述索引文件包括至少一个归约reduce任务的输入数据在所述分片文件中的位置信息;接收目标计算节点发送的输入数据获取请求,所述输入数据获取请求用于获取reduce任务的输入数据;根据所述输入数据获取请求和索引文件,将所述reduce任务对应的输入数据发送至所述目标计算节点。采用本申请,可以降低计算节点和存储设备之间读写数据占用的网络带宽进而可以提升计算效率。

Description

计算方法、装置、设备及存储介质
本申请要求于2021年07月28日提交的申请号为202110857155.7、发明名称为“一种数据处理方法和计算机”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及互联网技术领域,特别涉及一种计算方法、装置、设备及存储介质。
背景技术
spark计算框架是目前常见的一种分布式计算框架。在spark计算框架中包括管理节点和计算节点,管理节点用于向各计算节点分配计算任务,各计算节点用于执行管理节点分配的计算任务。
在spark计算框架的各计算节点处理计算任务的过程中包括shuffle过程。shuffle过程是将map任务的输出数据对应到reduce任务的输入数据过程,下面对shuffle过程进行说明:
如一个shuffle过程中存在n个map任务和m个reduce任务,不同的计算节点可以先执行n个map任务,再执行m个reduce任务。在任一计算节点在执行一个map任务的过程中,可以将计算结果(输出数据)持续化写到本地内存中,由于计算节点的内存的存储空间有限,可能无法存储一个map任务对应的所有计算结果,所以当写到内存的计算结果的数据量达到设定的数据量阈值时,可以将内存中的计算结果生成分片文件写到Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)中,同时在内存中清除这些计算结果继续存储该map任务后续的计算结果。计算节点在完成对map任务的处理后,可以再从HDFS并行读取该map任务对应的多个分片文件,将读取的数据的进行合并处理,生成合并文件并存储到HDFS中。这样对于每个map任务,HDFS中存储有对应的合并文件。另外,每个合并文件可对应有索引文件,索引文件中可记录有每个reduce任务的输入数据在合并文件中的数据偏移量,索引文件可由计算节点生成并发送至HDFS。各计算节点在执行n个map任务后,可开始执行m个reduce任务,在任一计算节点在执行reduce任务时,可以向HDFS发送对应reduce任务的输入数据获取请求,HDFS可以根据合并文件对应的索引文件,在合并文件中确定对应reduce任务的输入数据,并将确定的输入数据发送至执行对应reduce任务的计算节点。
根据上述对shuffle过程的说明内容可知,计算节点会将计算结果以分片文件的形式写入到HDFS中,再从HDFS中读取分片文件,然后对读取的分片文件进行合并,再将对应的合并文件写到HDFS中,如此占用了计算节点和HDFS之间大量的网络带宽,如此可能造成计算节点和HDFS之间的网络堵塞,进而导致计算效率降低。
因此,如何提升计算效率成为了亟待解决的问题。
发明内容
本申请实施例提供了一种计算方法、装置、设备及存储介质,可以降低shuffle过程中计算节点和存储设备之间占用的网络带宽,提升计算效率。所述技术方案如下:
第一方面,提供了一种计算方法,该方法应用于存储设备,该方法包括:
接收并存储至少一个计算节点发送的分片文件以及对应的索引文件,其中,该分片文件是至少一个计算节点执行映射map任务生成的,该索引文件包括至少一个归约reduce任务的输入数据在分片文件中的位置信息,接收目标计算节点发送的输入数据获取请求,该输入数据获取请求用于获取reduce任务的输入数据;根据该输入数据获取请求和索引文件,将该reduce任务对应的输入数据发送至目标计算节点。
本申请实施例所示的方案,存储设备可以接收并存储各计算节点在执行map任务时,生成的分片文件以及对应的索引文件。其中,每个分片文件可对应一个索引文件,任一索引文件中可包括至少一个reduce任务的输入数据在该索引文件对应的分片文件中的位置信息。当存储设备接收到目标计算节点发送的对应reduce任务的输入数据获取请求时,存储设备可以根据输入数据获取请求,在存储的分片文件和索引文件中,确定与该reduce任务关联的map任务的分片文件以及对应的索引文件。然后可以根据确定的索引文件,在对应的分片文件中获取该reduce任务对应的输入数据,并将获取的输入数据发送至目标计算节点。其中,目标计算节点可以是spark计算框架中的任一计算节点,reduce任务可以是目标计算节点执行的任一reduce任务。这样,执行map任务的计算节点在执行完map任务后,不需要再从存储设备中读取写到存储设备的分片文件,也不需要将分片文件进行合并处理并将合并处理后的合并文件再次写入存储设备中。可见本申请减少了计算节点和存储设备之间进行读写数据的处理,降低了在shuffle过程中计算节点和存储设备之间占用的网络带宽,可以提高计算效率。
在一种可能的实现方式中,输入数据获取请求包括reduce任务标识,索引文件中包括与reduce任务标识对应的偏移量,该根据输入数据获取请求和索引文件,将reduce任务对应的输入数据发送至目标计算节点,包括:根据reduce任务标识,从索引文件中确定该reduce任务的输入数据在至少一个分片文件中的偏移量;根据确定的偏移量,从对应的分片文件中获取该reduce任务对应的输入数据,将该reduce任务对应的输入数据发送至目标计算节点。
本申请实施例所示的方案,目标计算节点发送的输入数据获取请求中可包括reduce任务标识,该reduce任务标识即为目标计算节点处理的reduce任务的任务标识。在索引文件中可以包括的至少一个reduce任务的输入数据在分片文件中的位置信息,可以是该输入数据在对应的分片文件中的偏移量,且对于每个reduce任务对应的偏移量,可以根据对应的reduce任务标识确定。这样,存储设备在接收到目标计算节点发送的reduce任务的输入数据获取请求后,可以根据reduce任务标识,从索引文件中确定该reduce任务的输入数据在至少一个分片文件中的偏移量,然后根据确定的偏移量,从对应的分片文件中获取该reduce任务的输入数据,并将获取的输入数据发送至目标计算节点。可见,执行map任务的计算节点在执行完map任务后,不需要再从存储设备中读取写到存储设备的分片文件,也不需要将分片文件进行合并处理并将合并处理后的合并文件再次写入存储设备中。存储设备可以根据目标计算节点发送的输入数据获取请求,以及存储的索引文件,将reduce任务对应的输入数据发送至目标计算节点,能够减少计算节点和存储设备之间进行读写数据的处理,降低了在shuffle过程中计算节点和存储设备之间占用的网络带宽,可以提高计算效率。
在一种可能的实现方式中,根据该输入数据获取请求和索引文件,将该reduce任务对应的输入数据发送至该目标计算节点,包括:接收管理节点发送的map任务完成通知,该map任务完成通知携带有目标计算节点标识,其中,该目标计算节点标识指示运行该map任务的多个计算节点中优先完成该map任务的计算节点的计算节点标识;根据该输入数据获取请求和携带该目标计算节点标识的索引文件,从携带该目标计算节点标识的分片文件中获取该reduce任务对应的输入数据;将该reduce任务对应的输入数据发送至该目标计算节点。
本申请实施例所示的方案,可以根据spark计算框架中的推测执行机制,在该推测执行机制下同一map任务可以分别在多个计算节点中执行。管理节点可以将同一map任务分配至不同的计算节点进行执行,并向执行该map任务的各计算节点分配对应的计算节点标识。各计算节点执行map任务的过程中,可以在生成的分片文件和索引文件中添加对应的计算节点标识。管理节点可以确定执行同一map任务的各计算节点中优先完成map任务的计算节点,并向存储设备发送携带有该计算节点对应的目标计算节点标识的map任务完成通知。存储设备可以根据目标计算节点标识,在reduce任务关联的map任务的分片文件以及对应的索引文件中,确定包括目标计算节点标识的分片文件以及对应的索引文件,进而可以根据确定的分片文件以及对应的索引文件,将reduce任务对应的输入数据发送至目标计算节点。如此,在多个计算节点中执行同一map任务,可以提高执行map任务的效率。
在一种可能的实现方式中,计算节点标识记录在map任务的分片文件的文件名以及索引文件的文件名中。
本申请实施例所示的方案,可以将计算节点标识记录在分片文件的文件名以及对应的索引文件的文件名中,进而存储设备可以根据分片文件和索引文件的文件名,确定reduce任务对应为生效状态的分片文件以及对应的索引文件。这样,无需读取分片文件以及索引文件中的数据,便可以确定生成分片文件以及索引文件的计算节点,能够提高确定reduce任务对应为生效状态的分片文件和索引文件的效率,进而提高shuffle过程的处理效率。
在一种可能的实现方式中,输入数据获取请求用于获取reduce任务的部分输入数据。
本申请实施例所示的方案,存储设备接收的由目标计算节点发送的输入数据获取请求,可用于指示存储设备获取reduce任务的部分输入数据,将部分输入数据发送至目标计算节点。这样目标计算节点可以多次向存储设备发送输入数据获取请求,进而使存储设备将reduce任务的输入数据分批发送至目标计算节点。这样,能够降低存储设备单次向目标计算节点发送的数据量,可以降低存储设备和目标计算节点之间占用的网络带宽。并且,目标计算节点可以分批接收输入数据,对分批接收的输入数据进行并行处理,能够提高执行reduce任务的效率。
在一种可能的实现方式中,reduce任务对应的输入数据包括多个子输入数据,该根据输入数据获取请求和索引文件,将reduce任务对应的输入数据发送至目标计算节点,包括:确定该reduce任务的多个子输入数据在分片文件中的位置信息,其中,各子输入数据在分片文件中的位置信息是基于该reduce任务的输入数据在分片文件中的位置信息、以及子输入数据的数据量确定的,根据各子输入数据对应的位置信息,将该reduce任务对应的各子输入数据分批发送至目标计算节点。
本申请实施例所示的方案,可以将reduce的输入数据划分为多个子输入数据。在向目标计算节点发送reduce任务的输入数据时。可以先根据输入数据获取请求中携带的reduce任务标识,在索引文件中确定reduce任务的输入数据在各分片文件中的位置信息,然后可以根据对子输入数据设置的数据量大小以及该reduce任务的输入数据在分片文件中的位置信息,确定输入数据包括的各子输入数据在分片文件中的位置信息,进而可根据确定的位置信息获取各子输入数据,并将获取的各子输入数据分批发送至目标计算节点。这样,目标计算节点可以分批的接收子输入数据,对子输入数据进行并行处理,能够提高执行reduce任务的效率。
在一种可能的实现方式中,根据各子输入数据对应的位置信息,将该reduce任务对应的各子输入数据分批发送至目标计算节点,包括:向目标计算节点发送各子输入数据对应的位置信息;接收目标计算节点发送的携带指定数目个位置信息的子输入数据获取请求;根据该指定数目个位置信息,在该reduce任务关联的map任务的分片文件中获取对应的指定数目个子输入数据;向目标计算节点发送该指定数目个子输入数据;每当接收到目标计算节点发送的携带目标位置信息的子输入数据获取请求时,根据目标位置信息,在该reduce任务关联的map任务的分片文件中获取对应的目标子输入数据,向目标计算节点发送目标子输入数据。
本申请实施例所示的方案,存储设备在向目标计算节点发送各子输入数据之前,可以将各子输入数据对应的位置信息发送至目标计算节点,目标计算节点可以在接收到的位置信息中选取指定数目个位置信息,并携带在子输入数据获取请求中发送至存储设备。存储设备可以将对应的指定数目个位置信息的子输入数据并行发送至目标计算节点,目标计算节点可以并行的对接收到的指定数目个子输入数据进行处理。目标计算节点在并行处理指定数目个子输入数据的过程中,每当确定有子输入数据处理完成后,可以再向存储设备发送携带目标位置信息的子输入数据获取请求,其中,目标位置信息可以是未被选取的位置信息中的任一位置信息。也就是说,目标计算节点可以并行处理指定数目个子输入数据,每当确定有一个子输入数据完成处理时,可以再向存储设备获取一个子输入数据。这样,目标计算节点能够一直保持并行处理多个(指定数目个)子输入数据,可以提高对目标计算节点处理资源的利用率,并且后续存储设备与目标计算节点之间,可能每次只传输一个子输入数据,可以降低在shuffle过程中计算节点和存储设备之间读写数据占用的网络带宽。
在一种可能的实现方式中,根据各子输入数据对应的位置信息,将该reduce任务对应的各子输入数据分批发送至目标计算节点,包括:在各子输入数据对应的位置信息中,选取指定数目个位置信息;根据选取的指定数目个位置信息,在该reduce任务关联的map任务的分片文件中获取对应的指定数目个子输入数据,向目标计算节点发送该指定数目个子输入数据;当接收到目标计算节点发送的任一子输入数据对应的完成通知时,在未被选取的子输入数据的位置信息中,选取目标位置信息;根据选取的目标位置信息,在该reduce任务关联的map任务的分片文件中获取对应的目标子输入数据,向目标计算节点发送目标子输入数据。
本申请实施例所示的方案,存储设备在向目标计算节点发送各子输入数据之前,可以先确定各子输入数据对应的位置信息,然后在确定的各子输入数据对应的位置信息中选取指定数目个位置信息,根据选取的指定数目个位置信息在对应的分片文件中获取指定数目个子输入数据,并发送至目标计算节点,目标计算节点可以并行的对接收到的指定数目个子输入数据进行处理。目标计算节点在并行处理指定数目个子输入数据的过程中,每当确定有任一子输入数据处理完成后,可以向存储设备发送对应任一子输入数据的完成通知。存储设备在接收到任一子输入数据的完成通知后,可以在未被选取的子输入数据的位置信息中,选取任一位置信息(即目标位置信息),并根据选取的目标位置信息,在对应的分片文件中获取目标位置信息对应的目标子输入数据,并发送至目标计算节点进行处理。也就是说,目标计算节点可以并行处理指定数目个子输入数据,每当确定有一个子输入数据完成处理时,可以再向存储设备获取一个子输入数据。这样,目标计算节点能够一直保持并行处理多个(指定数目个)子输入数据,可以提高对目标计算节点处理资源的利用率,并且后续存储设备与目标计算节点之间,可能每次只传输一个子输入数据,可以降低在shuffle过程中计算节点和存储设备之间读写数据占用的网络带宽。
第二方面,提供了一种计算方法,方法应用于计算节点,该方法包括:
执行映射map任务,获得输出数据,当执行该map任务的计算节点中存储的输出数据的数据量达到预设数据量阈值时,将该输出数据划分成分片文件,生成该分片文件对应的索引文件,其中,该索引文件包括至少一个归约reduce任务的输入数据在该分片文件中的位置信息;将该分片文件和该索引文件发送至存储设备,发送输入数据获取请求至存储设备,该输入数据获取请求用于获取reduce任务对应的输入数据,接收存储设备发送的该reduce任务的输入数据。
本申请实施例所示的方案,计算节点在每次生成执行map任务对应的分片文件后,可以生成分片文件对应的索引文件,并将分片文件以及对应的索引文件发送至存储设备进行存储。如此,在计算节点执行reduce任务时,存储设备可以根据map对应的索引文件,在对应的分片文件中确定属于reduce任务的输入数据,并将确定的输入数据发送至计算节点,以使计算节点执行reduce任务。这样,避免了计算节点在执行map任务后,再从存储设备中读取map任务对应的分片文件,并将读取到的分片文件合并为合成文件写入存储设备中。可见本申请减少了计算节点和存储设备之间读写数据的处理,降低了计算节点和存储设备之间占用的网络带宽,可以提高计算效率。
在一种可能的实现方式中,输入数据获取请求包括reduce任务标识,索引文件中包括与reduce任务标识对应的偏移量。
本申请实施例所示的方案,目标计算节点发送的输入数据获取请求中可包括reduce任务标识,该reduce任务标识即为目标计算节点处理的reduce任务的任务标识。在索引文件中可以包括至少一个reduce任务的输入数据在分片文件中的位置信息可以是输入数据在分片文件中的偏移量,且对于每个reduce任务对应的偏移量,可以根据对应的reduce任务标识确定。这样,存储设备在接收到目标计算节点发送的reduce任务的输入数据获取请求后,可以根据reduce任务标识,从索引文件中确定该reduce任务的输入数据在至少一个分片文件中的偏移量,然后根据确定的偏移量,从对应的分片文件中获取该reduce任务的输入数据,并将获取的输入数据发送至目标计算节点。可见,执行map任务的计算节点在执行完map任务后,不需要再从存储设备中读取写到存储设备的分片文件,也不需要将分片文件进行合并处理并将合并处理后的合并文件再次写入存储设备中。可见减少了计算节点和存储设备之间进行读写数据的处理,降低了在shuffle过程中计算节点和存储设备之间占用的网络带宽。
在一种可能的实现方式中,执行映射map任务,获得输出数据之前,该方法还包括:接收管理节点发送的map任务执行通知,该执行通知中携带有计算节点标识;其中,分片文件包括计算节点标识,索引文件中包括计算节点标识。
本申请实施例所示的方案,可以根据spark计算框架中的推测执行机制,在该推测执行机制下同一map任务可以分别在多个计算节点中执行。管理节点可以将同一map任务分配至不同的计算节点进行执行,并向执行该map任务的各计算节点分配对应的计算节点标识。各计算节点执行map任务的过程中,可以在生成的分片文件和索引文件中添加对应的计算节点标识。管理节点可以确定执行同一map任务的各计算节点中优先完成map任务的计算节点,并向存储设备发送携带有该计算节点对应的计算节点标识的map任务完成通知。存储设备可以根据目标计算节点标识,在reduce任务关联的map任务的分片文件以及对应的索引文件中,确定包括该计算节点标识的分片文件以及对应的索引文件,进而可以根据确定的分片文件以及对应的索引文件,将reduce任务对应的输入数据发送至目标计算节点。如此,在多个计算节点中执行同一map任务,可以提高执行map任务的效率。
在一种可能的实现方式中,计算节点标识记录在分片文件的文件名以及索引文件的文件名中。
本申请实施例所示的方案,计算节点可以将计算节点标识记录在map任务对应的分片文件的文件名以及对应的索引文件的文件名中,进而存储设备可以根据分片文件和索引文件的文件名,确定reduce任务对应为生效状态的分片文件以及对应的索引文件,无需读取分片文件以及索引文件中的数据,便可以确定生成分片文件以及索引文件的计算节点,能够提高确定reduce任务对应为生效状态的分片文件和索引文件的效率,进而提高shuffle过程的处理效率。
在一种可能的实现方式中,输入数据获取请求用于获取reduce任务的部分输入数据。
本申请实施例所示的方案,存储设备接收的由目标计算节点发送的输入数据获取请求,可用于指示存储设备获取reduce任务的部分输入数据,将部分输入数据发送至目标计算节点。这样目标计算节点可以多次向存储设备发送输入数据获取请求,进而使存储设备将reduce任务的输入数据分批发送至目标计算节点。这样,能够降低存储设备单次向目标计算节点发送的数据量,可以降低存储设备和目标计算节点之间占用的网络带宽。并且,目标计算节点可以分批的接收输入数据,对分批接收的输入数据进行并行处理,能够提高执行reduce任务的效率。
在一种可能的实现方式中,该方法还包括:reduce任务对应的输入数据包括多个子输入数据;接收存储设备发送的reduce任务的对应的各子输入数据在reduce任务的分片文件中的位置信息;在各子输入数据对应的位置信息中,选取指定数目个位置信息,向存储设备发送携带指定数目个位置信息的子输入数据获取请求;接收存储设备发送的指定数目个位置信息对应的子输入数据,根据指定数目个子输入数据执行reduce任务;每当得到任一子输入数据对应的执行结果时,在未被选取的子输入数据的位置信息中,选取目标位置信息,向存储设备发送携带目标位置信息的子输入数据获取请求,接收存储设备发送的目标位置信息对应的目标子输入数据,基于目标子输入数据执行该reduce任务。
本申请实施例所示的方案,目标计算节点在处理reduce任务之前,可以向存储设备发送对应该reduce任务的输入数据获取请求,并可以在接收到的位置信息中选取指定数目个位置信息,将指定数目个位置信息携带在子输入数据获取请求中发送至存储设备。目标计算节点可以并行的对存储设备发送的指定数目个子输入数据进行处理。目标计算节点在并行处理指定数目个子输入数据的过程中,每当确定有子输入数据处理完成后,可以再向存储设备发送携带目标位置信息的子输入数据获取请求。其中,目标位置信息可以是未被选取的位置信息中的任一位置信息。也就是说,目标计算节点可以并行处理指定数目个子输入数据,每当确定有一个子输入数据完成处理时,可以再向存储设备获取一个子输入数据。这样,目标计算节点能够一直保持并行处理多个(指定数目个)子输入数据,可以提高对目标计算节点处理资源的利用率,并且后续存储设备与目标计算节点之间,可能每次只传输一个子输入数据,可以降低在shuffle过程中计算节点和存储设备之间读写数据占用的网络带宽。
在一种可能的实现方式中,该方法还包括:reduce任务对应的输入数据包括多个子输入数据;接收存储设备发送的指定数目个子输入数据,根据指定数目个子输入数据执行reduce任务;每当得到任一子输入数据对应的执行结果后,向存储设备发送任一子输入数据对应的完成通知,接收存储设备发送的目标子输入数据,根据目标子输入数据执行该reduce任务。
本申请实施例所示的方案,计算节点在处理reduce任务之前,可以向存储设备发送对该reduce任务的输入数据获取请求。存储设备根据输入数据获取请求,向目标计算节点发送各子输入数据时,可以先确定各子输入数据对应的位置信息,然后在确定的各子输入数据对应的位置信息中选取指定数目个位置信息,并在对应的分片文件中获取对应指定数目个位置信息的各子输入数据,并发送至目标计算节点,目标计算节点可以对接收到的指定数目个子输入数据进行并行处理。在目标计算节点在并行处理指定数目个子输入数据的过程中,每当确定有任一子输入数据处理完成后,可以向存储设备发送对应任一子输入数据的完成通知。存储设备可以再从未被选取的子输入数据的位置信息中,选取任一位置信息(目标位置信息),并根据选取的目标位置信息,在对应的分片文件中获取目标子输入数据,并发送至目标计算节点进行处理。也就是说,目标计算节点可以并行的处理指定数目个子输入数据,每当确定有一个子输入数据完成处理时,可以再向存储设备获取一个子输入数据。这样,目标计算节点能够一直保持并行处理多个(指定数目个)子输入数据,可以提高对目标计算节点处理资源的利用率,并且后续存储设备与目标计算节点之间,可能每次只传输一个子输入数据,可以降低在shuffle过程中计算节点和存储设备之间读写数据占用的网络带宽。
第三方面,提供了一种计算方法,该方法包括:
计算节点执行映射map任务,获得输出数据,当计算节点中存储的输出数据的数据量达到预设数据量阈值时,计算节点将输出数据划分成分片文件并生成该分片文件对应的索引文件,其中,该索引文件包括至少一个归约reduce任务的输入数据在对应的分片文件中的位置信息,计算节点将该分片文件和该索引文件存储至存储设备;存储设备接收reduce任务的输入数据获取请求,输入数据获取请求用于获取reduce任务的输入数据;存储设备根据该输入数据获取请求和该reduce任务对应的索引文件,将该reduce任务对应的输入数据发送至目标计算节点,其中,目标计算节点用于执行该reduce任务。
本申请实施例所示的方案,计算节点在执行map任务的过程中,当执行map任务的输出数据在内存中的数据量达到预设数据量阈值时,可以根据内存中的输出数据生成分片文件。计算节点在每次得到执行map任务对应的分片文件后,可以生成分片文件对应的索引文件,并将分片文件以及对应的索引文件发送至存储设备进行存储。如此,在计算节点执行reduce任务时,可以向存储设备发送reduce任务的输入数据获取请求。存储设备在接收到该reduce任务的输入数据获取请求后,可以根据map对应的索引文件,在对应的分片文件中确定属于该reduce任务的输入数据,并将确定的输入数据发送至执行该reduce任务的目标计算节点。这样,避免了计算节点在执行map任务后,再从存储设备中读取map任务对应的分片文件,并将读取到的分片文件合并为合成文件写入存储设备中。可见本申请减少了计算节点和存储设备之间读写数据的处理,降低了计算节点和存储设备之间占用的网络带宽,可以提高计算效率。
第四方面,提供了一种计算装置,用于执行第一方面或第一方面的任意一种可能的实现方式中的方法。具体地,该装置包括用于执行第一方面或第一方面的任意一种可能的实现方式中的方法的模块。
第五方面,提供了一种计算装置,用于执行第二方面或第二方面的任意一种可能的实现方式中的方法。具体地,该装置包括用于执行第二方面或第二方面的任意一种可能的实现方式中的方法的模块。
第六方面,提供了一种计算系统,该系统包括计算节点和存储设备,其中:
计算节点,用于执行映射map任务,获得输出数据;
计算节点,用于当计算节点中存储的输出数据的数据量达到预设数据量阈值时,计算节点将输出数据划分成分片文件;
计算节点,用于生成该分片文件对应的索引文件,其中,该索引文件包括至少一个归约reduce任务的输入数据在对应的分片文件中的位置信息;
计算节点,用于将该分片文件和该索引文件存储至存储设备;
存储设备,用于接收reduce任务的输入数据获取请求,该输入数据获取请求用于获取该reduce任务的输入数据;
存储设备,用于根据该输入数据获取请求和该reduce任务对应的索引文件,将该reduce任务对应的输入数据发送至目标计算节点,其中,目标计算节点用于执行该reduce任务。
第七方面,提供了一种存储设备,该存储设备包括存储器和处理器,存储器用于存储计算机指令;处理器执行存储器存储的计算机指令,以使存储设备执行第一方面或第一方面的任意一种可能的实现方式中的方法。
第八方面,提供了一种计算节点,该计算节点包括存储器和处理器,存储器用于存储计算机指令;处理器执行存储器存储的计算机指令,以使存储节点执行第二方面或第二方面的任意一种可能的实现方式中的方法。
第九方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序代码,当计算机程序代码被计算机设备执行时,计算机设备实现第一方面或第一方面的任意一种可能的实现方式中的方法、第二方面或第二方面的任意一种可能的实现方式中的方法、第三方面或第三方面的任意一种可能的实现方式中的方法。
第十方面,提供了一种计算机程序产品,该计算机程序产品包括在计算机可读存储介质中存储的计算机程序,计算程序通过处理器加载以实现第一方面或第一方面的任意一种可能的实现方式中的方法、第二方面或第二方面的任意一种可能的实现方式中的方法、第三方面或第三方面的任意一种可能的实现方式中的方法。
附图说明
图1是本申请实施例提供的一种spark计算框架示意图;
图2是本申请实施例提供的一种计算节点的结构示意图;
图3是本申请实施例提供的一种存储设备的结构示意图;
图4是本申请实施例提供的一种计算方法的流程图;
图5是本申请实施例提供的一种计算方法的流程图;
图6是本申请实施例提供的一种计算方法的流程图;
图7是本申请实施例提供的一种计算方法的流程图;
图8是本申请实施例提供的一种计算方法的流程图;
图9是本申请实施例提供的一种计算方法的流程图;
图10是本申请实施例提供的一种计算方法的流程图;
图11是本申请实施例提供的一种计算装置的结构示意图;
图12是本申请实施例提供的一种计算装置的结构示意图。
具体实施方式
本申请实施例提供了一种计算方法,该方法可应用在spark计算框架中的shuffle过程,spark计算框架是目前常见的一种分布式计算框架,如图1所示,图1是spark计算框架的结构示意图,在spark计算框架可包括管理节点100、计算节点200和存储设备300等。管理节点100为spark计算框架中的各计算节点200分配计算任务,如映射(map)任务和归约(reduce)任务等,并可以监控每个计算节点200执行计算任务的进度等。其中,一个map任务是指对待计算的数据中任一数据分区中的数据进行计算的任务,reduce任务是指将多个map任务的计算结果进行聚合处理的任务。计算节点200可以从其他计算节点200或存储设备300中获取计算任务需要的输入数据,执行对应的计算任务,并将对应的计算结果存储至本地的内存中或存储设备300中。
其中,管理节点和计算节点可以通过网络将计算结果存储至远端的存储设备。管理节点和计算节点可以是服务器,如图2所示,管理节点和计算节点中均可以包括处理器210、发射器220和接收器230,接收器230和发射器220可以分别与处理器210连接,如图2所示。接收器230可以用于接收消息或数据,例如可以接收map任务的输出数据或reduce任务的输出数据等,发射器220和接收器230可以是网卡,发射器220可以用于发送消息或数据,例如可以发送map任务的输出数据或reduce任务的输出数据等。处理器210可以是计算节点(或管理节点)的控制中心,利用各种接口和线路连接整个计算节点(或管理节点)的各个部分,如接收器230和发射器220等。在本申请中,处理器210可以是中央处理器(CentralProcessing Unit,CPU),可以用于实现对计算任务的相关处理,可选的,处理器210可以包括一个或多个处理单元;处理器210可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统,调制解调处理器主要处理无线通信。处理器210还可以是数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件等。计算节点(或管理节点)还可以包括存储器240,存储器240可用于存储软件程序以及模块,处理器210通过读取存储在存储器的软件代码以及模块,从而执行计算节点(或管理节点)的各种功能应用以及数据处理。
存储设备可以单个存储装置,也可以是多个存储装置(如固态硬盘)组成的存储系统,且组成存储系统的多个存储装置可以是计算节点中的存储装置。如图3所示,在存储设备可以包括处理单元310、存储单元320以及通信单元330。其中,通信单元330可通过网络与管理节点以及计算节点进行数据传输,如可以传输map任务的输出数据或reduce任务的输出数据等。存储单元320可以对接收到的管理节点以及计算节点发送的数据进行存储,处理单元310可以控制通信单元330与管理节点以及计算节点之间的数据传输,并对存储单元320中存储的数据进行处理等。在本申请中,存储设备可以是Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)。
为了便于对本申请实施例的理解,下面先对现有的shuffle过程进行介绍:
shuffle过程是指将map任务的输出数据对应到reduce任务的输入数据的过程。由于reduce任务属于“宽依赖”,即一个reduce任务的输入数据,可能包括在其对应的shuffle过程中各map任务的输出数据中。也就是说,在一个shuffle过程中,各计算节点需要先执行各map任务,在得到每个map任务的输出数据之后,各计算节点才可以开始执行reduce任务。
在shuffle过程中,各计算节点可以分别执行shuffle过程中的各map任务。在计算节点执行任一map任务的过程中,计算节点可以为执行的map任务分配一定的内存空间,由于每个map任务分配的内存空间有限,可能无法存储一个map任务对应的所有计算结果,所以当写到内存的计算结果的数据量达到设定的数据量阈值时,可以将内存中的计算结果生成分片文件写到HDFS中,其中,分片文件中包括的数据即为内存中的全部/部分计算结果。如此计算节点执行任一map任务的过程中,可能会向HDFS存储多个分片文件。计算节点在完成对map任务的处理后,可以再从HDFS并行读取该map任务对应的多个分片文件,将读取的数据的进行合并处理,生成合并文件以及合并文件对应的索引文件并存储到HDFS中。其中,在索引文件中可记录有每个reduce任务的输入数据在合并文件中的偏移量。
可见,计算节点首先将计算结果以分片文件的形式写入到HDFS中,然后从HDFS中读取分片文件,对读取的分片文件进行合并,再将对应的合并文件写到HDFS中,如此计算节点和HDFS之间存在大量的数据读写的处理,占用了计算节点和HDFS之间大量的网络带宽。且计算节点和HDFS之间的多次读写处理,还会降低整个shuffle过程的效率。
另外,在spark计算框架中还提供了一种推测执行机制,在该机制下,管理节点可以检测各计算节点执行map任务的进度,当管理节点检测到某个计算节点执行的map任务的进度较慢时,可以将该map任务再分配给其他计算节点执行。也就是会同时存在多个计算节点并行执行同一个map任务。执行同一个map任务的多个计算节点,都会可以HDFS写入分片文件,当有一个计算节点最先完成该map任务的执行后,可以将该计算节点写入到HDFS分片文件或合成文件确定为有效状态。
本方案提供的计算方法,可以应用在shuffle过程中,能够降低shuffle过程中计算节点和存储设备之间网络带宽占用,提高shuffle过程的效率。
下面先对shuffle过程中计算节点对map任务处理流程进行详细介绍,map任务的处理流程可以如图4所示,包括如下步骤:
步骤401、计算节点执行map任务,获得输出数据。
步骤402、当计算节点中存储的输出数据的数据量达到预设数据量阈值时,计算节点将输出数据划分成分片文件。
对于任一计算节点在执行map任务的过程中,可以将得到的计算结果(即输出数据)持续写入计算节点的内存中,当写入到内存的输出数据的数据量达到预设的数据量阈值时,可以根据当前内存中的输出数据生成分片文件。
其中,数据量阈值可以由技术人员预先设置。对于根据内存中的输出数据生成分片文件的处理属于现有技术,此处不再进行详细介绍。另外,在根据内存中的输出数据生成分片文件时,可以通过设置哈希分区函数对输出数据进行分区,分片文件中的每个数据分区中输出数据即为一个reduce任务的输入数据。
例如,在本方法流程的shuffle过程中包括10个reduce任务,则哈希分区函数可以将分片文件中的输出数据划分为10个数据分区,其中,数据分区0中的数据可以为reduce0的输入数据、数据分区1中的数据可以为reduce1的输入数据、数据分区2中的数据可以为reduce2的输入数据等,其中,reduce0、reduce1、reduce2为reduce任务的任务标识,可由技术人员预先设置。
步骤403、计算节点生成分片文件对应的索引文件。
其中,索引文件包括至少一个reduce任务的输入数据在对应的分片文件中的位置信息,该位置信息可以是reduce任务的输入数据在对应的分片文件中偏移量,或者可以是reduce任务的输入数据在对应的分片文件的起始位置和截止位置。
在计算节点每次根据内存中的输出数据生成对应的分片文件后,可以根据分片文件中每个数据分区生成对应的索引文件,即根据每个数据分区中包括的数据量,确定每个reduce任务中的输入数据在分片文件中的偏移量。沿用上述步骤401的举例,例如数据分区0中的数据中数据量为2MB,则对应的在索引文件中记录的偏移量可以记录为2MB,数据分区1中的数据中数据量为3MB,则对应的在索引文件中记录的偏移量可以记录为5MB,数据分区2中的数据中数据量为1MB,则对应的在索引文件中记录的偏移量可以记录为6MB,依次类推,可以确定每个reduce任务中的输入数据在分片文件中的偏移量,进而生成每个分片文件对应的索引文件。
步骤404、计算节点将分片文件以及索引文件发送至存储设备。
计算节点在每次得到执行map任务得到的分片文件以及对应的索引文件后,可以将分片文件以及对应的索引文件发送至存储设备进行存储。其中,在本申请实施例中存储设备可以是HDFS。
步骤405、计算节点清除内存中存储的map任务的输出数据。
计算节点每次向存储设备发送map任务对应的分片文件以及索引文件后,可以将内存中的输出数据清空,并且可以删除生成的索引文件,之后继续转至执行步骤402。这样,计算节点在执行map任务的过程中,可依次生成多个分片文件以及对应的索引文件,并将生成的每个分片文件以及对应的索引文件发送至存储设备。
本申请实施例,计算节点在每次得到执行map任务对应的分片文件后,可以生成分片文件对应的索引文件,并将分片文件以及对应的索引文件发送至存储设备进行存储。不需要再从存储设备中并行读取分片文件,并对读取的分片文件生成合并文件再写入存储设备。可见本申请减少了计算节点和存储设备之间读写数据的处理,降低了shuffle过程中计算节点和存储设备之间读写数据占用的网络带宽,进而可以提高计算效率。
另外,对应spark计算框架中的“推测执行机制”,本申请还提供了一种将分片文件和索引文件写到存储设备的处理,如下:
在推测执行机制中,管理节点可以将同一map任务分配至不同的计算节点进行执行。管理节点在向计算节点分配map任务时,可以为每个计算节点分配对应的计算节点标识,并向对应的计算节点发送携带分配的计算节点标识的map任务执行通知。其中,在管理节点初次向计算节点分配map任务时,分配的计算节点标识可以为默认的标识,例如可以是0,当管理节点第二次向其他的计算节点分配该map任务时,分配的计算节点标识可以为1,依次类推,管理节点在向计算节点分别任一map任务时,可以根据任一map任务被分配的次数确定分配给该计算节点的计算节点标识。
计算节点在执行上述步骤402中生成分片文件的处理时,可以将接收到的计算节点标识添加到生成的分片文件,在执行上述步骤403中生成索引文件的处理时,可以将接收到的计算节点标识添加到生成的索引文件中。这样将生成的分片文件和索引文件写到HDFS后,HDFS可以根据分片文件和索引文件中包括的计算节点标识,区分同一map任务由不同计算节点执行得到的分片文件和索引文件。例如可以将计算节点标识添加到分片文件和索引文件的元数据中。
管理节点在多个执行同一map任务中的计算节点中,确定先完成对map任务的目标计算节点后,可以向HDFS发送map任务完成通知,在map任务完成通知中可以包括分配给目标计算节点的计算节点标识,并且在map任务完成通知中还可以包括对应map任务的任务标识(如mapid),以及对应map任务所属的shuffle标识(如shuffleid)。这样,HDFS可以根据管理节点发送的map任务完成通知,在执行该map任务的多个计算节点发送的分片文件和索引文件中,确定该map任务对应为生效状态的分片文件和索引文件,其中,生效状态的分片文件和索引文件为用于确定reduce任务的分片文件和索引文件。
其中,在本申请中,还可以将计算节点标识添加到分片文件和索引文件的文件名中,下面对分片文件和索引文件的文件名进行说明:
在分片文件和索引文件的文件名中,可以包括对应map任务的任务标识、map任务所属shuffle的shuffle标识、执行任务的计算节点对应的计算节点标识、以及分片文件标识等。其中,各map任务的任务标识可以map任务的数量预先设置。例如,在shuffle过程中的map任务为N个时,则该N个map任务对应的任务标识可分别为map1、map2、map3、…、mapN。分片文件标识为计算节点可以根据在计算节点生成的顺序确定,例如,计算节点在执行map任务的过程中,存储到HDFS的第一个分片文件的分片文件标识为spillFile0、存储到HDFS的第二个分片文件的分片文件标识为spillFile1、存储到HDFS的第三个分片文件的分片文件标识为spillFile2等。
例如,分片文件的文件名为“prefix+appid+shuffleid+mapid+maptempid+spillFileid.data”,索引文件的文件名为“prefix+appid+shuffleid+mapid+maptempid+spillFileid.index”,其中,“prefix+appid+shuffleid”为用于标识分片文件和索引文件对应map任务所属的shuffle流程,mapid为map任务的任务标识,maptempid为计算节点标识,spillFileid为分片文件标识。
另外,计算节点在执行完map任务之后,还可以将map任务对应的分片文件的数量发送至HDFS。这样,HDFS可以根据map任务对应的分片文件的数量,确定map任务对应的各分片文件的分片文件标识,进而可以根据分片文件标识获取map任务对应的分片文件、以及分片文件对应的索引文件。例如map任务对应的分片文件的数量为N,则该map任务对应的分片文件的分片文件标识为spillFile0-spillFile(N-1)。
另外,管理节点向HDFS发送的map任务完成通知还可以以文件的形式写入HDFS中,后续该文件可称为生效指示文件。计算节点向HDFS发送的map任务对应的分片文件的数量也可以以文件的形式写入HDFS中,后续该文件可称为分片数量指示文件。对于生效指示文件和分片数量指示文件的文件名,也可以包括map任务的任务标识、map任务所属shuffle的shuffle标识等。例如,生效指示文件的文件名为“prefix+appid+shuffleid+mapid.tempid”,分片数量指示文件的文件名为“prefix+appid+shuffleid+mapid+maptempid.spillnum”,其中,“prefix+appid+shuffleid”为用于标识分片文件和索引文件对应map任务所属的shuffle流程,mapid为map任务的任务标识,maptempid为计算节点标识。
对于上述分片文件、索引文件、生效指示文件、分片数量指示文件的文件名的设置,可在计算节点处理reduce任务时,HDFS可根据上述文件对应的文件名,确定对应reduce任务的输入数据,其具体处理此处先不进行介绍。
本申请实施例,计算节点在每次得到执行map任务得到的分片文件后,可以生成分片文件对应的索引文件,并将分片文件以及对应的索引文件发送至存储设备进行存储。如此,在计算节点执行reduce任务时,存储设备可以根据map对应的索引文件,在对应的分片文件中确定属于reduce任务的输入数据,并将确定的输入数据发送至计算节点,以使计算节点执行reduce任务。这样,避免了计算节点在执行map任务后,再从存储设备中读取map任务对应的分片文件,并将读取到的分片文件合并为合成文件写入存储设备中。可见本申请减少了计算节点和存储设备之间读写数据的处理,降低了shuffle过程中计算节点和存储设备之间读写数据占用的网络带宽,进而可以提高计算效率。
下面先对shuffle过程中计算节点和存储设备对reduce任务的处理流程进行详细介绍,reduce任务的处理流程可以如图5所示,包括如下步骤:
步骤501、存储设备接收目标计算节点发送的输入数据获取请求。
其中,目标计算节点可以是任一执行reduce任务的计算节点,在spark计算框架中的各计算节点将shuffle过程中的map任务执行完成之后,可以开始执行reduce任务。目标计算节点在执行reduce任务时,可以先向HDFS发送对应reduce任务的输入数据获取请求。在输入数据获取请求中可以携带目标计算节点所执行的reduce任务(后续可称目标reduce任务)所属的shuffle流程对应的shuffle标识、关联的map任务的个数、以及reduce任务标识等,进而使存储设备根据上述多个标识,确定目标计算节点所执行的目标reduce任务对应的分片文件和索引文件等,其中,本申请实施例的流程中存储设备可以为HDFS。
可理解的,图5所示的方法流程中的reduce任务与图4所示的方法流程中的map任务属于同一shuffle流程。即在同一shuffle过程中,管理节点、各计算节点以及存储设备在基于在图4所示的方法流程,处理完所有的map任务之后,可以开始执行图5所示的方法流程,即开始处理reduce任务。也就是说,在执行步骤501时,存储设备中已经存储有各map任务对应的分片文件以及索引文件。并且分片文件和索引文件可以按照上述步骤405中说明的文件名进行存储,在存储设备中,还可以包括管理节点发送的各map任务对应的map任务完成通知,以及计算节点发送的各map任务对应的分片文件的数量等。且每个map任务对应的map任务完成通知可以以生效指示文件的形式存储在HDFS中,每个map任务对应的分片文件的数量可以以分片数量指示文件的形式存储在HDFS中。
步骤502、存储设备根据输入数据获取请求和索引文件,将reduce任务对应的输入数据发送至目标计算节点。
HDFS在接收到对应目标计算节点发送的目标reduce任务的输入数据获取请求后,可以根据输入数据获取请求中携带的shuffle标识,以及存储的分片文件和索引文件中包括的shuffle标识,在存储的分片文件和索引文件中确定与目标reduce任务关联的各map任务对应的分片文件和索引文件。其中,目标reduce任务关联的map即为与目标reduce任务属于同一个shuffle过程的各map任务。然后HDFS可以根据已存储的各map任务对应的map任务完成通知中包括的计算节点标识,以及与目标reduce任务关联的各map任务对应的分片文件和索引文件中包括的计算节点标识,确定目标reduce任务关联的各map任务对应的为生效状态的分片文件和索引文件。之后,可以在确定的各索引文件中记录的各reduce任务的输入数据在对应分片文件中偏移量,分别在对应的分片文件中,确定目标reduce任务的输入数据,并将确定目标reduce任务的输入数据发送至目标计算节点。进而使目标计算节点根据接收到的输入数据执行目标reduce任务。
在本申请实施例中,存储设备可以接收并存储各计算节点在执行map任务时,产生的分片文件以及对应的索引文件。当存在目标计算节点发送的对应目标reduce任务的输入数据获取请求,存储设备可以确定目标reduce任务关联的map任务的分片文件以及对应的索引文件,根据确定的索引文件中包括的目标reduce任务的输入数据在对应的分片文件中的位置信息,在对应的分片文件中确定目标reduce任务对应的输入数据,将目标reduce任务对应的输入数据发送至目标计算节点,这样,执行map任务的计算节点在执行完map任务后,不需要再从存储设备中读取写到存储设备的分片文件,也不需要将分片文件进行被合并处理,将合并处理后的合并文件再次写入存储设备中。可见本申请减少了计算节点和存储设备之间读写数据的处理,降低了shuffle过程中计算节点和存储设备之间读写数据占用的网络带宽,进而提高计算效率。
另外,对应spark计算框架中的“推测执行机制”,本申请还提供了一种存储设备向计算节点发送reduce任务输入数据的方法,如图6所示,该方法包括:
步骤601、存储设备接收管理节点发送的map任务完成通知。
其中,map任务完成通知携带有目标计算节点标识,其中,目标计算节点标识指示运行同一map任务的多个计算节点中优先完成该map任务的计算节点的计算节点标识,各个计算节点标识可以是管理节点分配至执行map任务的各计算节点的。
管理节点确定多个执行同一map任务的计算节点中先完成map任务的计算节点,并向存储设备发送map任务完成通知,在map任务完成通知中可以包括分配给该计算节点的计算节点标识(即目标计算节点标识)、以及map任务对应的shuffle标识和map任务的map标识。
步骤602、存储设备接收目标计算节点发送的输入数据获取请求。
其中,该目标计算节点可以是任一执行reduce的节点。在输入数据获取请求中可以目标计算节点所执行的目标reduce任务所属的shuffle流程对应的shuffle标识、关联的map任务的个数、以及reduce任务标识等。
步骤603、存储设备根据输入数据获取请求和携带目标计算节点标识的索引文件,从携带目标计算节点标识的分片文件中获取reduce任务对应的输入数据。
由上述步骤405可知,HDFS中存储的分片文件和索引文件包括计算节点标识,并存储有管理节点发送的map任务完成通知,map任务完成通知中包括计算节点标识。在确定在reduce任务关联的map任务的分片文件以及对应的索引文件的处理时,可以在reduce任务关联的map任务的分片文件以及对应的索引文件中,确定包括目标计算节点标识的分片文件以及对应的索引文件。具体的,存储设备在接收到目标计算节点发送的对应reduce任务的输入数据获取请求后,可以根据输入数据获取请求中携带的shuffle标识,确定reduce任务关联的各map任务的对应的分片文件以及索引文件。对于reduce任务关联的任一map任务,如果HDFS中存储有对应的map任务完成通知,则可以根据map任务完成通知中包括的计算节点标识,在确定的各分片文件以及索引文件中,确定包括计算节点标识的分片文件以及对应的索引文件。包括计算节点标识的分片文件以及对应的索引文件,即为map任务对应的为生效状态的分片文件以及索引文件。
存储设备在确定包括计算节点标识的分片文件以及对应的索引文件后,可以根据确定的分片文件和索引文件,将reduce任务对应的输入数据发送至目标计算节点。其中,对于确定的每个分片文件,可以在分片文件对应的索引文件中,获取reduce任务的输入数据在分片文件中的位置信息,根据目标reduce任务的输入数据在分片文件中的位置信息,在分片文件中获取目标reduce任务对应的输入数据。进一步处理如下:
在索引文件中,按照reduce任务的顺序,记录了各个reduce任务的输入数据在对应分片文件中的偏移量。其中,reduce任务的顺序可以由技术人员预先设置,并可以将reduce任务的顺序设置为reduce任务的reduceid,例如一个shuffle过程中的reduce任务对应的reduceid包括reduce0、reduce1、reduce2等等。索引文件中记录的偏移量可以是reduce任务的输入数据起始位置也可以是结束位置。以索引文件中记录的reduce任务的输入数据的偏移量为reduce任务的结束位置为例,在索引文件中可以根据reduce任务的顺序,各reduce任务的输入数据在分片文件中的偏移量。例如在索引文件中记录10MB、20MB、30MB等等。其中,0MB-10MB即为reduce0对应的输入数据,10MB-20MB即为reduce1对应的输入数据,20MB-30MB即为reduce2对应的输入数据。
在获取索引文件后,可以根据目标reduce任务对应的reduceid,确定索引文件中记录的目标reduce任务的偏移量,进而根据的偏移量在对应的分片文件中获取输入数据,并发送至目标计算节点。如此,在多个计算节点中执行同一map任务,可以提高执行map任务的效率,并且可以根据计算标识能够准确的确定先执行完map任务的计算节点对应的分片文件以及对应的索引文件。
另外,对应上述步骤405中,分片文件、索引文件、生效指示文件、分片数量指示文件的文件名的设置。HDFS可根据上述文件对应的文件名,确定对应reduce任务的输入数据。
其中,对于每个计算节点执行的map任务,在HDFS中可以对应存储有四类文件,分别为分片文件、索引文件、生效指示文件、分片数量指示文件。在上述四类文件的文件名中可以包括有shuffle标识、map标识、分片文件标识等。目标计算节点发送的对应目标reduce任务的输入数据获取请求后,可以根据上述四类文件确定属于目标reduce任务的输入数据,具体处理参见图7,包括:
步骤701、接收目标计算节点发送的目标reduce任务的输入数据获取请求。
其中,在目标reduce任务的输入数据获取请求中还可以携带有shuffle标识、以及目标reduce任务reduce标识(reduceid)、与目标reduce任务关联map任务的数目(maptasknum)等。
步骤702、根据maptasknum,依次遍历目标reduce任务关联的各map任务。
HDFS在确定目标reduce任务对应的maptasknum后,可以根据maptasknum,确定目标reduce任务关联的各map任务对应的mapid,例如maptasknum为10,则目标reduce任务关联的各map任务对应的mapid包括map0-map9。遍历目标reduce任务关联的各map任务,是指根据mapid确定对应map任务对应的分片文件和索引文件。
步骤703、对于遍历的每个map任务,获取对应生效指示文件中记录的计算节点标识(attempid)。
由于spark计算框架中设置有推测执行机制,所以每个map任务可能由多个计算节点重复执行,也就是说,对于同一map任务,在HDFS中存储有由不同计算节点上传的分片文件。因此,在每遍历一个map任务,可以先根据mapid,确定对应文件名中包括对应mapid的生效指示文件,然后获取生效指示文件中记录的attempid。
步骤704、根据map任务的mapid、attempid,获取分片数量指示文件中包括的对应map任务的分片文件的数量(spillnum)。
在获取attempid后,可以根据mapid、attempid以及map任务对应的shuffleid等,确定map任务对应的分片数量指示文件,即确定文件名中包括对应mapid、attempid、shuffleid等信息的分片数量指示文件。然后可以从分片数量指示文件获取对应map任务的分片文件的spillnum。
步骤705、基于spillnum,获取各分片文件对应的索引文件。
由于分片文件的spillFileid是按照分片文件的生成顺序确定的,在确定spillnum后,HDFS可以根据spillnum确定每个分片文件的分片文件标识(spillFileid)。例如spillnum为10,则对应的spillFileid包括spillFile0-spillFile9。在确定目标reduce任务对应的各分片文件的spillFileid)后,由于索引文件的文件名中也包括spillFileid,因此可以在根据确定的各分片文件对应的spillFileid,确定目标reduce任务对应的各分片文件的索引文件。即可以确定文件名中包括对应mapid、attempid、shuffleid以及spillFileid的索引文件。
步骤706、确定每个索引文件中属于目标reduce任务的偏移量,基于确定的偏移量获取对应分片文件中的输入数据。
对于确定的每个索引文件,可以根据索引文件中记录的各reduce任务的输入数据在对应分片文件中的偏移量,从分片文件中获取目标reduce任务对应的输入数据。
步骤707、将获取的输入数据发送至目标计算节点。
每当HDFS将获取的输入数据对应的数据量达到预设的发送数据量时,可以将对应数据量的输入数据发送中目标计算节点。目标计算节点可以接收HDFS发送的输入数据,并根据接收到的输入数据执行目标reduce任务。
另外,为了提高向计算节点发送的输入数据的效率,以及提高计算节点在接收到的输入数据,执行目标reduce任务的效率。本申请还提供了一种向目标计算节点发送目标reduce任务对应的输入数据的方法,参见图8,该方法包括:
步骤801、根据目标reduce任务的输入数据在分片文件中的位置信息、以及子输入数据的数据量,确定reduce任务对应的各子输入数据在reduce任务关联的map任务的分片文件中的位置信息。
其中,目标reduce任务对应的输入数据是由多个子输入数据组成的。技术人员可以预先设置每个子输入数据的数据量,确定目标reduce任务对应的分片文件后,可以根据每个分片文件中记录的属于目标reduce任务的输入数据的偏移量,确定目标reduce任务的输入数据对应的总数据量,然后将总数据量与设置的每个子输入数据的大小,确定将目标reduce任务的输入数据划分为子输入数据的个数。在确定目标reduce任务对应子输入数据的个数后,可以确定每个子输入数据在分片文件中的位置信息。
例如,与目标reduce任务关联的某个map任务中包括三个分片文件。其中,目标reduce任务的输入数据在分片文件0中的起始偏移量为10MB、结束偏移量为25MB,在分片文件1中的起始偏移量为40MB、结束偏移量为60MB,在分片文件2中的起始偏移量为40MB、结束偏移量为45MB。则可以确定目标reduce任务在该map任务的分片文件中的总输入数据为40MB。假设子输入数据的数据量为10MB,则可以确定目标reduce任务的输入数据可分为4个子输入数据,其中,目标个子输入数据在分片文件0中的起始偏移量为10MB,结束偏移量为20MB;第二个子输入数据在分片文件0中的起始偏移量为20MB,结束偏移量为25MB,在分片文件1中的起始偏移量为40MB,结束偏移量为45MB;第三个子输入数据在分片文件1中的起始偏移量为45MB,结束偏移量为55MB;第三个子输入数据在分片文件1中的起始偏移量为55MB,结束偏移量为60MB,在分片文件2中的起始偏移量为55MB,结束偏移量为60MB.
步骤802、根据各子输入数据对应的位置信息,将reduce任务对应的各子输入数据分批发送至目标计算节点。
在确定每个子输入数据在目标reduce任务对应的各分片文件中的偏移量之后,可以根据各子输入数据在分片文件中的偏移量分批获取子输入数据,每获取一批子输入数据后,可以获取的子输入数据发送至目标计算节点。其中,每次获取子输入数据的数量可以不同,例如,初次获取目标reduce任务对应的子输入数据时,可以获取较多的子输入数据并发送至目标计算节点,之后可以根据目标计算节点对接收到的子输入数据的处理情况,确定向目标计算节点发送子输入数据的个数。
进一步,在本申请中提供了两种向目标计算节点发送目标reduce任务的子输入数据的方法,分别如下:
如图9所示,图9为一种向目标计算节点发送目标reduce任务的子输入数据的方法流程图,该方法包括:
步骤901、目标计算节点向存储设备发送对应目标reduce任务的输入数据获取请求。
步骤902、存储设备根据目标reduce任务的输入数据在分片文件中的位置信息、以及子输入数据的数据量,确定目标reduce任务对应的各子输入数据在目标reduce任务关联的map任务的分片文件中的位置信息。
其中,步骤902中确定目标reduce任务对应的各子输入数据在目标reduce任务关联的map任务的分片文件中的位置信息的处理与上述步骤801中的处理相同,此处不再赘述。
步骤903、存储设备向目标计算节点发送各子输入数据对应的位置信息。
HDFS在确定各子输入数据对应的位置信息之后,可以将确定的各子输入数据对应的位置信息发送至目标计算节点。
步骤904、目标计算节点在各子输入数据对应的位置信息中,选取指定数目个位置信息,向存储设备发送携带指定数目个位置信息的子输入数据获取请求。
其中,指定数目可以由技术人员预先设置,例如指定数目可以是计算节点能够并行处理多个子输入数据的最大数目。
目标计算节点在接收到目标reduce任务对应的各子输入数据在对应的分片文件中的位置信息后,可以在多个位置信息中选取指定数目个位置信息。其中,目标计算节点在选取指定数目个位置信息时,可以按照各位置信息所属分片文件以及map任务的顺序选择。也可以按照其他的选择方式进行选择,如随机选择。
在目标计算节点选择指定数目个位置信息后,可以将指定数目个位置信息携带到子输入数据获取请求中,并发送至HDFS。
步骤905、存储设备接收目标计算节点发送的携带指定数目个位置信息的子输入数据获取请求,根据指定数目个位置信息,在目标reduce任务关联的map任务的分片文件中获取对应的指定数目个子输入数据,向目标计算节点发送指定数目个子输入数据。
HDFS在接收到目标计算节点发送的携带指定数目个位置信息的子输入数据获取请求后,可以根据子输入数据获取请求中携带的指定数目个位置信息,在对应的分片文件中获取对应的指定数目个子输入数据,并行发送至目标计算节点。
步骤906、目标计算节点接收存储设备发送的指定数目个位置信息对应的子输入数据,根据指定数目个子输入数据执行目标reduce任务。
目标计算节点在接收到的HDFS发送的指定数目个位置信息对应的子输入数据后,可以对接收的子输入数据进行并行处理,即执行目标reduce任务。
步骤907、目标计算节点每当得到任一子输入数据对应的执行结果时,在未被选取的子输入数据的位置信息中,选取目标位置信息,向存储设备发送携带目标位置信息的子输入数据获取请求。
目标计算节点开始处理指定数目个子输入数据后,每当确定其中一个子输入数据被处理完之后,即得到该子输入数据对应的执行结果后,可以在未被选取的子输入数据的位置信息中,选取任一位置信息(即目标位置信息),向存储设备发送携带目标位置信息的子输入数据获取请求
步骤908、存储设备每当接收到目标计算节点发送的携带目标位置信息的子输入数据获取请求时,根据目标位置信息,在目标reduce任务关联的map任务的分片文件中获取对应目标位置信息的目标子输入数据,向目标计算节点发送目标子输入数据。
HDFS在接收到目标计算节点发送的携带目标位置信息的子输入数据获取请求后,可以根据目标位置信息,在目标reduce任务关联的map任务的分片文件中获取对应的目标位置信息的目标子输入数据,向目标计算节点发送目标子输入数据。
步骤909、目标计算节点接收存储设备发送的目标位置信息对应的子输入数据,基于目标子输入数据执行目标reduce任务。
目标计算节点接收存储设备发送的目标位置信息对应的子输入数据后,可以开始对接收到的目标子输入数据进行处理。这样,目标计算节点在并行处理指定数目个子输入数据的过程中,每当确定处理完一个子输入数据后,可以向HDFS发送子输入数据获取请求,再获取一个子输入数据。如此可以确保计算节点可一直保持并行处理多个(指定数目个)子输入数据,能够提高对计算节点的处理资源的利用率。且之后计算节点和HDFS之间每次可能只传输一个子输入数据,如此还可以降低计算节点和HDFS之间的网络带宽占用。
如图10所示,图10为另一种向目标计算节点发送目标reduce任务的子输入数据的方法流程图,该方法包括:
步骤1001、目标计算节点向存储设备发送对应目标reduce任务的输入数据获取请求。
步骤1002、存储设备根据目标reduce任务的输入数据在分片文件中的位置信息、以及子输入数据的数据量,确定目标reduce任务对应的各子输入数据在目标reduce任务关联的map任务的分片文件中的位置信息。
其中,步骤1002中确定目标reduce任务对应的各子输入数据在目标reduce任务关联的map任务的分片文件中的位置信息的处理与上述步骤802中的处理相同,此处不再赘述。
步骤1003、存储设备在各子输入数据对应的位置信息中,选取指定数目个位置信息,根据选取的指定数目个位置信息,在目标reduce任务关联的map任务的分片文件中获取对应的指定数目个子输入数据,向目标计算节点发送指定数目个子输入数据。
其中,指定数目可以由技术人员预先设置,例如该指定数目可以是计算节点能够并行处理多个子输入数据的最大数目。
存储设备在确定目标reduce任务对应的各子输入数据在对应的分片文件中的位置信息后,可以在多个位置信息中选取指定数目个位置信息。其中,目标计算节点在选取指定数目个位置信息时,可以按照各位置信息所属分片文件以及map任务的顺序选择,也可以按照其他的选择方式进行选择,如随机选择。
在存储设备选择指定数目个位置信息后,可以根据选取的指定数目个位置信息,在对应的分片文件中获取对应的指定数目个子输入数据,并并行发送至目标计算节点。
步骤1004、目标计算节点接收存储设备发送的指定数目个子输入数据,根据指定数目个子输入数据执行目标reduce任务。
目标计算节点在接收到的HDFS发送的指定数目个位置信息对应的子输入数据后,可以对接收的子输入数据进行并行处理,即执行目标reduce任务。
步骤1005、目标计算节点每当得到任一子输入数据对应的执行结果后,向存储设备发送任一子输入数据对应的完成通知。
目标计算节点开始处理指定数目个子输入数据后,每当确定其中一个子输入数据被处理完之后,即得到该子输入数据对应的执行结果后,向存储设备发送任一子输入数据对应的完成通知。
步骤1006、当存储设备接收到目标计算节点发送的任一子输入数据对应的完成通知时,在未被选取的子输入数据的位置信息中,选取目标位置信息,根据选取的目标位置信息,在目标reduce任务关联的map任务的分片文件中获取对应的目标子输入数据,向目标计算节点发送目标子输入数据。
存储设备在接收到目标计算节点发送的任一子输入数据对应的完成通知后,可以在未被选取的子输入数据的位置信息中,选取任一位置信息(目标位置信息),基于选取的目标位置信息,在目标reduce任务关联的map任务的分片文件中获取对应的目标子输入数据,向目标计算节点发送目标数目个子输入数据。
步骤1007、目标计算节点接收存储设备发送的目标位置信息对应的目标子输入数据,根据目标子输入数据执行目标reduce任务。
目标计算节点接收存储设备发送的目标位置信息对应的子输入数据后,可以开始对接收到的目标子输入数据进行处理。这样,目标计算节点在并行处理指定数目个子输入数据的过程中,每当确定处理完一个子输入数据后,就可以向HDFS发送对应的完成通知,HDFS在接收到目标计算节点发送的完成通知后,可以再向目标计算节点发送一个子输入数据。如此可以确保目标计算节点可一直保持并行处理多个(指定数目个)子输入数据,能够提高对计算节点的处理资源的利用率。且之后目标计算节点和HDFS之间每次可能只传输一个子输入数据,如此还可以降低目标计算节点和HDFS之间的网络带宽占用。
基于相同的技术构思,本申请实施例还提供了一种计算装置,该装置可以是上述实施例中的存储设备,如图11所示,该装置包括:
接收模块1110,用于接收并存储至少一个计算节点发送的分片文件以及对应的索引文件,其中,所述分片文件是所述至少一个计算节点执行映射map任务生成的,所述索引文件包括至少一个归约reduce任务的输入数据在所述分片文件中的位置信息,具体可以用于执行步骤501的存储功能以及其包含的隐含步骤;
所述接收模块1110,用于接收目标计算节点发送的输入数据获取请求,所述输入数据获取请求用于获取reduce任务的输入数据,具体可以用于执行步骤501的存储功能以及其包含的隐含步骤;
发送模块1120,用于根据所述输入数据获取请求和索引文件,将所述reduce任务对应的输入数据发送至所述目标计算节点,具体可以用于执行步骤502的存储功能以及其包含的隐含步骤。
可选的,所述输入数据获取请求包括reduce任务标识,所述索引文件中包括与所述reduce任务标识对应的偏移量;
所述发送模块1120,用于:
根据所述reduce任务标识,从所述索引文件中确定所述reduce任务的输入数据在至少一个分片文件中的偏移量;
根据确定的偏移量,从对应的分片文件中获取所述reduce任务对应的输入数据;
将所述reduce任务对应的输入数据发送至所述目标计算节点。
可选的,所述输入数据获取请求用于获取reduce任务的部分输入数据。
可选的,所述发送模块1120,用于:
接收管理节点发送的map任务完成通知,所述map任务完成通知携带有目标计算节点标识,其中,所述目标计算节点标识指示运行所述map任务的多个计算节点中优先完成所述map任务的计算节点的计算节点标识;
根据所述输入数据获取请求和携带所述目标计算节点标识的索引文件,从携带所述目标计算节点标识的分片文件中获取所述reduce任务对应的输入数据;
将所述reduce任务对应的输入数据发送至所述目标计算节点。
可选的,所述计算节点标识记录在所述map任务的分片文件的文件名以及所述索引文件的文件名中。
需要说明的是:上述实施例提供的计算装置在进行计算时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即存储设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的计算装置与计算方法的实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于相同的技术构思,本申请实施例还提供了一种计算装置,该装置可以是上述实施例中的计算节点,如图12所示,该装置包括:
执行模块1210,用于执行映射map任务,获得输出数据,具体可以用于执行步骤401的存储功能以及其包含的隐含步骤;
划分模块1220,用于当执行所述map任务的所述计算节点中存储的所述输出数据的数据量达到预设数据量阈值时,将所述输出数据划分成分片文件,具体可以用于执行步骤402的存储功能以及其包含的隐含步骤;
生成模块1230,用于生成所述分片文件对应的索引文件,其中,所述索引文件包括至少一个归约reduce任务的输入数据在所述分片文件中的位置信息,具体可以用于执行步骤403的存储功能以及其包含的隐含步骤;
发送模块1240,用于将所述分片文件和所述索引文件发送至存储设备,具体可以用于执行步骤404的存储功能以及其包含的隐含步骤;
所述发送模块1240,用于发送输入数据获取请求至所述存储设备,所述输入数据获取请求用于获取reduce任务对应的输入数据,具体可以用于执行步骤501的存储功能以及其包含的隐含步骤;
接收模块1250,用于接收所述存储设备发送的所述reduce任务的输入数据,具体可以用于执行步骤405的存储功能以及其包含的隐含步骤。
可选的,所述输入数据获取请求包括reduce任务标识,所述索引文件中包括与所述reduce任务标识对应的偏移量。
可选的,所述接收模块1250还用于:
接收管理节点发送的map任务执行通知,所述执行通知中携带有计算节点标识;
其中,所述分片文件包括所述计算节点标识,所述索引文件中包括所述计算节点标识。
可选的,所述计算节点标识记录在所述分片文件的文件名以及所述索引文件的文件名中。
可选的,所述接收模块1250,用于:
接收所述存储设备发送的所述reduce任务对应的部分输入数据。
需要说明的是:上述实施例提供的计算装置在进行计算时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即计算节点的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的计算装置与计算方法的实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于相同的技术构思,本申请实施例还提供了一种计算系统,该系统包括存储设备以及计算节点,其中:
所述计算节点,用于执行映射map任务,获得输出数据;
所述计算节点,用于当所述计算节点中存储的所述输出数据的数据量达到预设数据量阈值时,所述计算节点将所述输出数据划分成分片文件;
所述计算节点,用于生成所述分片文件对应的索引文件,其中,所述索引文件包括至少一个归约reduce任务的输入数据在对应的分片文件中的位置信息;
所述计算节点,用于将所述分片文件和所述索引文件存储至所述存储设备;
所述存储设备,用于接收reduce任务的输入数据获取请求,所述输入数据获取请求用于获取所述reduce任务的输入数据;
所述存储设备,用于根据所述输入数据获取请求和所述reduce任务对应的索引文件,将所述reduce任务对应的输入数据发送至目标计算节点,其中,所述目标计算节点用于执行所述reduce任务。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在设备上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是设备能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(Digital Video Disk,DVD)等),或者半导体介质(如固态硬盘等)。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
本申请实施例中,还提供了一种计算机程序产品,该计算机程序产品包括在计算机可读存储介质中存储的计算机程序,计算程序通过处理器加载以实现上述所提供的计算方法,或者实现上述提供的计算装置的功能。
以上所述仅为本申请一个实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (26)

1.一种计算方法,其特征在于,所述方法应用于存储设备,所述方法包括:
接收并存储至少一个计算节点发送的分片文件以及对应的索引文件,其中,所述分片文件是所述至少一个计算节点执行映射map任务生成的,所述索引文件包括至少一个归约reduce任务的输入数据在所述分片文件中的位置信息;
接收目标计算节点发送的输入数据获取请求,所述输入数据获取请求用于获取reduce任务的输入数据;
根据所述输入数据获取请求和索引文件,将所述reduce任务对应的输入数据发送至所述目标计算节点。
2.根据权利要求1所述的方法,其特征在于,所述输入数据获取请求包括reduce任务标识,所述索引文件中包括与所述reduce任务标识对应的偏移量;
所述根据所述输入数据获取请求和索引文件,将所述reduce任务对应的输入数据发送至所述目标计算节点,包括:
根据所述reduce任务标识,从所述索引文件中确定所述reduce任务的输入数据在至少一个分片文件中的偏移量;
根据确定的偏移量,从对应的分片文件中获取所述reduce任务对应的输入数据;
将所述reduce任务对应的输入数据发送至所述目标计算节点。
3.根据权利要求1或2所述的方法,其特征在于,所述输入数据获取请求用于获取reduce任务的部分输入数据。
4.根据权利要求1-3中任一所述的方法,其特征在于,所述根据所述输入数据获取请求和索引文件,将所述reduce任务对应的输入数据发送至所述目标计算节点,包括:
接收管理节点发送的map任务完成通知,所述map任务完成通知携带有目标计算节点标识,其中,所述目标计算节点标识指示运行所述map任务的多个计算节点中优先完成所述map任务的计算节点的计算节点标识;
根据所述输入数据获取请求和携带所述目标计算节点标识的索引文件,从携带所述目标计算节点标识的分片文件中获取所述reduce任务对应的输入数据;
将所述reduce任务对应的输入数据发送至所述目标计算节点。
5.根据权利要求4所述的方法,其特征在于,所述计算节点标识记录在所述map任务的分片文件的文件名以及所述索引文件的文件名中。
6.一种计算方法,其特征在于,所述方法应用于计算节点,所述方法包括:
执行映射map任务,获得输出数据;
当执行所述map任务的所述计算节点中存储的所述输出数据的数据量达到预设数据量阈值时,将所述输出数据划分成分片文件;
生成所述分片文件对应的索引文件,其中,所述索引文件包括至少一个归约reduce任务的输入数据在所述分片文件中的位置信息;
将所述分片文件和所述索引文件发送至存储设备;
发送输入数据获取请求至所述存储设备,所述输入数据获取请求用于获取reduce任务对应的输入数据;
接收所述存储设备发送的所述reduce任务的输入数据。
7.根据权利要求6所述的方法,其特征在于,所述输入数据获取请求包括reduce任务标识,所述索引文件中包括与所述reduce任务标识对应的偏移量。
8.根据权利要求6或7所述的方法,其特征在于,所述执行映射map任务,获得输出数据之前,所述方法还包括:
接收管理节点发送的map任务执行通知,所述执行通知中携带有计算节点标识;
其中,所述分片文件包括所述计算节点标识,所述索引文件中包括所述计算节点标识。
9.根据权利要求8所述的方法,其特征在于,所述计算节点标识记录在所述分片文件的文件名以及所述索引文件的文件名中。
10.根据权利要求6-9中任一所述的方法,其特征在于,所述接收所述存储设备发送的所述reduce任务对应的输入数据,包括:
接收所述存储设备发送的所述reduce任务对应的部分输入数据。
11.一种计算方法,其特征在于,所述方法包括:
计算节点执行映射map任务,获得输出数据;
当所述计算节点中存储的所述输出数据的数据量达到预设数据量阈值时,所述计算节点将所述输出数据划分成分片文件;
所述计算节点生成所述分片文件对应的索引文件,其中,所述索引文件包括至少一个归约reduce任务的输入数据在对应的分片文件中的位置信息;
所述计算节点将所述分片文件和所述索引文件存储至存储设备;
所述存储设备接收reduce任务的输入数据获取请求,所述输入数据获取请求用于获取所述reduce任务的输入数据;
所述存储设备根据所述输入数据获取请求和所述reduce任务对应的索引文件,将所述reduce任务对应的输入数据发送至目标计算节点,其中,所述目标计算节点用于执行所述reduce任务。
12.一种计算装置,其特征在于,所述装置应用于存储设备,所述装置包括:
接收模块,用于接收并存储至少一个计算节点发送的分片文件以及对应的索引文件,其中,所述分片文件是所述至少一个计算节点执行映射map任务生成的,所述索引文件包括至少一个归约reduce任务的输入数据在所述分片文件中的位置信息;
所述接收模块,用于接收目标计算节点发送的输入数据获取请求,所述输入数据获取请求用于获取reduce任务的输入数据;
发送模块,用于根据所述输入数据获取请求和索引文件,将所述reduce任务对应的输入数据发送至所述目标计算节点。
13.根据权利要求12所述的装置,其特征在于,所述输入数据获取请求包括reduce任务标识,所述索引文件中包括与所述reduce任务标识对应的偏移量;
所述发送模块,用于:
根据所述reduce任务标识,从所述索引文件中确定所述reduce任务的输入数据在至少一个分片文件中的偏移量;
根据确定的偏移量,从对应的分片文件中获取所述reduce任务对应的输入数据;
将所述reduce任务对应的输入数据发送至所述目标计算节点。
14.根据权利要求12或13所述的装置,其特征在于,所述输入数据获取请求用于获取reduce任务的部分输入数据。
15.根据权利要求12-14中任一所述的装置,其特征在于,所述发送模块,用于:
接收管理节点发送的map任务完成通知,所述map任务完成通知携带有目标计算节点标识,其中,所述目标计算节点标识指示运行所述map任务的多个计算节点中优先完成所述map任务的计算节点的计算节点标识;
根据所述输入数据获取请求和携带所述目标计算节点标识的索引文件,从携带所述目标计算节点标识的分片文件中获取所述reduce任务对应的输入数据;
将所述reduce任务对应的输入数据发送至所述目标计算节点。
16.根据权利要求15所述的装置,其特征在于,所述计算节点标识记录在所述map任务的分片文件的文件名以及所述索引文件的文件名中。
17.一种计算装置,其特征在于,所述装置应用于计算节点,所述装置包括:
执行模块,用于执行映射map任务,获得输出数据;
划分模块,用于当执行所述map任务的所述计算节点中存储的所述输出数据的数据量达到预设数据量阈值时,将所述输出数据划分成分片文件;
生成模块,用于生成所述分片文件对应的索引文件,其中,所述索引文件包括至少一个归约reduce任务的输入数据在所述分片文件中的位置信息;
发送模块,用于将所述分片文件和所述索引文件发送至存储设备;
所述发送模块,用于发送输入数据获取请求至所述存储设备,所述输入数据获取请求用于获取reduce任务对应的输入数据;
接收模块,用于接收所述存储设备发送的所述reduce任务的输入数据。
18.根据权利要求17所述的装置,其特征在于,所述输入数据获取请求包括reduce任务标识,所述索引文件中包括与所述reduce任务标识对应的偏移量。
19.根据权利要求17或18所述的装置,其特征在于,所述接收模块还用于:
接收管理节点发送的map任务执行通知,所述执行通知中携带有计算节点标识;
其中,所述分片文件包括所述计算节点标识,所述索引文件中包括所述计算节点标识。
20.根据权利要求19所述的装置,其特征在于,所述计算节点标识记录在所述分片文件的文件名以及所述索引文件的文件名中。
21.根据权利要求17-20中任一所述的装置,其特征在于,所述接收模块,用于:
接收所述存储设备发送的所述reduce任务对应的部分输入数据。
22.一种计算系统,其特征在于,所述系统包括计算节点和存储设备,其中:
所述计算节点,用于执行映射map任务,获得输出数据;
所述计算节点,用于当所述计算节点中存储的所述输出数据的数据量达到预设数据量阈值时,所述计算节点将所述输出数据划分成分片文件;
所述计算节点,用于生成所述分片文件对应的索引文件,其中,所述索引文件包括至少一个归约reduce任务的输入数据在对应的分片文件中的位置信息;
所述计算节点,用于将所述分片文件和所述索引文件存储至所述存储设备;
所述存储设备,用于接收reduce任务的输入数据获取请求,所述输入数据获取请求用于获取所述reduce任务的输入数据;
所述存储设备,用于根据所述输入数据获取请求和所述reduce任务对应的索引文件,将所述reduce任务对应的输入数据发送至目标计算节点,其中,所述目标计算节点用于执行所述reduce任务。
23.一种存储设备,其特征在于,所述存储设备包括存储器和处理器,所述存储器用于存储计算机指令;
所述处理器执行所述存储器存储的计算机指令,以使所述存储设备执行上述权利要求1至5中任一项所述的方法。
24.一种计算节点,其特征在于,所述计算节点包括存储器和处理器,所述存储器用于存储计算机指令;
所述处理器执行所述存储器存储的计算机指令,以使所述存储节点执行上述权利要求6至10中任一项所述的方法。
25.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被计算机设备执行时,所述计算机设备实现上述权利要求1至11中任一项所述的方法。
26.一种计算机程序产品,其特征在于,所述计算机程序产品包括在计算机可读存储介质中存储的计算机程序,所述计算程序通过处理器加载以实现上述权利要求1至11中任一项所述的方法。
CN202111266495.9A 2021-07-28 2021-10-28 计算方法、装置、设备及存储介质 Pending CN115687252A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2022/093459 WO2023005366A1 (zh) 2021-07-28 2022-05-18 计算方法、装置、设备及存储介质

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110857155 2021-07-28
CN2021108571557 2021-07-28

Publications (1)

Publication Number Publication Date
CN115687252A true CN115687252A (zh) 2023-02-03

Family

ID=85060060

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111266495.9A Pending CN115687252A (zh) 2021-07-28 2021-10-28 计算方法、装置、设备及存储介质

Country Status (2)

Country Link
CN (1) CN115687252A (zh)
WO (1) WO2023005366A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102209087B (zh) * 2010-03-31 2014-07-09 国际商业机器公司 在具有存储网络的数据中心进行MapReduce数据传输的方法和系统
CN103440246A (zh) * 2013-07-19 2013-12-11 百度在线网络技术(北京)有限公司 用于MapReduce的中间结果数据排序方法及系统
CN109388615B (zh) * 2018-09-28 2022-04-01 智器云南京信息科技有限公司 基于Spark的任务处理方法及系统
CN111444148B (zh) * 2020-04-09 2023-09-05 南京大学 基于MapReduce的数据传输方法和装置

Also Published As

Publication number Publication date
WO2023005366A1 (zh) 2023-02-02

Similar Documents

Publication Publication Date Title
CN110019004B (zh) 一种数据处理方法、装置及系统
CN111782134B (zh) 数据处理方法、装置、系统和计算机可读存储介质
CN111258978B (zh) 一种数据存储的方法
US10804930B2 (en) Compressed data layout with variable group size
CN111054067A (zh) 游戏存档文件存储方法、电子设备和存储介质
CN111803917A (zh) 资源的处理方法和装置
CN114138558A (zh) 一种对象存储方法、装置、电子设备和存储介质
CN115687252A (zh) 计算方法、装置、设备及存储介质
CN110740138B (zh) 数据传输方法和装置
CN112035413A (zh) 元数据信息查询方法、装置及存储介质
CN113853778A (zh) 一种文件系统的克隆方法及装置
CN113032349A (zh) 数据存储方法、装置、电子设备及计算机可读介质
CN111309471A (zh) 数据处理方法、装置及分布式系统
CN105610921A (zh) 一种集群下基于数据缓存的纠删码归档方法
CN113905252B (zh) 直播间的数据存储方法、装置、电子设备及存储介质
CN110896408A (zh) 一种数据处理方法及服务器集群
KR20160145250A (ko) 가상 머지를 지원하는 셔플 내장형 분산 스토리지 시스템 및 그 방법
CN115729463A (zh) 数据迁移的方法、系统及相关装置
US11226778B2 (en) Method, apparatus and computer program product for managing metadata migration
CN111405313B (zh) 存储流媒体数据的方法和系统
CN112883239A (zh) 一种资源分配方法、装置、计算机设备及存储介质
CN110908886A (zh) 一种数据发送方法、装置、电子设备和存储介质
CN110019031B (zh) 一种文件创建方法及文件管理装置
CN111782588A (zh) 一种文件读取方法、装置、设备和介质
CN111177162A (zh) 一种数据同步方法及装置

Legal Events

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