CN108141471A - 压缩数据的方法、装置和设备 - Google Patents
压缩数据的方法、装置和设备 Download PDFInfo
- Publication number
- CN108141471A CN108141471A CN201680057387.1A CN201680057387A CN108141471A CN 108141471 A CN108141471 A CN 108141471A CN 201680057387 A CN201680057387 A CN 201680057387A CN 108141471 A CN108141471 A CN 108141471A
- Authority
- CN
- China
- Prior art keywords
- node
- compressed
- compression
- data
- calculate
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
Abstract
提供一种压缩数据的方法、装置和设备,该方法在包括计算节点、管理节点和至少两个压缩节点的系统中执行,该方法包括:该管理节点在接收到该计算节点发送的压缩请求时,确定该至少两个压缩节点中每个压缩节点当前的工作状态,该工作状态包括空闲状态和忙状态;该管理节点根据每个压缩节点当前的工作状态,从该至少两个压缩节点中确定目标压缩节点,该目标压缩节点当前的工作状态为空闲状态;该管理节点发送处理指令消息,以使该目标压缩节点对来自该计算节点的待压缩数据进行压缩处理。
Description
本发明涉及信息技术领域,并且更具体地,涉及压缩数据的方法、装置和设备。
目前,数据压缩技术已经广泛应用于信息技术领域,例如,已知一种数据处理技术,通过计算(或者说,映射)设备(运行有用于计算处理的进程)进行计算处理,生成中间数据,并通过化简(或者说,归约)设备(运行有用于化简的进程)对这些中间数据进行例如,汇总、化简及归并等处理。其中,“计算”也可以称为“映射(Map)”,是指一些独立元素组成的概念上的列表的每一个元素进行指定的操作。“化简(Reduce)”也可以称为“归约”,指的是对一个列表的元素进行适当的合并。
在该数据处理技术中,由于化简设备需要将计算设备的输出作为输入,因此,该中间数据需要在计算设备和化简设备之间传输,因此,中间数据的数据量直接影响到系统的运行效率和处理性能。
通过数据压缩技术,对该中间数据进行压缩,能够有效减小在计算设备和化简设备之间传输的数据量,提高系统的运行效率和处理性能。
目前,上述压缩是在计算设备中通过执行软件来实现的,处理过程占用了计算设备大量的处理资源(例如,处理器),在计算设备的处理资源较小的情况下,不仅导致压缩速度较慢,而且大量的压缩任务可能严重影响计算设备正常计算任务的进行,进而影响运行效率和处理性能。
发明内容
本发明实施例提供一种压缩数据的方法、装置和设备,能够提高运行效率和处理性能。
第一方面,提供了一种压缩数据的方法,在包括计算节点、管理节点和至少两个压缩节点的系统中执行,该压缩节点用于对该计算节点生成的待压缩数据进行压缩处理以生成压缩数据,该方法包括:该计算节点向该管理节点发送压缩请求消息;该计算节点获取该目标压缩节点的指示信息,该目标
压缩节点的指示信息用于指示该目标压缩节点该目标压缩节点是该管理节点在接收到该压缩请求消息时从该至少两个压缩节点中确定的,该目标压缩节点当前的工作状态为空闲状态,该工作状态包括空闲状态和忙状态;该计算节点根据该目标压缩节点的指示信息,确定该目标压缩节点;该计算节点与该目标压缩节点传输第一待压缩数据和第一压缩数据,该第一压缩数据是该目标压缩节点对该第一待压缩数据进行压缩处理后生成的数据。
根据本发明实施例的压缩数据的方法,通过设置压缩节点和管理节点,能够使计算节点在需要压缩数据时,由管理节点选择处于空闲状态的压缩节点为该计算节点提供压缩服务,能够减少计算节点的负担,提高运行效率和处理性能。并且,通过设置管理节点,能够实时掌握压缩节点的工作状态,避免压缩节点出现运行错误,提高运行的可靠性。
结合第一方面,在第一方面的第一种实现方式中,在该计算节点中运行有生成该待压缩数据的至少两个计算进程,该第一待压缩数据是该至少两个计算进程中的第一计算进程生成的,以及该方法还包括:该计算节点禁止与该目标压缩节点传输第二计算进程生成的第二待压缩数据,该第二计算进程是该至少两个计算进程中除该第一计算进程以外的计算进程。
根据本发明实施例的压缩数据的方法,通过禁止除生成该第一待压缩数据的第一计算进程以外的进程向目标压缩节点传输数据,能够避免压缩节点将来自其他进程的数据返回至第一计算进程,进而避免数据误传输,以及,避免该数据误传输对第一计算进行的运行道正的影响,从而,能够进一步提高运行效率和处理性能。
结合第一方面及其上述实现方式,在第一方面的第二种实现方式中,在该计算节点与该目标压缩节点传输第一待压缩数据和第一压缩数据之前,该方法还包括:该计算节点确定共享内存,该共享内存能够被该至少两个压缩节点访问,该共享内存包括至少一个子内存;该计算节点从该共享内存中确定第一子内存,第一子内存与该目标压缩节点相对应;该计算节点向该目标压缩节点发送该第一子内存的指示信息,其中,该第一子内存的指示信息包括该第一子内存的起始位置相对于该共享内存的起始位置的偏移量;以及该计算节点与该目标压缩节点传输第一待压缩数据和第一压缩数据,包括:该计算节点在该第一子内存中存储该第一待压缩数据;该计算节点在该第一子内存中读取该第一压缩数据,其中,该第一压缩数据该目标压缩节点根据该
第一子内存的指示信息存储在该第一子内存中的。
根据本发明实施例的压缩数据的方法,通过从设置能够被计算节点和压缩节点方位的共享内存,并使计算节点和压缩节点在该共享内存中存储待压缩数据和压缩数据,能够简化计算节点和压缩节点之间的数据传输过程,从而,能够进一步提高运行效率和处理性能。
结合第一方面及其上述实现方式,在第一方面的第三种实现方式中,在该计算节点中运行有生成该待压缩数据的至少两个计算进程,该第一压缩数据是该至少两个计算进程中的第一计算进程生成的,以及该方法还包括:该计算节点禁止在该第一子内存中存储第二待压缩数据或第二压缩数据,该第二待压缩数据是第二计算进程生成的数据,该第二计算进程是该至少两个计算进程中除该第一计算进程以外的计算进程,该第二压缩数据是第二压缩节点生成的数据,该第二压缩节点是该至少两个压缩节点中除该目标压缩节点以外的压缩节点;或该方法还包括:该计算节点禁止在第二子内存中存储该第一待压缩数据或该第一压缩数据,该第二子内存是该共享内存中除该第一子内存以外的内存。
根据本发明实施例的压缩数据的方法,通过使共享内存中用于存储该第一待压缩数据和第一压缩数据的第一子内存禁止被除第一计算进程以外的其他计算进程和除第一压缩节点以外的其他压缩节点访问,能够避免其他数据对第一计算进程和第一压缩节点的工作生成干扰;另外,通过禁止该第一待压缩数据或该第一压缩数据存储在第一子内存以外的内存,能够避免该第一待压缩数据或该第一压缩数据对其他压缩节点和计算进程的工作生成干扰,从而,能够进一步提高运行效率和处理性能。
结合第一方面及其上述实现方式,在第一方面的第四种实现方式中,该共享内存包括至少两个子内存,以及该方法还包括:该计算节点确定该至少两个子内存与该至少两个压缩节点之间的一一映射关系;该计算节点在该第一子内存中存储该第一待压缩数据,包括:该计算节点根据该至少两个子内存与该至少两个压缩节点之间的一一映射关系,在该第一子内存中存储该第一待压缩数据;该计算节点在该第一子内存中读取该第一压缩数据,包括:该计算节点根据该至少两个子内存与该至少两个压缩节点之间的一一映射关系,在该第一子内存中读取该第一压缩数据。
根据本发明实施例的压缩数据的方法,通过预先确定并记录各子内存与
各压缩节点之间的一一映射关系,能够快速地确定上述第一子内存,从而,能够进一步提高运行效率和处理性能。
结合第一方面及其上述实现方式,在第一方面的第五种实现方式中,该计算节点获取该目标压缩节点的指示信息,包括:该计算节点接收该管理节点发送的第一处理指令消息,该第一处理指令消息包括该目标压缩节点的指示信息。
结合第一方面及其上述实现方式,在第一方面的第六种实现方式中,该计算节点获取该目标压缩节点的指示信息,包括:该计算节点接收该目标压缩节点发送的压缩响应消息,该压缩响应消息包括该目标压缩节点的指示信息。
第二方面,提供了一种压缩数据的方法,在包括计算节点、管理节点和至少两个压缩节点的系统中执行,该压缩节点用于对该计算节点生成的待压缩数据进行压缩处理以生成压缩数据,该方法包括:该管理节点在接收到该计算节点发送的压缩请求时,确定该至少两个压缩节点中每个压缩节点当前的工作状态,该工作状态包括空闲状态和忙状态;该管理节点根据每个压缩节点当前的工作状态,从该至少两个压缩节点中确定目标压缩节点,该目标压缩节点当前的工作状态为空闲状态;该管理节点发送处理指令消息,以使该目标压缩节点对来自该计算节点的待压缩数据进行压缩处理。
根据本发明实施例的压缩数据的方法,通过设置压缩节点和管理节点,能够使计算节点在需要压缩数据时,由管理节点选择处于空闲状态的压缩节点为该计算节点提供压缩服务,能够减少计算节点的负担,提高运行效率和处理性能。并且,通过设置管理节点,能够实时掌握压缩节点的工作状态,避免压缩节点出现运行错误,提高运行的可靠性。
结合第二方面,在第二方面的第一种实现方式中,该方法还包括:该管理节点确定每个压缩节点的位置以及该计算节点的位置;以及该管理节点根据每个压缩节点当前的工作状态,从该至少两个压缩节点中确定目标压缩节点,包括:该管理节点根据每个压缩节点当前的工作状态、该计算节点的位置和每个压缩节点的位置,确定该目标压缩节点,以使该目标压缩节点为当前的工作状态为空闲状态的压缩节点中距离该计算节点最近的压缩节点。
根据本发明实施例的压缩数据的方法,通过使该目标压缩节点为当前的工作状态为空闲状态的压缩节点中距离该计算节点最近的压缩节点,能够减
少数据的传输距离,从而,能够进一步提高运行效率和处理性能。
结合第二方面及其上述实现方式,在第二方面的第二种实现方式中,该管理节点根据每个压缩节点当前的工作状态、该计算节点的位置和每个压缩节点的位置,确定该目标压缩节点,包括:该管理节点根据每个压缩节点当前的工作状态、该计算节点的位置和每个压缩节点的位置,生成备选压缩节点列表,备选压缩节点列表记录有至少两个备选压缩节点的标识,该备选压缩节点为当前的工作状态为空闲状态的压缩节点,其中,各该备选压缩节点的标识在该备选压缩节点列表中的排列顺序与各该备选压缩节点至该计算节点之间的距离的大小关系相对应;以及该管理节点根据各该备选压缩节点的标识在该备选压缩节点列表中的排列顺序,从该备选压缩节点中,确定该目标压缩节点。
根据本发明实施例的压缩数据的方法,通过根据每个压缩节点当前的工作状态、该计算节点的位置和每个压缩节点的位置,生成备选压缩节点列表,能够基于该备选压缩节点列表,快速地确定当前的工作状态为空闲状态的压缩节点中距离该计算节点最近的压缩节点,从而,能够进一步提高运行效率和处理性能。
结合第二方面及其上述实现方式,在第二方面的第三种实现方式中,该管理节点发送处理指令消息,包括:该管理节点向该计算节点发送第一处理指令消息,该第一处理指令消息包括该目标压缩节点的指示信息,该目标压缩节点的指示信息用于指示该目标压缩节点,以便于该计算节点根据该第一处理指令消息,基于该目标压缩节点的指示信息,向该目标压缩节点发送该待压缩数据。
结合第二方面及其上述实现方式,在第二方面的第四种实现方式中,该管理节点发送处理指令消息,包括:该管理节点向该目标压缩节点发送第二处理指令消息,该第二处理指令消息包括该计算节点的指示信息,该计算节点的指示信息用于指示该计算节点,以便于该目标压缩节点根据该第二处理指令消息,基于该计算节点的指示信息,从该计算节点获取该待压缩数据。
第三方面,提供了一种压缩数据的方法,在包括计算节点、管理节点和至少两个压缩节点的系统中执行,该压缩节点用于对该计算节点生成的待压缩数据进行压缩处理以生成压缩数据,该方法包括:目标压缩节点从该计算节点获取第一待压缩数据,其中,该目标压缩节点当前的工作状态为空闲状
态,该工作状态包括空闲状态和忙状态;该目标压缩节点对该第一待压缩数据进行压缩处理,以生成第一压缩数据;该目标压缩节点向该计算节点传输该第一压缩数据。
根据本发明实施例的压缩数据的方法,通过设置压缩节点和管理节点,能够使计算节点在需要压缩数据时,由管理节点选择处于空闲状态的压缩节点为该计算节点提供压缩服务,能够减少计算节点的负担,提高运行效率和处理性能。并且,通过设置管理节点,能够实时掌握压缩节点的工作状态,避免压缩节点出现运行错误,提高运行的可靠性。
结合第三方面,在第三方面的第一种实现方式中,目标压缩节点接收该计算节点发送的第一待压缩数据之前,该方法还包括:该目标压缩节点接收该管理节点发送的第二处理指令消息,该处理指令消息包括该计算节点的指示信息;该目标压缩节点根据该第二处理指令消息,向该计算节点发送压缩响应消息,该压缩响应消息包括目标压缩节点的指示信息。
结合第三方面及其上述实现方式,在第三方面的第二种实现方式中,在该计算节点中设置有共享内存,该共享内存能够被该至少两个压缩节点访问,该共享内存包括至少一个子内存,以及该方法还包括:该目标压缩节点接收该计算节点发送的第一子内存的指示信息,其中,该第一子内存的指示信息包括该第一子内存的起始位置相对于该共享内存的起始位置的偏移量;该目标压缩根据第一子内存的指示信息,确定该第一子内存;以及该目标压缩节点从该计算节点获取第一待压缩数据,包括:该目标压缩节点在该第一子内存中读取该第一待压缩数据;该目标压缩节点向该计算节点传输该第一压缩数据,包括:该目标压缩节点在该第一子内存中存储该第一压缩数据。
结合第三方面及其上述实现方式,在第三方面的第三种实现方式中,该方法还包括:该目标压缩节点禁止在第二子内存中存储或读取数据,该第二子内存是该共享内存中除该第一子内存以外的内存。
第四方面,提供了一种压缩数据的装置,包括用于执行上述第一方面以及第一方面的各实现方式中的各步骤的单元。
第五方面,提供了一种压缩数据的装置,包括用于执行上述第二方面以及第一方面的各实现方式中的各步骤的单元。
第六方面,提供了一种压缩数据的装置,包括用于执行上述第二方面以及第一方面的各实现方式中的各步骤的单元。
第七方面,提供了一种压缩数据的设备,包括存储器和处理器,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得压缩数据的设备执行上述第一方面,及其各种实现方式中的任一种数据处理的方法。
第八方面,提供了一种压缩数据的设备,包括存储器和处理器,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得压缩数据的设备执行上述第二方面,及其各种实现方式中的任一种数据处理的方法。
第九方面,提供了一种压缩数据的设备,包括存储器和处理器,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得压缩数据的设备执行上述第三方面,及其各种实现方式中的任一种数据处理的方法。
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。
图1是适用本发明实施例的压缩数据的方法的系统的示意图。
图2是根据本发明实施例的压缩数据的方法的交互图。
图3是计算节点中运行的各进程之间的交互的示意图。
图4是根据本发明实施例的共享内存的分布一例的示意图。
图5是本发明实施例的压缩数据的过程的示意图。
图6是本发明实施例的压缩数据的方法与现有技术中压缩数据的方法的一个性能对比图。
图7是本发明实施例的压缩数据的方法与现有技术中压缩数据的方法的另一个性能对比图。
图8是根据本发明实施例的压缩数据的装置的一例的示意性框图。
图9是根据本发明实施例的压缩数据的装置的另一例的示意性框图。
图10是根据本发明实施例的压缩数据的装置的再一例的示意性框图。
图11是根据本发明实施例的压缩数据的设备的一例的示意性结构图。
图12是根据本发明实施例的压缩数据的设备的另一例的示意性结构图。
图13是根据本发明实施例的压缩数据的设备的再一例的示意性结构图。
本发明实施例提供的压缩数据的方法、装置和设备,可以应用于计算机上,该计算机包括硬件层、运行在硬件层之上的操作系统层,以及运行在操作系统层上的应用层。该硬件层包括CPU(Central Processing Unit)、内存管理单元(MMU,Memory Management Unit)和内存(也称为主存)等硬件。该操作系统可以是任意一种或多种通过进程(Process)实现业务处理的计算机操作系统,例如,Linux操作系统、Unix操作系统、Android操作系统、iOS操作系统或windows操作系统等。该应用层包含浏览器、通讯录、文字处理软件、即时通信软件等应用。并且,在本发明实施例中,该计算机可以是智能手机等手持设备,也可以是个人计算机等终端设备,本发明并未特别限定,只要能够通过运行记录有本发明实施例的压缩数据的方法的代码的程序,以根据本发明实施例的压缩数据的方法对数据进行处理即可。本发明实施例的压缩数据的方法的执行主体可以是计算机设备,或者,是计算机设备中能够调用程序并执行程序的功能模块。
此外,本发明的各个方面或特征可以实现成方法、装置或使用标准编程和/或工程技术的制品。本申请中使用的术语“制品”涵盖可从任何计算机可读器件、载体或介质访问的计算机程序。例如,计算机可读介质可以包括,但不限于:磁存储器件(例如,硬盘、软盘或磁带等),光盘(例如,CD(Compact Disc,压缩盘)、DVD(Digital Versatile Disc,数字通用盘)等),智能卡和闪存器件(例如,EPROM(Erasable Programmable Read-Only Memory,可擦写可编程只读存储器)、卡、棒或钥匙驱动器等)。另外,本文描述的各种存储介质可代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可包括但不限于,无线信道和能够存储、包含和/或承载指令和/或数据的各种其它介质。
图1是适用本发明实施例的压缩数据的方法所应用的系统100的示意图。如图1所示,该系统包括:
至少一个计算节点110;
管理节点120;
至少两个压缩节点130。
其中,计算节点110与该管理节点120通信连接,该管理节点120与该
至少两个压缩节点130中的每个压缩节点通信连接,计算节点110与该至少两个压缩节点130中的每个压缩节点通信连接。
具体地说,在本发明实施例中,计算节点110用于生产待压缩数据。
并且,在本发明实施例中,压缩节点130用于对该待压缩数据进行压缩处理,以生成压缩数据。
另外,在本发明实施例中,管理节点120用于确定各压缩节点130的工作状态。作为举例,管理节点120可周期性地发送查询各压缩节点130工作状态的查询请求。
在本发明实施例中,压缩节点130的工作状态包括空闲状态和忙状态。如果一个压缩节点130的工作状态为空闲状态,则表示压缩节点130当前能够对该待压缩数据进行压缩处理;如果一个压缩节点130的工作状态为忙状态,则表示压缩节点130当前不能够对该待压缩数据进行压缩处理。需要进一步说明的是,上述的“空闲状态”和“忙状态”可以理解为是否有足够的资源(计算资源、存储资源等)来进行压缩处理。譬如:当某一压缩节点虽然处于工作状态(运行某一个压缩任务),但是还有足够的资源,则认为该压缩节点可以对待压缩数据进行压缩处理。判断是否还有足够的资源对待压缩数据进行压缩处理,可通过对压缩节点进行管理的设备来完成。
在本发明实施例中,在生成待压缩数据后,计算节点110可以向管理节点120发送压缩请求,计算节点110在接收到该压缩请求后,可以根据各压缩节点130的工作状态,选择一个处于空闲状态的压缩节点,为该计算节点110提供数据压缩服务。随后,对该具体过程进行详细说明。
可选地,该计算节点为运行有映射进程的服务器,该待压缩数据为该映射进程生成的中间数据。
具体地说,分布式计算Hadoop是一个基于JAVA的支持数据密集型分布式应用的分布式文件系统。它主要包括Hadoop分布式文件系统(HDFS,Hadoop Distributed File System)和映射化简(MapReduce)并行计算框架。这个系统就像一个集群操作系统一样,可以使廉价的通用硬件形成资源池从而组成威力强大的分布式集群系统,用户可以在不了解分布式底层细节的情况下开发分布式程序,也可以处理很多与大数据相关的分布式应用。
在MapReduce并行计算框架的处理过程中,Map进程会生成大量的中间数据。这些数据需要暂时存放在本地磁盘,待Map进程处理完成后,
Reduce进程会通过网络读取这些中间数据,将多个Map进程的中间数据汇总后,进行化简(也可以称为:归并)处理。
Hadoop的一个很大瓶颈就是输入/输出(I/O,Input/Output)问题。这是因为,运行有Map进程的计算节点和作为其输入数据的生成节点可以是同一个物理设备(譬如:服务器)或者计算节点和生成节点两者布局在不同的物理设备中,但是两者一般物理距离很近,而运行Reduce进程的化简节点需要多个Map进程的输出(即,中间结果)作为输入,往往和运行有Map进程的计算节点距离比较远,因此,Reduce进程需要等待计算节点将Map进程的中间结果传输至运行有该Reduce进程的化简节点之后,才能够进行处理。此外,Map进程的中间结果数据量很大,需要暂时存放在本地磁盘上,这也对本地磁盘存储空间提出了很高的要求,所以磁盘的读写I/O对Hadoop集群而言,也有很大的影响。
通过对该中间结果进行压缩(即,本发明实施例的待处理数据的一例)不仅仅可以减少磁盘存储空间,减少读写磁盘的数据量,还可以减少网络上的数据传输量,这样就可以减少数据的传输时间,提高作业的处理性能。
本发明可以应用于针对上述HDFS中计算节点(具体地说,是运行在该计算节点中的Map进程)所生成的中间结果的压缩处理。即,在本发明实施例中,该运行有Map进程的服务器(以下,为了便于理解和区分,记做:Map服务器)可以作为本发明实施例中的计算节点110。
即,在本发明实施例中,计算节点110(即一台Hadoop服务器)上可以运行Hadoop进程。其中,Hadoop进程负责运行具体的计算任务,会执行多个Map进程(即,计算进程的一例)和多个Reduce进程。
并且,在计算节点110上还可以运行守护进程,在本发明实施例中,该守护进程可以用于实现计算节点110与管理节点120之间的信令传输和数据传输,并且,该守护进程也可以用于实现计算节点110与压缩节点130之间的信令传输和数据传输。例如,在本发明实施例中,守护进程可以在初始化过程中会通过调用压缩节点所使用的应用程序编程接口(API,Application Programming Interface),初始化压缩节点的软件运行环境,将压缩节点例化(或者说,设置)为执行压缩算法的硬件加速器,即,通过使作为压缩节点的硬件设备运行压缩程序,使该硬件设备能够实现压缩节点130的功能。另外,运行在计算节点110中的Hadoop进程和管理节点120(具体地说,是
管理节点120的功能软件)可以经由守护进程进行信息(或者说,信号)传输。例如,守护进程可以接收Hadoop进程(更确切的说,是Map进程)发起的压缩请求,并通知管理节点120,以通过管理节点120所选定的压缩节点130对待压缩的数据进行硬件压缩,最后将压缩完的数据返回Hadoop进程(例如,Map进程或Reduce进程)。
另外,在本发明实施例中,Hadoop进程和守护进程之间通过信号量来实现协同工作,通过共享内存来实现数据交互,随后,对该过程进行详细说明。
可选地,压缩节点为现场可编程门阵列(FPGA,Field Programmable Gate Array),具体地说,FPGA是在例如,可编程阵列逻辑(PAL,Programmable Array Logic)、通用阵列逻辑(GAL,Generic Array Logic)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC,Application Specific Integrated Circuit)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
FPGA采用了逻辑单元阵列(LCA,Logic Cell Array),内部包括可配置逻辑模块(CLB,Configurable Logic Block)、输入输出模块(IOB,Input Output Block)和内部连线(Interconnect)三个部分。FPGA作为可编程器件,通过不同的编程方式,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA可具有不同的结构。FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
作为示例而非限定,在本发明实施例中,可以通过例如,开放运算语言
(OpenCL,Open Computing Language)对该FPGA进行编程,以使该FPGA实现本发明实施例的压缩节点130的功能。并且,相应地,可以通过OpenCL提供的接口作为该压缩节点130与计算节点110或管理节点120之间通信的接口。
OpenCL是一种面向异构系统的用于实现并行计算的编程语言。OpenCL的语法非常简单,它只是在C语言和C++语言的基础上,扩展定义了一些数据类型,数据结构以及函数而已。OpenCL不仅仅是一种编程语言,更是一个完整的并行编程框架。在OpenCL中,任务被称为内核程序(kernel),内核程序是基于若干内核函数来创建的。内核程序针对一个或者多个兼容的OpenCL设备,它会通过主机程序(例如,运行在本发明实施例中的计算节点110或管理节点120中的程序)发送到一个或者多个相应的OpenCL设备(即,本发明实施例中的该压缩节点130)上运行,运行完成后将结果返回主机程序。主机程序通过名为上下文的容器来管理所有连接的OpenCL设备。其中每个OpenCL设备对应一个命令队列。主机程序创建内核程序,并将内核程序添加到命令队列中。当内核程序进入命令队列后,相关的OpenCL设备就会执行该内核程序。
在本发明实施例中,一个FPGA芯片可以作为本发明实施例中的一个压缩节点130。相应的,在本发明实施例中,管理节点120可以是能够与各FPGA芯片通信,并能够确定各FPGA芯片的工作状态的FPGA资源管理器。
需要说明的是,在本发明实施例中,FPGA资源管理器可以集成配置在一个FPGA芯片中,或者,FPGA资源管理器也可以与各FPGA芯片独立配置,或者,FPGA资源管理器也可以与计算节点110集成配置,本发明并未特别限定。
另外,在本发明实施例中,各压缩节点130可以配置在同一设备(例如,服务器)中,例如,多个FPGA芯片可以独立配置,本发明并未特别限定。
需要说明的是,在本发明实施例中,当FPGA资源管理器与各压缩节点130配置在同一设备(例如,服务器)中时,FPGA资源管理器可以通过总线(例如,PCIE总线)与各压缩节点130连接,即,可以通过总线实现FPGA资源管理器和各压缩节点130之间的信令或数据传输。另外,当FPGA资源管理器与各压缩节点130配置在不同设备中时,可以在FPGA资源管理器和各压缩节点130中配置信息或信号收发器,并通过传输线缆连接FPGA资源
管理器和各压缩节点130中的收发器,以实现FPGA资源管理器和各压缩节点130之间的信令或数据传输。
类似地,在本发明实施例中,计算节点110与FPGA资源管理器(即,管理节点120的一例)也可以为同一设备,或者说,计算节点110与FPGA资源管理器也可以配置在同一设备(例如,服务器)中,当计算节点110与FPGA资源管理器配置在同一设备(例如,服务器)中时,计算节点110可以通过总线(例如,PCIE总线)与FPGA资源管理器连接,即,可以通过总线实现计算节点110和FPGA资源管理器之间的信令或数据传输。另外,当FPGA资源管理器与计算节点110配置在不同设备中时,可以在FPGA资源管理器和计算节点110中配置信息或信号收发器,并通过传输线缆连接FPGA资源管理器和计算节点110中的收发器,以实现FPGA资源管理器和计算节点110之间的信令或数据传输。需要说明的是,当计算节点110与管理节点120为同一设备时,管理节点120可以直接获取来自在该管理节点120中运行的计算进程(例如,Hadoop进程,或者更确切指的是,Map进程)的压缩请求。
类似地,在本发明实施例中,当计算节点110与各压缩节点130配置在同一设备(例如,服务器)中时,计算节点110可以通过总线(例如,PCIE总线)与各压缩节点130连接,即,可以通过总线实现计算节点110和各压缩节点130之间的信令或数据传输。另外,当计算节点110与各压缩节点130配置在不同设备中时,可以在计算节点110和各压缩节点130中配置信息或信号收发器,并通过传输线缆连接计算节点110和各压缩节点130中的收发器,以实现计算节点110和各压缩节点130之间的信令或数据传输。
下面,分别对本发明实施例的计算节点、管理节点和压缩节点的动作和处理过程进行详细说明。
首先,结合图2,对本发明实施例中管理节点执行的动作进行说明,图2示出了根据本发明实施例的压缩数据的方法200的交互图。该方法200在包括计算节点、管理节点和至少两个压缩节点的系统中执行,该压缩节点用于对该计算节点生成的待压缩数据进行压缩处理以生成压缩数据。
如图2所示,该方法200中管理节点执行的动作包括:
该管理节点在接收到该计算节点发送的压缩请求时,确定该至少两个压缩节点中每个压缩节点当前的工作状态,该工作状态包括空闲状态和忙状
态;
该管理节点根据每个压缩节点当前的工作状态,从该至少两个压缩节点中确定目标压缩节点,该目标压缩节点当前的工作状态为空闲状态;
该管理节点发送处理指令消息,以使该目标压缩节点对来自该计算节点的待压缩数据进行压缩处理。
在本发明实施例中,计算节点可以为一个也可以为多个,并且,本发明实施例的压缩数据的方法针对各计算节点的处理过程相似,这里,为了便于理解和说明,不失一般性,以针对计算节点#A的处理过程为例,进行说明。
具体地说,如图2所示,在S210,在当计算节点#A生成需要被压缩的待压缩数据(即,第一待压缩数据的一例)时,该计算节点#A可以向管理节点发送压缩请求消息,该压缩请求消息用于指示管理节点从多个压缩节点中为计算节点分配用于对该待压缩数据进行压缩处理的目标压缩节点。
可选地,压缩请求来自在该计算节点运行的分布式计算Hadoop进程。
具体地说,作为示例而非限定,在本发明实施例中,该计算节点#A中可以运行有一个或多个计算进程(即,Hadoop进程的一例,例如,Map进程)和守护进程,此情况下,图2中的S210可以包括以下过程:
如图3所示,当一个计算进程(以下,为了便于理解和区分,记做:计算进程#A)生成待压缩数据(即,第一待压缩数据的另一例,以下,为了便于理解和区分,记做:待压缩数据#A)时,计算进程#A可以向守护进程发送预设的第一信号,通知守护进程需要通过压缩节点对该待压缩数据#A进行压缩。
当守护进程接收到该第一信号后,可以通过该计算节点#A与管理节点之间的传输链路,向管理节点发送该压缩请求消息。
返回图2,在S220,在当管理节点接收到压缩请求消息时,该管理节点可以确定各压缩节点的工作状态。
在本发明实施例中,工作状态可以包括忙状态和空闲状态。
其中,忙状态可以是指压缩节点已执行压缩任务,或者,压缩节点的负载大于或等于预设的门限而不能在规定时间(例如,可以根据用户设置的处理时延确定)内完成压缩任务。
空闲状态可以是指压缩节点未执行压缩任务,或者,压缩节点的负载小于预设的门限而能够在规定时间内完成压缩任务。
在本发明实施例中,管理节点可以通过以下方式确定各压缩节点的工作状态。
方式1
在本发明实施例中,各压缩节点可以周期性地向管理节点上报工作状态的指示信息,从而,管理节点可以记录接收到压缩请求消息时的接收时刻,并且可以将该接收时刻所在周期内各压缩节点的工作状态确定为各压缩节点当前的工作状态。
方式2
在本发明实施例中,管理节点在接收到压缩请求消息时,可以向各压缩节点发送状态上报指令,从而,各压缩节点在接收到该状态上报指令时,可以将当前的工作状态上报至管理节点。
并且,如图2所示,在S220,管理节点可以根据各压缩节点当前的工作状态,从该压缩节点中确定当前的工作状态为空闲状态的目标压缩节点。以下,为了便于理解和区分,将所确定的目标压缩节点记做:压缩节点#A,即,该压缩节点#A是管理节点所确定的用于对待压缩数据#A进行压缩处理的压缩节点。
可选地,该方法还包括:
该管理节点确定每个压缩节点的位置以及该计算节点的位置;以及
该管理节点根据每个压缩节点当前的工作状态,从该至少两个压缩节点中确定目标压缩节点,包括:
该管理节点根据每个压缩节点当前的工作状态、该计算节点的位置和每个压缩节点的位置,确定该目标压缩节点,以使该目标压缩节点为当前的工作状态为空闲状态的压缩节点中距离该计算节点最近的压缩节点。
具体地说,在S220,除了工作状态以外,在确定目标压缩节点时,管理节点还可以考虑压缩节点与计算节点#A之间的距离。
即,在本发明实施例中,可能存在多个当前状态为空闲状态的压缩节点,次情况下,管理节点可以选择物理位置距离计算节点#A最近的处于空闲状态的压缩节点,作为目标压缩节点。这样可以减少计算节点#A与目标压缩节点之间的数据传输的距离,从而缩短数据传输的时间。
另外,作为示例而非限定,作为确定压缩节点和计算节点#A的距离的方式,可以列举以下过程:
计算节点#A可以基于管理节点的指示或自主地,将用于指示该计算节点的物理位置的信息发送至管理节点;或者,管理节点也可以通过管理员的输入,获取该用于指示该计算节点#A的物理位置的信息。
类似地,压缩节点可以基于管理节点的指示或自主地,将用于指示该压缩节点的物理位置的信息发送至管理节点;或者,管理节点也可以通过管理员的输入,获取该用于指示该压缩节点的物理位置的信息。
可选地,该管理节点根据每个压缩节点当前的工作状态、该计算节点的位置和每个压缩节点的位置,确定该目标压缩节点,包括:
该管理节点根据每个压缩节点当前的工作状态、该计算节点的位置和每个压缩节点的位置,生成备选压缩节点列表,备选压缩节点列表记录有至少两个备选压缩节点的标识,该备选压缩节点为当前的工作状态为空闲状态的压缩节点,其中,各该备选压缩节点的标识在该备选压缩节点列表中的排列顺序与各该备选压缩节点至该计算节点之间的距离的大小关系相对应;以及
该管理节点根据各该备选压缩节点的标识在该备选压缩节点列表中的排列顺序,从该备选压缩节点中,确定该目标压缩节点。
具体地说,在本发明实施例中,管理节点可以为每个压缩节点分配指示标识,其中,一个指示标识用于唯一地指示一个压缩节点。
并且,管理节点可以维护两个队列。
其中,一个队列用于存储工作状态为空闲状态的压缩节点的指示标识,以下,为了便于理解和区分,将该队列记做:空闲队列。
并且,另外一个队列用于存储工作状态为忙状态的压缩节点的指示标识,以下,为了便于理解和区分,将该队列记做:忙队列。
从而,管理节点在接收到压缩请求消息时,可以从空闲队列中取出一个压缩节点作为目标压缩节点(即,压缩节点#A),并将该压缩节点#A的指示标识加入忙队列。
并且,在本发明实施例中,可以将空闲队列设计成一个优先队列,即,与计算节点#A之间的距离越近的压缩节点,优先级越高,入队时越靠近队列的头部;相反与计算节点之间的距离越远的压缩节点,优先级越低,入队时越靠近队列的尾部。此情况下,管理节点在选取目标压缩节点时,只需要选择指示标识位于空闲队列头部的压缩节点即可。
应理解,以上列举的各压缩节点在队列中的排列方式仅为示例性说明,
本发明并未限定于此,只要能够使各压缩节点在队列中的排列顺序与各压缩节点与计算节点之间的距离的大小顺序相对应即可。
如图2所示,在如上所述确定了目标压缩节点(即,压缩节点#A)之后,在S230,管理节点可以向将计算节点#A发送第一处理指令消息,该第一处理指令消息包括该压缩节点#A的指示信息,以使计算节点#A确定由压缩节点#A进行针对该计算节点#A生成的待压缩数据(例如,待压缩数据#A)的压缩处理。
即,可选地,该管理节点发送处理指令消息,包括:该管理节点向该计算节点发送第一处理指令消息,该第一处理指令消息包括该目标压缩节点的指示信息,该目标压缩节点的指示信息用于指示该目标压缩节点,以便于该计算节点根据该第一处理指令消息,基于该目标压缩节点的指示信息,向该目标压缩节点发送该待压缩数据。
或者,如图2所示,在如上所述确定了目标压缩节点(即,压缩节点#A)之后,在S232,管理节点可以向压缩节点#A发送第二处理指令消息,该第二处理指令消息包括该计算节点#A的指示信息,以使压缩节点#A确定需要对该计算节点#A生成的待压缩数据(例如,待压缩数据#A)进行压缩。其后,压缩节点#A可以向将计算节点#A发送压缩响应消息,该压缩响应消息包括该压缩节点#A的指示信息,以使计算节点#A确定由压缩节点#A进行针对该计算节点#A生成的待压缩数据(例如,待压缩数据#A)的压缩处理。
即,可选地,该管理节点发送处理指令消息,包括:
该管理节点向该目标压缩节点发送第二处理指令消息,该第二处理指令消息包括该计算节点的指示信息,该计算节点的指示信息用于指示该计算节点,以便于该目标压缩节点根据该第二处理指令消息,基于该计算节点的指示信息,从该计算节点获取该待压缩数据。
作为示例而非限定,在本发明实施例中,该计算节点的指示信息可以是该计算节点的设备标识,并且,在本发明实施例中,一个设备标识能够唯一地指示一个计算设备,从而,管理节点和压缩节点能够根据设备标识,对各计算节点进行区分。
并且,在本发明实施例中,该压缩节点的指示信息可以是该压缩节点的设备编号,并且,在本发明实施例中,一个设备编号能够唯一地指示一个压缩设备,从而,管理节点和计算节点能够根据设备编号,对各压缩节点进行
区分。
如图2所示,在确定目标压缩节点(即,压缩节点#A)之后,在S240,计算节点#A将待压缩数据#A发送至压缩节点#A。
可选地,在该计算节点#A中运行有一个或多个计算进程(例如,Map进程)的情况下,在确定目标压缩节点(即,压缩节点#A)之后,计算节点#A可以记录生成该待压缩数据#A的计算进程(即,计算进程#A)与该压缩节点#A的映射关系,并禁止将除该计算进程#A以外的计算进程所生成的待压缩数据发送至压缩节点#A,从而,能够确保压缩节点#A仅处理计算进程#A所生成的数据,能够避免计算节点#A(具体地说,是计算进程#A)因待压缩数据和压缩数据不相应而出现的运行错误。
根据本发明实施例的压缩数据的方法,通过禁止除生成该第一待压缩数据的第一计算进程以外的进程向目标压缩节点传输数据,能够避免压缩节点将来自其他进程的数据返回至第一计算进程,进而避免数据误传输,以及,避免该数据误传输对第一计算进程的运行带来的影响,从而,能够进一步提高运行效率和处理性能。
如图2所示,在S250,压缩节点#A在接收到该待压缩数据#A之后,可以对该待压缩数据#A进行压缩处理,以获得经过压缩处理后的数据(即,第一压缩数据的一例,以下,为了便于理解和区分,记做:压缩数据#A)。
作为示例而非限定,在本发明实施例中,该压缩节点可以运行基于OpenCL的Host程序以将获取的待压缩的数据通过PCIE总线写入压缩节点的内存中,然后压缩节点在初始化时已经例化的OpenCL Kernel开始对数据进行压缩处理,压缩完成后,Host程序通过PCIE总线读回压缩后的数据,Host程序运行结束,线程退出,压缩处理结束。
应理解,以上列举的压缩节点对待压缩进行压缩处理的过程仅为示例性说明,本发明并不限定于此,本领域技术人员可以通过软件编程对FPGA的压缩处理进行各种设定,只要能够通过该FPGA对数据进行压缩即可。
如图2所示,压缩节点#A在获得压缩数据#A之后,在S260,压缩节点#A将压缩数据#A发送至计算节点#A。
作为示例而非限定,在本发明实施例中,压缩节点#A与计算节点#A之间的数据传输可以采用在同一内存中进行数据读写的方式实现,下面,对该方式下的具体处理过程进行详细说明。
在本发明实施例中,计算节点和各压缩节点能够访问同一内存(即,共享内存),并且,在本发明实施例中,该共享内存可以属于配置在计算节点中的存储设备中,或者,该共享内存也可以属于独立于计算节点和压缩节点的存储设备中,本发明并未特别限定。
在本发明实施例中,计算节点#A可以从该共享内存中确定存储上述压缩数据#A和待压缩数据#A的内存空间(即,第一子内存,以下,为了便于理解和区分,记做:子内存#A)。
并且,作为示例而非限定,在本发明实施例中,该子内存#A可以包括两个部分,一个部分(以下,为了便于理解和说明,记做:子内存#A1)用于存储待压缩数据#A,另一个部分(以下,为了便于理解和说明,记做:子内存#A2)用于存储压缩数据#A。
在本发明实施例中,该子内存#A的大小可以由管理员设定也可以根据压缩数据#A和待压缩数据#A设定,本发明并未特别限定。
作为示例而非限定,在本发明实施例中,可以采用以下方式确定该子内存#A。
在本发明实施例中,计算节点#A(例如,计算节点#A的守护进程)可以维护一个映射表项,该映射表项用于记录各压缩节点(包括该压缩节点#A)与各子内存(包括该子内存#A)之间的一一映射关系,其中,每个子内存用于存储所对应的压缩节点的压缩数据和待压缩数据,或者说,每个子内存被所对应的压缩节点用于读写数据。
并且,该映射表项可以在系统建立时生成,即,在计算节点获知某个压缩节点被设置在系统中并且能够用于进行数据压缩后,将该压缩节点记录在映射表项中。
或者,该映射表项也可以在计算节点在确定某个压缩节点用于进行针对该计算节点所产生的数据的压缩处理后(例如,接收到上述第一压缩响应消息或第二压缩响应消息之后),将该压缩节点记录在映射表项中。
另外,此情况下,计算节点可以向各压缩节点通知该压缩节点所对应的子内存。以便于各压缩节点在进行针对该计算节点的压缩处理时,在所对应的子内存中进行数据存储操作(即,读取待压缩数据,写入压缩数据)。
根据本发明实施例的压缩数据的方法,通过预先确定并记录各子内存与各压缩节点之间的一一映射关系,能够快速地确定上述第一子内存,从而,
能够进一步提高运行效率和处理性能。
图4是根据本发明实施例的共享内存的分布一例的示意图。如图4所示,共享内存包括N个子内存空间(即分别记为,子内存#1~子内存#N),其中,N表示压缩节点(例如,FPGA)的数量,即,可以同时有N个压缩节点为该计算节点提供数据压缩服务,每个子内存中保存有压缩节点内存偏移量(Compressor Buffer Offset)信息,其中,Compressor Buffer Offset信息用于指示每个压缩节点所对应的子内存的起始地址相对共享内存的起始地址的偏移。输入(ValidIn)空间存放的是待压缩的数据。输出(ValidOut)空间存放的是已压缩的数据。
并且,在本发明实施例中,在每个子内存中保存有待压缩数据信息,该待压缩数据信息用于指示该子内存中待压缩数据的数据量,在本发明实施例中,该待压缩数据信息可以由该子内存被分配至的Map进程来设置,即,当Map进程将待压缩的数据放入共享内存的对应区域(即,子内存)后,设置子内存中的待压缩数据信息。
在每个子内存中保存有压缩数据信息,该压缩数据信息用于指示该子内存中压缩数据的数据量,在本发明实施例中,该压缩数据信息可以由该子内存被分配至的压缩节点来设置,即,当压缩节点将已压缩的数据放入共享内存的对应区域(即,子内存)后,设置子内存中的压缩数据信息。
在如上所述确定了子内存#A之后,作为示例而非限定,在本发明实施例中,该计算节点#A可以将该子内存#A在该共享内存中的位置(或者说,子内存#A1在该共享内存中的位置以及子内存#A2在该共享内存中的位置),压缩节点#A。
并且,例如,在本发明实施例中,压缩节点#A和计算节点#A可以预先获知该共享内存的起始地址。此情况下,计算节点#A可以向压缩节点#A发送该子内存#A的起始地址相对于共享内存的起始地址的偏移量(例如,该子内存#A的Compressor Buffer Offset信息),从而,压缩节点能够基于共享内存的起始地址以及该子内存#A的起始地址相对于共享内存的起始地址的偏移量,确定该子内存#A。
应理解,以上列举的确定该子内存#A的方式仅为示例性说明,本发明并未限定于此,例如,计算节点#A还可以向压缩节点#A发送该子内存#A的大小的指示信息。
从而,计算节点#A能够在子内存#A1中存储待压缩数据#A,并在子内存#A2读取压缩数据#A。
压缩节点#A能够在子内存#A1中读取待压缩数据#A,并在子内存#A2存储压缩数据#A。由此,能够完成待压缩数据#A和压缩数据#A在计算节点#A和压缩节点#A之间的传输。
作为示例而非限定,在本发明实施例中,该计算节点#A中可以运行有一个或多个计算进程(例如,Map进程)和守护进程,此情况下,如图3所示,上述子内存#A1可以由守护进程确定,并且,守护进程还可以向计算进程#A发送预设的第二信号,通知计算进程#A需要在该子内存#A中进行压缩数据和待压缩数据的存储。
当计算进程#A接收到该第二信号后,可以在该子内存#A中进行压缩数据和待压缩数据的存储。
并且,在本发明实施例中,该计算节点#A中可以运行有多个计算进程的情况下,计算节点#A(例如,计算节点#A中运行的守护进程)可以禁止将除计算进程#A以外的进程产生的数据存储在子内存#A中,并且,可以禁止将除压缩节点#A以外的压缩节点产生的数据存储在子内存#A中。
根据本发明实施例的压缩数据的方法,通过使共享内存中用于存储该第一待压缩数据(例如,待压缩数据#A)和第一压缩数据(例如,压缩数据#A)的第一子内存(例如,子内存#A)禁止被除第一计算进程以外的其他计算进程和除第一压缩节点以外的其他压缩节点访问,能够避免其他数据对第一计算进程和第一压缩节点的工作生成干扰,从而,能够进一步提高运行效率和处理性能。
另外,在本发明实施例中,在该计算节点#A中运行有多个计算进程的情况下,计算节点#A(例如,计算节点#A中运行的守护进程)可以禁止将计算进程#A产生的数据存储在除子内存#A以外的子内存中,并且,可以禁止将压缩节点#A产生的数据存储在除子内存#A以外的子内存中。
在本发明实施例中,该压缩节点#A可以禁止将压缩节点#A产生的数据存储在除子内存#A以外的子内存中。
根据本发明实施例的压缩数据的方法,通过禁止该第一待压缩数据(例如,待压缩数据#A)或该第一压缩数据(例如,压缩数据#A)存储在第一子内存(例如,子内存#A)以外的内存,能够避免该第一待压缩数据或该第
一压缩数据对其他压缩节点和计算进程的工作生成干扰。
下面,对本发明实施例中,通过FPGA实现数据压缩处理的方法进行示例性说明。
具体地说,图5是本发明实施例的压缩数据的过程的示意图,如图5所示,计算节点(例如,守护进程)可以检测是否有Map进程运行,例如计算节点(例如,守护进程)可以检测Map进程发送的第一信号。
并且,计算节点(例如,守护进程)在检测到该第一信号后,可以向管理节点发送压缩请求。
如果计算节点(例如,守护进程)接收到来自管理节点或目标压缩节点的压缩响应,则可以根据该压缩相应确定该目标压缩节点,并与该压缩节点传输待压缩数据和压缩数据。
另外,如果计算节点(例如,守护进程)未接收到来自管理节点或目标压缩节点的压缩响应,则该Map进程会睡眠等待信号量可用,即等待有处于空闲状态的压缩节点。
例如,守护进程在确定目标压缩节点之后,可以向Map进程发送第二信号,其中,该第二信号的值可以用于指示共享内存中的第一子内存,从而,Map进程可以根据该第二信号的值,在共享内存中的第一子内存进行数据读写(例如,写入待压缩数据,并读取经过压缩处理后的压缩数据)。
计算节点(例如,Map进程)可以将待压缩数据输入第一子内存(具体地说,是第一子内存中用于存储待压缩数据的存储空间)。
另外,计算节点(例如,Map进程)可以查询该Map进程是否存在尚未写入第一子内存的待压缩数据。如果存在,则Map进程继续写入。
另外,计算节点(例如,守护进程)可以查询第一子内存(具体地说,是第一子内存用于存储待压缩数据的存储空间)是否被写满,如果第一子内存未被写满,确定该第一子内存可以继续存储待压缩数据;否则,确定表示第一子内存已被写满。
其后,计算节点(例如,守护进程)可以将该第一子内存中的待压缩数据发送至目标压缩节点(例如,FPGA)。
并且,此时,该Map进程可以进行睡眠,等待压缩数据写回。
FPGA压缩完后,将压缩数据传输给守护进程,并且,守护进程可以将压缩数据写第一子内存(具体地说,是第一子内存中用于存储压缩数据的存
储空间),并唤醒该Map进程,从而,Map进程可以从第一子内存读取压缩后的数据。
另外,在本发明实施例中,计算节点(例如,守护进程)可以确定FPGA中是否有尚未被写入共享内存的压缩数据,或者,已压缩但未传输至Map进程的数据。
如果存在,则计算节点(例如,守护进程)可以指示压缩节点读取未被压缩的数据并进行压缩,或者计算节点(例如,守护进程)可以只是Map进程读取已被压缩的数据。
如果不存在,则结束整个压缩流程,释放在守护进程和Map进程之间交互的信号量以及第一子内存。
图6示出了通过现有技术的软件压缩方案和基于本发明实施例的硬件压缩方案对不同数据量的数据进行压缩处理所需要的时间,图7示出了本法的数据处理的方法较现有技术中通过软件进行压缩处理速度提升率。如图7所示,本法的数据处理的方法的时延(或者说,本发明的压缩处理时间,即,T2)远小于现有技术中通过软件进行压缩处理的时延(或者说,现有技术的压缩处理时间,即,T1)。
根据本发明实施例的压缩数据的方法,通过设置压缩节点和管理节点,能够使计算节点在需要压缩数据时,由管理节点选择处于空闲状态的压缩节点为该计算节点提供压缩服务,能够减少计算节点的负担,提高运行效率和处理性能。并且,通过设置管理节点,能够实时掌握压缩节点的工作状态,避免压缩节点出现运行错误,提高运行的可靠性。
图8是根据本发明实施例的压缩数据的装置300的示意性框图。该装置300配置在包括管理节点和至少两个压缩节点的系统中,该压缩节点用于对该装置产生的待压缩数据进行压缩处理以生成压缩数据,如图9所示,该装置300包括:
发送单元310,用于向该管理节点发送压缩请求消息;
接收单元320,用于接收目标压缩节点的指示信息,该目标压缩节点的指示信息用于指示该目标压缩节点,该目标压缩节点是该管理节点在接收到该压缩请求消息时从该至少两个压缩节点中确定的,该目标压缩节点当前的工作状态为空闲状态,该工作状态包括空闲状态和忙状态;
确定单元330,用于根据该目标压缩节点的指示信息,确定该目标压缩
节点;
处理单元340,用于与该目标压缩节点传输第一待压缩数据和第一压缩数据,该第一压缩数据是该目标压缩节点对该第一待压缩数据进行压缩处理后生成的数据。
可选地,在装置中运行有产生该待压缩数据的至少两个计算进程,该第一压缩数据是该至少两个计算进程中的第一计算进程产生的,以及
该处理单元还用于禁止与该目标压缩节点传输第二计算进程产生的第二待压缩数据,该第二计算进程是该至少两个计算进程中除该第一计算进程以外的计算进程。
可选地,该确定单元还用于确定共享内存,该共享内存能够被该至少两个压缩节点访问,该共享内存包括至少一个子内存;用于从该共享内存中确定第一子内存,第一子内存与该目标压缩节点相对应;
该发送单元还用于向该目标压缩节点发送该第一子内存的指示信息,其中,该第一子内存的指示信息包括该第一子内存的起始位置相对于该共享内存的起始位置的偏移量;以及
该处理单元具体用于在该第一子内存中存储该第一待压缩数据;用于在该第一子内存中读取该第一压缩数据,其中,该第一压缩数据该目标压缩节点根据该第一子内存的指示信息存储在该第一子内存中的。
可选地,在该装置中运行有产生该待压缩数据的至少两个计算进程,该第一压缩数据是该至少两个计算进程中的第一计算进程产生的,以及该处理单元还用于禁止在该第一子内存中存储第二待压缩数据或第二压缩数据,该第二待压缩数据是第二计算进程产生的第二待压缩数据,该第二计算进程是该至少两个计算进程中除该第一计算进程以外的计算进程,该第二压缩数据是第二压缩节点生成的数据,该第二压缩节点是该至少两个压缩节点中除该目标压缩节点以外的压缩节点。
可选地,该处理单元还用于禁止在第二子内存中存储该第一待压缩数据或该第一压缩数据,该第二子内存是该共享内存中除该第一子内存以外的内存。
可选地,该共享内存包括至少两个子内存,以及
该确定单元还用于确定该至少两个子内存与该至少两个压缩节点之间的一一映射关系;
该处理单元具体用于根据该至少两个子内存与该至少两个压缩节点之间的一一映射关系,在该第一子内存中存储该第一待压缩数据;用于根据该至少两个子内存与该至少两个压缩节点之间的一一映射关系,在该第一子内存中读取该第一压缩数据。
可选地,该接收单元具体用于接收该管理节点发送的第一处理指令消息,该第一处理指令消息包括该目标压缩节点的指示信息。
可选地,该接收单元具体用于接收该目标压缩节点发送的压缩响应消息,该压缩响应消息包括该目标压缩节点的指示信息。
该装置300中的各单元或模块分别用于执行上述方法200中的计算节点的动作和功能,并且,上述管理节点的动作与方法200中管理节点的动作相似,上述压缩节点的动作与上述方法200中压缩节点的动作相似,这里为了避免赘述,省略其详细说明。
根据本发明实施例的压缩数据的装置,通过设置压缩节点和管理节点,能够使计算节点在需要压缩数据时,由管理节点选择处于空闲状态的压缩节点为该计算节点提供压缩服务,能够减少计算节点的负担,提高运行效率和处理性能。并且,通过设置管理节点,能够实时掌握压缩节点的工作状态,避免压缩节点出现运行错误,提高运行的可靠性。
图9是根据本发明实施例的压缩数据的装置400的示意性框图。该装置400配置在包括计算节点和至少两个压缩节点的系统中执行,该压缩节点用于对该计算节点产生的待压缩数据进行压缩处理以生成压缩数据,如图9所示,该装置400包括:
接收单元410,用于接收该计算节点发送的压缩请求;
确定单元420,用于确定该至少两个压缩节点中每个压缩节点当前的工作状态,该工作状态包括空闲状态和忙状态;并用于根据每个压缩节点当前的工作状态,从该至少两个压缩节点中确定目标压缩节点,该目标压缩节点当前的工作状态为空闲状态;
发送单元430,用于发送处理指令消息,以使该目标压缩节点对来自该计算节点的待压缩数据进行压缩处理。
可选地,该确定单元具体用于确定每个压缩节点的位置以及该计算节点的位置;
用于根据每个压缩节点当前的工作状态、该计算节点的位置和每个压缩
节点的位置,确定该目标压缩节点,以使该目标压缩节点为当前的工作状态为空闲状态的压缩节点中距离该计算节点最近的压缩节点。
可选地,该确定单元具体用于根据每个压缩节点当前的工作状态、该计算节点的位置和每个压缩节点的位置,生成备选压缩节点列表,备选压缩节点列表记录有至少两个备选压缩节点的标识,该备选压缩节点为当前的工作状态为空闲状态的压缩节点,其中,各该备选压缩节点的标识在该备选压缩节点列表中的排列顺序与各该备选压缩节点至该计算节点之间的距离的大小关系相对应;
用于根据各该备选压缩节点的标识在该备选压缩节点列表中的排列顺序,从该备选压缩节点中,确定该目标压缩节点。
可选地,该发送单元具体用于向该计算节点发送第一处理指令消息,该第一处理指令消息包括该目标压缩节点的指示信息,该目标压缩节点的指示信息用于指示该目标压缩节点,以便于该计算节点根据该第一处理指令消息,基于该目标压缩节点的指示信息,向该目标压缩节点发送该待压缩数据。
可选地,该发送单元具体用于向该目标压缩节点发送第二处理指令消息,该第二处理指令消息包括该计算节点的指示信息,该计算节点的指示信息用于指示该计算节点,以便于该目标压缩节点根据该第二处理指令消息,基于该计算节点的指示信息,从该计算节点获取该待压缩数据。
该装置400中的各单元或模块分别用于执行上述方法200中的管理节点的动作和功能,并且,上述计算节点的动作与方法200中计算节点的动作相似,上述压缩节点的动作与上述方法200中压缩节点的动作相似,这里为了避免赘述,省略其详细说明。
根据本发明实施例的压缩数据的装置,通过设置压缩节点和管理节点,能够使计算节点在需要压缩数据时,由管理节点选择处于空闲状态的压缩节点为该计算节点提供压缩服务,能够减少计算节点的负担,提高运行效率和处理性能。并且,通过设置管理节点,能够实时掌握压缩节点的工作状态,避免压缩节点出现运行错误,提高运行的可靠性。
图10是根据本发明实施例的压缩数据的装置500的示意性框图。如图10所示,该装置500包括:
获取单元510,用于从计算节点获取第一待压缩数据,其中,该装置当前的工作状态为空闲状态,该工作状态包括空闲状态和忙状态;
处理单元520,用于对该第一待压缩数据进行压缩处理,以生成第一压缩数据;
传输单元530,用于向该计算节点传输该第一压缩数据。
可选地,该装置还包括:
接收单元540,用于接收管理节点发送的第二处理指令消息,该第二处理指令消息包括该计算节点的指示信息,该计算节点的指示信息用于指示该计算节点;
发送单元550,用于根据该计算节点的指示信息,向该计算节点发送压缩响应消息,该压缩响应消息包括装置的指示信息,该装置的指示信息用于指示该装置。
可选地,在该计算节点中设置有共享内存,该共享内存能够被该装置访问,该共享内存包括至少一个子内存,以及
该装置还包括:
接收单元540,用于接收该计算节点发送的第一子内存的指示信息,其中,该第一子内存的指示信息包括该第一子内存的起始位置相对于该共享内存的起始位置的偏移量;
确定单元560,用于根据第一子内存的指示信息,确定该第一子内存;
该处理单元具体用于在该第一子内存中读取该第一待压缩数据;
该处理单元具体用于在该第一子内存中存储该第一压缩数据。
可选地,该处理单元还用于禁止在第二子内存中存储或读取数据,该第二子内存是该共享内存中除该第一子内存以外的内存。
该装置500中的各单元或模块分别用于执行上述方法200中的压缩节点(具体地说,是目标压缩节点)的动作和功能,并且,上述计算节点的动作与方法200中计算节点的动作相似,上述管理节点的动作与上述方法200中管理节点的动作相似,这里为了避免赘述,省略其详细说明。
根据本发明实施例的压缩数据的装置,通过设置压缩节点和管理节点,能够使计算节点在需要压缩数据时,由管理节点选择处于空闲状态的压缩节点为该计算节点提供压缩服务,能够减少计算节点的负担,提高运行效率和处理性能。并且,通过设置管理节点,能够实时掌握压缩节点的工作状态,避免压缩节点出现运行错误,提高运行的可靠性。
图11是根据本发明实施例的压缩数据的设备600的示意性结构图。该
设备600配置在包括管理节点和至少两个压缩节点的系统中,该压缩节点用于对该设备产生的待压缩数据进行压缩处理以生成压缩数据,如图11所示,该设备600包括:
总线610;
与该总线相连的存储器620;
与该总线相连的处理器630;
与该总线相连的收发器640;
该处理器用于经由该总线调用并执行该存储器中的程序,以用于控制该收发器向该管理节点发送压缩请求消息;
用于控制该收发器获取目标压缩节点的指示信息,该目标压缩节点的指示信息用于指示该目标压缩节点,该目标压缩节点是该管理节点在接收到该压缩请求消息时从该至少两个压缩节点中确定的,该目标压缩节点当前的工作状态为空闲状态,该工作状态包括空闲状态和忙状态;
用于根据该目标压缩节点的指示信息,确定该目标压缩节点;
用于与该目标压缩节点传输第一待压缩数据和第一压缩数据,该第一压缩数据是该目标压缩节点对该第一待压缩数据进行压缩处理后生成的数据。
可选地,在设备中运行有产生该待压缩数据的至少两个计算进程,该第一压缩数据是该至少两个计算进程中的第一计算进程产生的,以及
该处理器还用于禁止与该目标压缩节点传输第二计算进程产生的第二待压缩数据,该第二计算进程是该至少两个计算进程中除该第一计算进程以外的计算进程。
可选地,该处理器还用于确定共享内存,该共享内存能够被该至少两个压缩节点访问,该共享内存包括至少一个子内存;
该处理器还用于从该共享内存中确定第一子内存,第一子内存与该目标压缩节点相对应;
该处理器还用于控制该收发器向该目标压缩节点发送该第一子内存的指示信息,其中,该第一子内存的指示信息包括该第一子内存的起始位置相对于该共享内存的起始位置的偏移量;以及
该处理器具体用于在该第一子内存中存储该第一待压缩数据;
该处理器具体用于在该第一子内存中读取该第一压缩数据,其中,该第一压缩数据该目标压缩节点根据该第一子内存的指示信息存储在该第一子
内存中的。
可选地,在该设备中运行有产生该待压缩数据的至少两个计算进程,该第一压缩数据是该至少两个计算进程中的第一计算进程产生的,以及该处理器还用于禁止在该第一子内存中存储第二待压缩数据或第二压缩数据,该第二待压缩数据是第二计算进程产生的第二待压缩数据,该第二计算进程是该至少两个计算进程中除该第一计算进程以外的计算进程,该第二压缩数据是第二压缩节点生成的数据,该第二压缩节点是该至少两个压缩节点中除该目标压缩节点以外的压缩节点;或
该处理器还用于禁止在第二子内存中存储该第一待压缩数据或该第一压缩数据,该第二子内存是该共享内存中除该第一子内存以外的内存。
可选地,该共享内存包括至少两个子内存,以及
该处理器还用于确定该至少两个子内存与该至少两个压缩节点之间的一一映射关系;
该处理器具体用于根据该至少两个子内存与该至少两个压缩节点之间的一一映射关系,在该第一子内存中存储该第一待压缩数据;用于根据该至少两个子内存与该至少两个压缩节点之间的一一映射关系,在该第一子内存中读取该第一压缩数据。
可选地,该处理器具体用于控制该收发器接收该管理节点发送的第一处理指令消息,该第一处理指令消息包括该目标压缩节点的指示信息。
可选地,该处理器具体用于控制该收发器接收该目标压缩节点发送的压缩响应消息,该压缩响应消息包括该目标压缩节点的指示信息。
应理解,在本发明实施例中,该处理器630可以是中央处理单元(Central Processing Unit,简称为“CPU”),该处理器630还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器620可以包括只读存储器和随机存取存储器,并向处理器330提供指令和数据。存储器620的一部分还可以包括非易失性随机存取存储器。例如,存储器620还可以存储设备类型的信息。
该总线610除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线610。
在实现过程中,上述方法的各步骤可以通过处理器630中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器620,处理器630读取存储器620中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
该设备600中的各单元或模块分别用于执行上述方法200中的计算节点的动作和功能,并且,上述管理节点的动作与方法200中管理节点的动作相似,上述压缩节点的动作与上述方法200中压缩节点的动作相似,这里为了避免赘述,省略其详细说明。
根据本发明实施例的压缩数据的设备,通过设置压缩节点和管理节点,能够使计算节点在需要压缩数据时,由管理节点选择处于空闲状态的压缩节点为该计算节点提供压缩服务,能够减少计算节点的负担,提高运行效率和处理性能。并且,通过设置管理节点,能够实时掌握压缩节点的工作状态,避免压缩节点出现运行错误,提高运行的可靠性。
图12是根据本发明实施例的压缩数据的设备700的示意性结构图。该设备700配置在包括计算节点和至少两个压缩节点的系统中,该压缩节点用于对该计算节点产生的待压缩数据进行压缩处理以生成压缩数据,如图12所示,该设备700包括:
总线710;
与该总线相连的存储器720;
与该总线相连的处理器730;
与该总线相连的收发器740;
该处理器用于经由该总线调用并执行该存储器中的程序,以用于控制该收发器接收该计算节点发送的压缩请求;
用于确定该至少两个压缩节点中每个压缩节点当前的工作状态,该工作状态包括空闲状态和忙状态;
用于根据每个压缩节点当前的工作状态,从该至少两个压缩节点中确定目标压缩节点,其中,在该目标压缩节点当前的工作状态为空闲状态;
用于控制该收发器发送处理指令消息,以使所述目标压缩节点对来自所
述计算节点的待压缩数据进行压缩处理。
可选地,该处理器具体用于确定每个压缩节点的位置以及该计算节点的位置;
用于根据每个压缩节点当前的工作状态、该计算节点的位置和每个压缩节点的位置,确定该目标压缩节点,以使该目标压缩节点为当前的工作状态为空闲状态的压缩节点中距离该计算节点最近的压缩节点。
可选地,该处理器具体用于根据每个压缩节点当前的工作状态、该计算节点的位置和每个压缩节点的位置,生成备选压缩节点列表,备选压缩节点列表记录有至少两个备选压缩节点的标识,该备选压缩节点为当前的工作状态为空闲状态的压缩节点,其中,各该备选压缩节点的标识在该备选压缩节点列表中的排列顺序与各该备选压缩节点至该计算节点之间的距离的大小关系相对应;
用于根据各该备选压缩节点的标识在该备选压缩节点列表中的排列顺序,从该备选压缩节点中,确定该目标压缩节点。
可选地,该处理器具体用于控制该收发器向该计算节点发送第一处理指令消息,该第一处理指令消息包括该目标压缩节点的指示信息,该目标压缩节点的指示信息用于指示该目标压缩节点,以便于该计算节点根据该第一处理指令消息,基于该目标压缩节点的指示信息,向该目标压缩节点发送该待压缩数据。
可选地,该处理器具体用于控制该收发器向该目标压缩节点发送第二处理指令消息,该第二处理指令消息包括该计算节点的指示信息,该计算节点的指示信息用于指示该计算节点,以便于该目标压缩节点根据该第二处理指令消息,基于该计算节点的指示信息,从该计算节点获取该待压缩数据。
应理解,在本发明实施例中,该处理器730可以是中央处理单元(Central Processing Unit,简称为“CPU”),该处理器730还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器720可以包括只读存储器和随机存取存储器,并向处理器730提供指令和数据。存储器720的一部分还可以包括非易失性随机存取存储器。例如,存储器720还可以存储设备类型的信息。
该总线710除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线710。
在实现过程中,上述方法的各步骤可以通过处理器730中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器720,处理器730读取存储器720中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
该设备700中的各单元或模块分别用于执行上述方法200中的管理节点的动作和功能,并且,上述计算节点的动作与方法200中计算节点的动作相似,上述压缩节点的动作与上述方法200中压缩节点的动作相似,这里为了避免赘述,省略其详细说明。
根据本发明实施例的压缩数据的设备,通过设置压缩节点和管理节点,能够使计算节点在需要压缩数据时,由管理节点选择处于空闲状态的压缩节点为该计算节点提供压缩服务,能够减少计算节点的负担,提高运行效率和处理性能。并且,通过设置管理节点,能够实时掌握压缩节点的工作状态,避免压缩节点出现运行错误,提高运行的可靠性。
图13是根据本发明实施例的压缩数据的设备800的示意性结构图。如图13所示,该设备800包括:
总线810;
与该总线相连的存储器820;
与该总线相连的处理器830;
该处理器用于经由该总线调用并执行该存储器中的程序,以用于控制从计算节点获取第一待压缩数据,其中,该设备当前的工作状态为空闲状态,该工作状态包括空闲状态和忙状态;
用于对该第一待压缩数据进行压缩处理,以生成第一压缩数据;
用于向该计算节点传输该第一压缩数据。
可选地,该设备还包括:与该总线相连的收发器840;以及
该处理器还用于控制该收发器接收管理节点发送的第二处理指令消息,该第二处理指令消息包括该计算节点的指示信息;
该处理器还用于根据该计算节点的指示信息,控制该收发器向该计算节点发送压缩响应消息,该压缩响应消息包括设备的指示信息。
可选地,在该计算节点中设置有共享内存,该共享内存能够被该设备访问,该共享内存包括至少一个子内存,该设备还包括:与该总线相连的收发器;以及
该处理器还用于控制该收发器接收该计算节点发送的第一子内存的指示信息,其中,该第一子内存的指示信息包括该第一子内存的起始位置相对于该共享内存的起始位置的偏移量;
该处理器还用于根据第一子内存的指示信息,确定该第一子内存;
该处理器具体用于在该第一子内存中读取该第一待压缩数据;
该处理器具体用于在该第一子内存中存储该第一压缩数据。
可选地,该处理器还用于禁止在第二子内存中存储或读取数据,该第二子内存是该共享内存中除该第一子内存以外的内存。
应理解,在本发明实施例中,该处理器830可以是中央处理单元(Central Processing Unit,简称为“CPU”),该处理器830还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器820可以包括只读存储器和随机存取存储器,并向处理器830提供指令和数据。存储器820的一部分还可以包括非易失性随机存取存储器。例如,存储器820还可以存储设备类型的信息。
该总线810除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线810。
在实现过程中,上述方法的各步骤可以通过处理器830中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器820,处理器830读取存储器820中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
该设备800中的各单元或模块分别用于执行上述方法200中的压缩节点
(具体地说,是目标压缩节点)的动作和功能,并且,上述计算节点的动作与方法200中计算节点的动作相似,上述管理节点的动作与上述方法200中管理节点的动作相似,这里为了避免赘述,省略其详细说明。
根据本发明实施例的压缩数据的设备,通过设置压缩节点和管理节点,能够使计算节点在需要压缩数据时,由管理节点选择处于空闲状态的压缩节点为该计算节点提供压缩服务,能够减少计算节点的负担,提高运行效率和处理性能。并且,通过设置管理节点,能够实时掌握压缩节点的工作状态,避免压缩节点出现运行错误,提高运行的可靠性。
应理解,以上列举的计算节点和压缩节点传输数据的方式(例如,通过在共享内存中存储数据)仅为示例性说明,本发明并不限定于此,例如,也可以在计算节点和压缩节点中设置数据收发器,并通过有线通信或无线通信等方式实现计算节点和压缩节点中的数据收发器之间的数据传输。
需要说明的是,以上列举的数据在内存中的“存储”包括:在内存中写入数据,和/或在内存中读取数据。
另外,在本发明实施例中,共享内存可以设置在计算节点中,此情况下,压缩节点可以采用远程读写的方式访问共享内存,也可以使压缩节点与计算节点(例如,守护进程)之间传输数据,并由计算节点在共享内存中存储压缩节点需要访问的数据。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本领普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示
意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (18)
- 一种压缩数据的方法,其特征在于,在包括计算节点、管理节点和至少两个压缩节点的系统中执行,所述压缩节点用于对所述计算节点生成的待压缩数据进行压缩处理以生成压缩数据,所述方法包括:所述管理节点在接收到所述计算节点发送的压缩请求时,确定所述至少两个压缩节点中每个压缩节点当前的工作状态,所述工作状态包括空闲状态和忙状态;所述管理节点根据每个压缩节点当前的工作状态,从所述至少两个压缩节点中确定目标压缩节点,所述目标压缩节点当前的工作状态为空闲状态;所述管理节点发送处理指令消息,以使所述目标压缩节点对来自所述计算节点的待压缩数据进行压缩处理。
- 根据权利要求1所述的方法,其特征在于,所述方法还包括:所述管理节点确定每个压缩节点的位置以及所述计算节点的位置;以及所述管理节点根据每个压缩节点当前的工作状态,从所述至少两个压缩节点中确定目标压缩节点,包括:所述管理节点根据每个压缩节点当前的工作状态、所述计算节点的位置和每个压缩节点的位置,确定所述目标压缩节点,以使所述目标压缩节点为当前的工作状态为空闲状态的压缩节点中距离所述计算节点最近的压缩节点。
- 根据权利要求2所述的方法,其特征在于,所述管理节点根据每个压缩节点当前的工作状态、所述计算节点的位置和每个压缩节点的位置,确定所述目标压缩节点,包括:所述管理节点根据每个压缩节点当前的工作状态、所述计算节点的位置和每个压缩节点的位置,生成备选压缩节点列表,所述备选压缩节点列表记录有至少两个备选压缩节点的标识,所述备选压缩节点为当前的工作状态为空闲状态的压缩节点,其中,各所述备选压缩节点的标识在所述备选压缩节点列表中的排列顺序与各所述备选压缩节点至所述计算节点之间的距离的大小关系相对应;以及所述管理节点根据各所述备选压缩节点的标识在所述备选压缩节点列表中的排列顺序,从所述备选压缩节点中,确定所述目标压缩节点。
- 根据权利要求1至3中任一项所述的方法,其特征在于,所述管理 节点发送处理指令消息,包括:所述管理节点向所述计算节点发送第一处理指令消息,所述第一处理指令消息包括所述目标压缩节点的指示信息,所述目标压缩节点的指示信息用于指示所述目标压缩节点,以便于所述计算节点根据所述第一处理指令消息,基于所述目标压缩节点的指示信息,向所述目标压缩节点发送所述待压缩数据。
- 根据权利要求1至3中任一项所述的方法,其特征在于,所述管理节点发送处理指令消息,包括:所述管理节点向所述目标压缩节点发送第二处理指令消息,所述第二处理指令消息包括所述计算节点的指示信息,所述计算节点的指示信息用于指示所述计算节点,以便于所述目标压缩节点根据所述第二处理指令消息,基于所述计算节点的指示信息,从所述计算节点获取所述待压缩数据。
- 根据权利要求1至5中任一项所述的方法,其特征在于,所述压缩请求来自在所述计算节点运行的分布式计算Hadoop进程。
- 一种数据处理的装置,其特征在于,配置在包括计算节点和至少两个压缩节点的系统中,所述压缩节点用于对所述计算节点生成的待压缩数据进行压缩处理以生成压缩数据,所述装置包括:接收单元,用于接收所述计算节点发送的压缩请求;确定单元,用于确定所述至少两个压缩节点中每个压缩节点当前的工作状态,所述工作状态包括空闲状态和忙状态;并用于根据每个压缩节点当前的工作状态,从所述至少两个压缩节点中确定目标压缩节点,所述目标压缩节点当前的工作状态为空闲状态;发送单元,用于发送处理指令消息,以使所述目标压缩节点对来自所述计算节点的待压缩数据进行压缩处理。
- 根据权利要求7所述的装置,其特征在于,所述确定单元具体用于确定每个压缩节点的位置以及所述计算节点的位置;以及用于根据每个压缩节点当前的工作状态、所述计算节点的位置和每个压缩节点的位置,确定所述目标压缩节点,以使所述目标压缩节点为当前的工作状态为空闲状态的压缩节点中距离所述计算节点最近的压缩节点。
- 根据权利要求8所述的装置,其特征在于,所述确定单元具体用于根据每个压缩节点当前的工作状态、所述计算节点的位置和每个压缩节点的 位置,生成备选压缩节点列表,备选压缩节点列表记录有至少两个备选压缩节点的标识,所述备选压缩节点为当前的工作状态为空闲状态的压缩节点,其中,各所述备选压缩节点的标识在所述备选压缩节点列表中的排列顺序与各所述备选压缩节点至所述计算节点之间的距离的大小关系相对应;以及用于根据各所述备选压缩节点的标识在所述备选压缩节点列表中的排列顺序,从所述备选压缩节点中,确定所述目标压缩节点。
- 根据权利要求7至9中任一项所述的方法,其特征在于,所述发送单元具体用于向所述计算节点发送第一处理指令消息,所述第一处理指令消息包括所述目标压缩节点的指示信息,所述目标压缩节点的指示信息用于指示所述目标压缩节点,以便于所述计算节点根据所述第一处理指令消息,基于所述目标压缩节点的指示信息,向所述目标压缩节点发送所述待压缩数据。
- 根据权利要求7至9中任一项所述的方法,其特征在于,所述发送单元具体用于向所述目标压缩节点发送第二处理指令消息,所述第二处理指令消息包括所述计算节点的指示信息,所述计算节点的指示信息用于指示所述计算节点,以便于所述目标压缩节点根据所述第二处理指令消息,基于所述计算节点的指示信息,从所述计算节点获取所述待压缩数据。
- 根据权利要求7至11中任一项所述的装置,其特征在于,所述压缩请求来自在所述计算节点运行的分布式计算Hadoop进程。
- 一种数据处理的设备,其特征在于,配置在包括计算节点和至少两个压缩节点的系统,所述压缩节点用于对所述计算节点生成的待压缩数据进行压缩处理以生成压缩数据,所述设备包括:总线;与所述总线相连的存储器;与所述总线相连的处理器;与所述总线相连的收发器;所述处理器用于经由所述总线调用并执行所述存储器中的程序,以用于控制所述收发器接收所述计算节点发送的压缩请求;用于确定所述至少两个压缩节点中每个压缩节点当前的工作状态,所述工作状态包括空闲状态和忙状态;用于根据每个压缩节点当前的工作状态,从所述至少两个压缩节点中确 定目标压缩节点,所述目标压缩节点当前的工作状态为空闲状态;用于控制所述收发器发送处理指令消息,以使所述目标压缩节点对来自所述计算节点的待压缩数据进行压缩处理。
- 根据权利要求13所述的设备,其特征在于,所述处理器具体用于确定每个压缩节点的位置以及所述计算节点的位置;以及用于根据每个压缩节点当前的工作状态、所述计算节点的位置和每个压缩节点的位置,确定所述目标压缩节点,以使所述目标压缩节点为当前的工作状态为空闲状态的压缩节点中距离所述计算节点最近的压缩节点。
- 根据权利要求14所述的设备,其特征在于,所述处理器具体用于根据每个压缩节点当前的工作状态、所述计算节点的位置和每个压缩节点的位置,生成备选压缩节点列表,所述备选压缩节点列表记录有至少两个备选压缩节点的标识,所述备选压缩节点为当前的工作状态为空闲状态的压缩节点,其中,各所述备选压缩节点的标识在所述备选压缩节点列表中的排列顺序与各所述备选压缩节点至所述计算节点之间的距离的大小关系相对应;以及用于根据各所述备选压缩节点的标识在所述备选压缩节点列表中的排列顺序,从所述备选压缩节点中,确定所述目标压缩节点。
- 根据权利要求13至15中任一项所述的方法,其特征在于,所述处理器具体用于控制所述收发器向所述计算节点发送第一处理指令消息,所述第一处理指令消息包括所述目标压缩节点的指示信息,所述目标压缩节点的指示信息用于指示所述目标压缩节点,以便于所述计算节点根据所述第一处理指令消息,基于所述目标压缩节点的指示信息,向所述目标压缩节点发送所述待压缩数据。
- 根据权利要求13至15中任一项所述的方法,其特征在于,所述处理器具体用于控制所述收发器向所述目标压缩节点发送第二处理指令消息,所述第二处理指令消息包括所述计算节点的指示信息,所述计算节点的指示信息用于指示所述计算节点,以便于所述目标压缩节点根据所述第二处理指令消息,基于所述计算节点的指示信息,从所述计算节点获取所述待压缩数据。
- 根据权利要求13至17中任一项所述的设备,其特征在于,所述压缩请求来自在所述计算节点运行的分布式计算Hadoop进程。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/078667 WO2017173618A1 (zh) | 2016-04-07 | 2016-04-07 | 压缩数据的方法、装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108141471A true CN108141471A (zh) | 2018-06-08 |
CN108141471B CN108141471B (zh) | 2020-06-26 |
Family
ID=60000194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680057387.1A Active CN108141471B (zh) | 2016-04-07 | 2016-04-07 | 压缩数据的方法、装置和设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108141471B (zh) |
WO (1) | WO2017173618A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213737A (zh) * | 2018-09-17 | 2019-01-15 | 郑州云海信息技术有限公司 | 一种数据压缩方法及装置 |
CN110955535A (zh) * | 2019-11-07 | 2020-04-03 | 浪潮(北京)电子信息产业有限公司 | 一种多业务请求进程调用fpga设备的方法及相关装置 |
CN114064140A (zh) * | 2021-10-15 | 2022-02-18 | 南京南瑞继保电气有限公司 | 一种故障录波数据存储和访问方法及装置、存储介质 |
CN115442260A (zh) * | 2021-06-01 | 2022-12-06 | 中国移动通信集团设计院有限公司 | 数据传输方法、终端设备及存储介质 |
WO2023040367A1 (zh) * | 2021-09-15 | 2023-03-23 | 华为技术有限公司 | 一种数据压缩方法及装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109347758B (zh) * | 2018-08-30 | 2022-01-04 | 赛尔网络有限公司 | 一种报文压缩的方法、设备、系统和介质 |
CN109614043A (zh) * | 2018-12-04 | 2019-04-12 | 郑州云海信息技术有限公司 | 一种数据压缩方法、装置、系统及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101997897A (zh) * | 2009-08-14 | 2011-03-30 | 华为技术有限公司 | 一种块存储的方法、设备及系统 |
CN102932844A (zh) * | 2012-11-28 | 2013-02-13 | 北京傲天动联技术有限公司 | 一种提升无线网络通信吞吐量的方法及网络节点装置 |
CN103020205A (zh) * | 2012-12-05 | 2013-04-03 | 北京普泽天玑数据技术有限公司 | 一种分布式文件系统上基于硬件加速卡的压缩解压缩方法 |
WO2013186327A1 (en) * | 2012-06-13 | 2013-12-19 | Telefonaktiebolaget L M Ericsson (Publ) | Data compression in a communications network |
CN104516821A (zh) * | 2013-09-29 | 2015-04-15 | 晨星半导体股份有限公司 | 存储器管理方法及存储器管理装置 |
-
2016
- 2016-04-07 CN CN201680057387.1A patent/CN108141471B/zh active Active
- 2016-04-07 WO PCT/CN2016/078667 patent/WO2017173618A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101997897A (zh) * | 2009-08-14 | 2011-03-30 | 华为技术有限公司 | 一种块存储的方法、设备及系统 |
WO2013186327A1 (en) * | 2012-06-13 | 2013-12-19 | Telefonaktiebolaget L M Ericsson (Publ) | Data compression in a communications network |
CN102932844A (zh) * | 2012-11-28 | 2013-02-13 | 北京傲天动联技术有限公司 | 一种提升无线网络通信吞吐量的方法及网络节点装置 |
CN103020205A (zh) * | 2012-12-05 | 2013-04-03 | 北京普泽天玑数据技术有限公司 | 一种分布式文件系统上基于硬件加速卡的压缩解压缩方法 |
CN104516821A (zh) * | 2013-09-29 | 2015-04-15 | 晨星半导体股份有限公司 | 存储器管理方法及存储器管理装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213737A (zh) * | 2018-09-17 | 2019-01-15 | 郑州云海信息技术有限公司 | 一种数据压缩方法及装置 |
CN110955535A (zh) * | 2019-11-07 | 2020-04-03 | 浪潮(北京)电子信息产业有限公司 | 一种多业务请求进程调用fpga设备的方法及相关装置 |
CN110955535B (zh) * | 2019-11-07 | 2022-03-22 | 浪潮(北京)电子信息产业有限公司 | 一种多业务请求进程调用fpga设备的方法及相关装置 |
CN115442260A (zh) * | 2021-06-01 | 2022-12-06 | 中国移动通信集团设计院有限公司 | 数据传输方法、终端设备及存储介质 |
CN115442260B (zh) * | 2021-06-01 | 2023-09-05 | 中国移动通信集团设计院有限公司 | 数据传输方法、终端设备及存储介质 |
WO2023040367A1 (zh) * | 2021-09-15 | 2023-03-23 | 华为技术有限公司 | 一种数据压缩方法及装置 |
CN114064140A (zh) * | 2021-10-15 | 2022-02-18 | 南京南瑞继保电气有限公司 | 一种故障录波数据存储和访问方法及装置、存储介质 |
CN114064140B (zh) * | 2021-10-15 | 2024-03-15 | 南京南瑞继保电气有限公司 | 一种故障录波数据存储和访问方法及装置、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2017173618A1 (zh) | 2017-10-12 |
CN108141471B (zh) | 2020-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108141471A (zh) | 压缩数据的方法、装置和设备 | |
CN108733005B (zh) | 一种控制智能设备联动的方法及装置 | |
US9411647B2 (en) | Hierarchical routing and interface selection for multi-processor multimode network devices | |
CN108628775B (zh) | 一种资源管理的方法和装置 | |
US8521929B2 (en) | Virtual serial port management system and method | |
CN112214166B (zh) | 用于传输数据处理请求的方法和装置 | |
WO2017066944A1 (zh) | 一种存储设备访问方法、装置和系统 | |
CN109408419A (zh) | Dsp硬件抽象层和dsp处理器 | |
CN116204456A (zh) | 数据访问方法及计算设备 | |
CN110291502A (zh) | 一种调度加速资源的方法、装置及加速系统 | |
CN111490946B (zh) | 基于OpenCL框架的FPGA连接实现方法及装置 | |
CN104731635A (zh) | 一种虚拟机访问控制方法,及虚拟机访问控制系统 | |
WO2023174146A1 (zh) | 卸载卡命名空间管理、输入输出请求处理系统和方法 | |
CN111459632B (zh) | 一种供终端应用程序调用的串口代理及实现方法 | |
CN114416470A (zh) | 一种云端监控方法、系统、设备及计算机存储介质 | |
CN109857553A (zh) | 内存管理方法及装置 | |
CN106933646B (zh) | 一种创建虚拟机的方法及装置 | |
CN109189705A (zh) | 一种usb扩展方法、装置、设备、存储介质及系统 | |
CN115022424B (zh) | 水电lcu控制器网卡虚拟控制方法、系统、设备及其介质 | |
CN111158905A (zh) | 调整资源的方法和装置 | |
CN104881254A (zh) | 数据存储方法和装置 | |
CN110109849B (zh) | 一种基于pci总线的can设备驱动装置及方法 | |
US11360926B2 (en) | Configuration management device, configuration management system, configuration management method, and non-transitory computer readable storage medium | |
CN103246618B (zh) | 基于嵌入式系统的usb功能的实现方法及装置 | |
CN107562686B (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 |