CN106933669B - 用于数据处理的装置和方法 - Google Patents
用于数据处理的装置和方法 Download PDFInfo
- Publication number
- CN106933669B CN106933669B CN201511017541.6A CN201511017541A CN106933669B CN 106933669 B CN106933669 B CN 106933669B CN 201511017541 A CN201511017541 A CN 201511017541A CN 106933669 B CN106933669 B CN 106933669B
- Authority
- CN
- China
- Prior art keywords
- workload
- computing
- child
- storage
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5033—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/501—Performance criteria
Abstract
本发明的实施方式提供了一种用于数据处理的装置和方法。该装置包括:划分单元,被配置为基于预定的策略,对针对存储节点中的数据的计算工作负载进行划分;以及分派单元,被配置为将经划分的计算工作负载分派至计算节点和/或与所述计算节点在物理上分离的所述存储节点,以利用所述计算节点中的计算资源和/或所述存储节点中的计算资源来执行所述经划分的计算工作负载。利用本发明的实施方式,可以提高数据计算性能。
Description
技术领域
本发明的各实施方式涉及数据处理,并且更具体地涉及用于例如大数据分析中的用于数据处理的装置和方法。
背景技术
在大数据分析中,由于待处理的数据的量极为庞大,例如可达到PB(Petabyte)、EB(Exabyte)或ZB(Zettabyte)的级别,因此避免大量的数据移动、即“使计算更靠近数据”成为大数据分析中的一项重要的优化原则。
传统的大数据分析系统采用节点集群形式的系统配置。图1示出了传统的大数据分析系统的一种系统配置。该系统配置采用包括多个节点110-1、110-2、110-3和110-4(统称为节点110)的集群100的形式。集群100中的每个节点110可以实现为一个物理的或虚拟的服务器,大数据分析系统利用服务器自带的商用数据存储(commodity data storage)(例如,硬盘)来存储数据。因此,集群100中的每个服务器(即,节点110)既充当计算节点C又充当存储节点S(其中,计算节点C1的集合构成计算层120,而存储节点S的集合构成存储层130)。由此,图1所示的系统配置充分利用了“使计算更靠近数据”这一优化原则。
具体地,该系统配置允许大数据分析系统对数据放置和计算任务调度策略进行优化,以使得计算任务在相应的计算数据所在的本地节点处执行的机会(即,数据共存性(co-locality))最大化,即使得计算任务和相应的计算数据尽可能的靠近,由此使得通过网络的数据传输开销最小。
随着应用部署的演化,特别是在企业级的应用部署中,越来越多的大数据分析系统中服务器自带的商用数据存储已被具有增强的性能和强化的数据服务(例如,快照、备份、去重以及访问控制等)的企业级外部存储系统(例如EMC Isilon)所代替。然而,在采用企业级外部存储系统的大数据分析系统中,计算层与存储层是分离的,因而上述的“使计算更靠近数据”优化原则并不能直接适用于这种大数据分析系统。
发明内容
因此,为了解决一个或多个现有技术中存在的问题,需要一种在分派计算工作负载之前对其进行划分,使得存储节点中的计算资源参与经划分的计算工作负载的执行成为可能的技术方案。
根据本发明实施方式的第一方面,提供了一种用于数据处理的装置。该装置包括:划分单元,被配置为基于预定的策略,对针对存储节点中的数据的计算工作负载进行划分;以及分派单元,被配置为将经划分的计算工作负载分派至计算节点和/或与该计算节点在物理上分离的该存储节点,以利用该计算节点中的计算资源和/或该存储节点中的计算资源来执行该经划分的计算工作负载。
在一些实施方式中,该预定的策略包括基于该计算节点的计算能力和该存储节点的计算能力来对该计算工作负载进行划分、和/或基于该计算工作负载的类型来对该计算工作负载进行划分。
在一些实施方式中,该经划分的计算工作负载至少包括第一子工作负载。
在一些实施方式中,在该预定的策略包括基于该计算能力来对该计算工作负载进行划分的情况下:该第一子工作负载包括该计算工作负载的全部;并且该分派单元被进一步配置为:响应于确定该存储节点的该计算能力足以执行该第一子工作负载,将该第一子工作负载分派至该存储节点。
在一些实施方式中,在该预定的策略包括基于该计算能力来对该计算工作负载进行划分的情况下:该第一子工作负载包括该计算工作负载的一部分;并且该分派单元被进一步配置为:响应于确定该存储节点的该计算能力足以执行该第一子工作负载,将该第一子工作负载分派至该存储节点。
在一些实施方式中,该经划分的计算工作负载进一步包括与第一子工作负载不同的第二子工作负载,该第二子工作负载包括该计算工作负载的一部分;并且其中该分派单元被进一步配置为将该第二子工作负载分派至该计算节点。
在一些实施方式中,在该预定的策略包括基于该计算能力和该计算工作负载的类型来对该计算工作负载进行划分的情况下:该第一子工作负载包括输入/输出I/O密集型子工作负载。
在一些实施方式中,在该预定的策略包括基于该计算能力和该计算工作负载的类型来对该计算工作负载进行划分的情况下:该第一子工作负载包括输入/输出I/O密集型子工作负载;并且该第二子工作负载包括计算密集型子工作负载。
在一些实施方式中,该第一子工作负载与该第二子工作负载之间存在依赖关系,并且该装置进一步包括:控制单元,被配置为基于该依赖关系,控制该计算节点与该存储节点之间的数据交换。
在一些实施方式中,该控制单元被进一步配置为:基于该依赖关系,对该第一子工作负载和该第二子工作负载的执行进行调度。
根据本发明实施方式的第二方面,提供了一种用于数据处理的方法。该方法包括:基于预定的策略,对针对存储节点中的数据的计算工作负载进行划分;以及将经划分的计算工作负载分派至计算节点和/或与该计算节点在物理上分离的该存储节点,以利用该计算节点中的计算资源和/或该存储节点中的计算资源来执行该经划分的计算工作负载。
根据本发明实施方式的第三方面,提供了一种服务器。该服务器包括:一个或多个处理器;存储有计算机程序指令的存储器,当由该一个或多个处理器执行该计算机程序指令时使得该服务器执行根据本发明实施方式的用于数据处理的方法。
根据本发明实施方式的第四方面,提供了一种计算机程序产品。该计算机程序产品包括计算机程序指令,当由计算设备执行该计算机程序指令时使得该计算设备执行根据本发明实施方式的用于数据处理的方法。
根据本发明的实施方式,通过在分派之前对计算工作负载进行分析,以对其进行划分,使得存储节点中的计算资源参与经划分的计算工作负载的执行成为可能,由此改善了数据计算性能。
附图说明
结合附图并参考以下详细说明,本发明的各实施方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本发明的若干实施方式。在附图中:
图1示出了传统的大数据分析系统的一种系统配置;
图2示出了本发明的实施方式可以实现于其中的示例性环境的框图;
图3示出根据本发明的一个实施方式的用于数据处理的装置的框图;
图4(a)示出了根据本发明的一个实施方式的并发且独立的执行模式的示意图;
图4(b)示出了根据本发明的另一个实施方式的协作执行模式的示意图;
图5示出根据本发明的另一个实施方式的用于数据处理的装置的框图;
图6示出根据本发明的一个实施方式的用于数据处理的方法的流程图;
图7示出了根据本发明实施方式的数据处理系统的架构图;
图8示出了根据本发明实施方式的用于数据处理的方法的一种示例性应用场景;以及
图9是示出能够用于实现根据本发明实施方式的计算机系统的示意性框图。
具体实施方式
下面将参考附图中示出的若干示例实施方式来描述本发明的原理。应当理解,描述这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。
如前所述,在采用企业级外部存储系统的大数据分析系统中,“使计算更靠近数据”这一优化原则并不能直接适用。这主要是由于存在以下三种障碍:
·计算层不知晓具体的数据位置信息
如图1所示,传统的大数据分析系统直接管理商品数据存储(例如,Hadoop中的分布式文件系统(HDFS)由名字节点来管理),因此知晓在群集内的计算数据的具体位置信息,这可以用来使计算任务和相应的计算数据的数据共存性最大化。相反,当数据存储服务由外部存储系统经由标准协议(例如HDFS)来提供时,数据位置信息对于计算层而言变成透明的。因此,即使不是完全不可行的,对于计算层而言也变得难以根据数据位置来有效地调度计算任务以使数据共存性最大化。
·存储层不理解计算工作负载
目前,由外部的存储系统构成的存储层基本不了解上层的计算工作负载的详细特征(例如,访问模式)。因此,外部的存储系统难以进行工作负载感知的数据放置优化。例如,诸如EMC Isilon这样的扩展的网络附加存储(Network Attached Storage,NAS)系统包括多个数据节点,上层数据访问请求能够单独地联系这些数据节点。将要被数据访问请求获取的数据可能存储在远程数据节点处,而该远程数据节点不同于数据访问请求所发送到的数据节点,这将引起通过网络的数据传输。对于NAS系统而言,并不存在显著的方式来有效地预测传入的数据访问请求将要寻找哪些数据以及数据访问请求将涉及哪些数据节点、并随后相应地调整数据放置以避免远程数据存取。
·存储层的计算能力未得到有效利用
由外部的存储系统构成的存储层除了具有存储能力之外,还具有计算能力。然而,这些计算能力目前仅用于支持存储系统的操作系统的运行,并不提供给用户。因此,在大部分时间,这些计算能力是闲置的,对于网络系统而言是低效的。
鉴于现有技术中存在的上述问题,需要一种在计算层和存储层分离的架构中实现“使计算更靠近数据”这一优化原则的技术方案。
目前的企业级外部存储系统通常具有强大的计算能力,该计算能力对于提供存储控制和数据服务而言是绰绰有余的。在这种情况下,存储管理器(storage hypervisor)的中央处理单元(CPU)和随机存储器(RAM)的利用率通常在较低水平(例如低于10%)。近来,越来越多的存储厂商开始对其存储系统(例如EMC VMAX3)装备动态分配处理器核心的能力,以允许用户空间应用程序在存储系统内部运行,而不是在与存储系统分离的服务器上运行。这种计算服务是由存储系统通过应用程序编程接口(API)和/或存储目录(Servicecatalog)暴露给用户的。
考虑到目前企业级外部存储系统的上述特点,本发明的实施方式提出了利用由存储系统暴露的计算能力、使得存储系统中的计算资源参与计算工作负载的执行成为可能的技术方案。
图2示出了本发明的实施方式可以实现于其中的示例性环境200的框图。如图2所示,环境200包括根据本发明实施方式的用于数据处理的装置210、计算节点220和存储节点230。
计算节点220被配置为利用自身的计算资源(例如,中央处理单元CPU和存储器)向用户提供计算服务。计算节点220例如可以实现为物理的或虚拟的服务器。
存储节点230被配置为位于计算节点220外部,即存储节点230与计算节点220在物理上是分离的。存储节点230例如可以通过网络与计算节点220进行通信。
存储节点230除了包括用于向用户提供存储服务的存储资源(未示出)之外,还包括用于向用户提供数据服务(例如,快照、备份、去重以及访问控制等)的计算资源240,例如CPU和存储器。
应当理解,尽管图2中仅示出了一个计算节点220,但是该计算节点220既可以表示一体式的计算系统,也可以表示分布式的计算系统(即由多个计算节点220构成的集群式计算系统)。类似地,尽管图2中仅示出了一个存储节点230,但是该存储节点230既可以表示一体式的存储系统,也可以表示分布式的存储系统(即由多个存储节点230构成的集群式存储系统)。本发明的实施方式的范围在此方面不受限制。
用于数据处理的装置210可以在计算节点220之外的计算节点中实现。可替换地,装置210也可以在计算节点220中实现。本发明实施方式的范围在此方面不受限制。
在现有技术中,来自于用户应用程序的、针对存储节点230中的数据的计算工作负载被全部分派至计算节点220。响应于接收到该计算工作负载,计算节点220与存储节点230进行通信,以获取待处理的数据。换言之,待处理的数据需要从存储节点230移动到计算节点220。当待处理的数据的量极为庞大时,例如达到PB(Petabyte)、EB(Exabyte)或ZB(Zettabyte)的级别时,数据移动便成为计算节点220的主要计算瓶颈。
为了至少部分地解决上述瓶颈问题,本发明的实施方式提供了用于数据处理的装置210,以改善环境200的数据处理性能。
根据本发明的实施方式,装置210基于预定的策略,对计算工作负载进行划分,随后将经划分的计算工作负载分派至计算节点220和/或存储节点230,以利用计算节点220和/或存储节点230中的计算资源240来执行经划分的计算工作负载。
在下文中将参照图3至8并借助于图2所示的示例性环境200,详细描述根据本发明的实施方式的用于数据处理的装置。
图3示出根据本发明的一个实施方式的用于数据处理的装置300的框图。装置300可以作为图2所示的装置210的一种实现方式。
如图3所示,装置300包括划分单元310和分派单元320。装置300例如可以从用户的应用程序接收针对存储节点230中的数据的计算工作负载。划分单元310被配置为基于预定的策略来对所接收的计算工作负载进行划分。分派单元320被配置为将经划分的计算工作负载分派至计算节点220和/或与计算节点220在物理上分离的存储节点230,以利用计算节点220中的计算资源和/或存储节点230中的计算资源来执行经划分的计算工作负载。
根据本发明的实施方式,通过在分派之前对计算工作负载进行分析,以对其进行划分,使得存储节点230参与经划分的计算工作负载的执行成为可能。从而,仅在存储节点230的计算能力不足以执行计算工作负载的全部或部分的情况下,计算节点220才独自完成计算工作负载的执行,由此改善了数据计算性能。
根据本发明的实施方式,由于计算节点220为向用户提供计算服务的核心,因而被配置有丰富的计算资源。因此,与存储节点230相比,计算节点220的计算能力更强。就此而言,预定的策略可以包括基于计算节点220的计算能力和存储节点230的计算能力来对计算工作负载进行划分。
在一些实施方式中,经划分的计算工作负载至少包括第一子工作负载。
在一些实施方式中,在预定的策略包括基于计算能力来对计算工作负载进行划分的情况下,第一子工作负载包括计算工作负载的全部,并且分派单元320被进一步配置为:响应于确定存储节点230的计算能力足以执行该第一子工作负载,将第一子工作负载分派至存储节点230。换言之,在这些实施方式中,计算工作负载被全部分派至存储节点230。由此,待处理的数据仅需从存储节点230中的存储装置移动到计算资源240,完全避免了通过网络向计算节点220的数据传输,节省了数据处理时间。
如前所述,存储节点230可以利用其中的计算资源240向用户提供数据服务,例如,快照、备份、去重以及访问控制等。因此,在本文中,“存储节点的计算能力足以执行工作负载”意指:从存储节点的计算资源中去除用于提供数据服务的计算资源后,剩余的计算资源足以用来执行工作负载。
作为一个示例,可以采用以下方式来确定存储节点230的计算能力是否足以执行计算工作负载的全部或部分。首先,可以估计执行计算工作负载的全部或部分所需的计算资源的量(例如CPU周期的数目),然后确定从存储节点230的计算资源240中去除用于提供数据服务的计算资源后,剩余的计算资源的量(例如CPU周期的数目)是否大于该所需的计算资源的量。如果是,则可以确定存储节点230的计算能力足以执行计算工作负载的全部或部分。应当理解,可以采用任何其他适当的方式来确定存储节点230的计算能力是否足以执行计算工作负载的全部或部分。本发明的范围在此方面不受限制。
在一些实施方式中,在预定的策略包括基于计算能力来对计算工作负载进行划分的情况下,第一子工作负载包括计算工作负载的全部,并且分派单元320被进一步配置为:响应于确定存储节点230的计算能力不足以执行该第一子工作负载,将第一子工作负载分派至计算节点220。例如,如果存储节点230的计算资源240中去除用于提供数据服务的计算资源后,剩余的计算资源的量小于执行该第一子工作负载所需的计算资源的量,则向存储节点230分派该第一子工作负载将会影响存储节点230提供正常的数据服务。在这种情况下,将该第一子工作负载(即,计算工作负载的全部)分派至计算节点220。
在一些实施方式中,在预定的策略包括基于计算能力来对计算工作负载进行划分的情况下,第一子工作负载包括计算工作负载的一部分,并且分派单元320被进一步配置为:响应于确定存储节点230的计算能力足以执行该第一子工作负载,将该第一子工作负载分派至存储节点230。
考虑到与计算节点220相比,存储节点230中的计算资源240更靠近存储节点230中所存储的数据。因此,存储节点230更适于利用其轻量级的处理逻辑来执行输入/输出I/O密集型子工作负载。因此,可替换地或者附加地,预定的策略可以包括基于计算工作负载的类型来对计算工作负载进行划分。在这种情况下,分派至存储节点230的子工作负载可以包括I/O密集型子工作负载。I/O密集型子工作负载的示例可以包括、但是不限于:数据选择、数据过滤、数据投影(projection)等。
应当理解,基于计算节点的计算能力和存储节点的计算能力来对计算工作负载进行划分的策略、以及基于计算工作负载的类型来对计算工作负载进行划分的策略是根据本公开的预定的策略的两种具体示例,这两种具体示例既可以单独使用,也可以二者相结合来使用,也可以与其他策略结合进行使用。本发明实施方式的范围在此方面不受限制。
在一些实施方式中,经划分的计算工作负载进一步包括与第一子工作负载不同的第二子工作负载,该第二子工作负载包括计算工作负载的一部分,并且分派单元320被进一步配置为将该第二子工作负载分派至计算节点220。
如前所述,由于计算节点220为向用户提供计算服务的核心,因而被配置有丰富的计算资源。因此,计算节点220更适于执行计算密集型子工作负载。在这种情况下,分派至计算节点220的子工作负载可以包括计算密集型子工作负载。计算密集型子工作负载的示例可以包括、但是不限于:数据排序、数据聚合(aggregation)等。
作为一个示例,可以采用以下方式来确定给定的工作负载是I/O密集型工作负载还是计算密集型工作负载。首先,可以估计执行该工作负载所需的CPU周期的数目以及所需的I/O操作的数目。然后,可以计算所需的CPU周期的数目与所需的I/O操作的数目之间的比值。如果该比值大于预定阈值(例如100),则可以认为该工作负载为计算密集型工作负载,否则可以认为该工作负载为I/O密集型工作负载。应当理解,可以采用任何其他适当的方式来确定给定的工作负载是I/O密集型工作负载还是计算密集型工作负载。本发明的范围在此方面不受限制。
在计算节点220和存储节点230分别执行计算工作负荷的一部分的实施方式中,可以存在两种执行模式。
a)并发且独立的执行模式
图4(a)示出了根据本发明的一个实施方式的并发且独立的执行模式的示意图。在图4(a)所示的实施方式中,装置300将所接收的计算工作负荷划分为第一子工作负载和第二子工作负载,其可以利用计算节点220中的计算资源C1和存储节点230中的计算资源C2并行且独立地执行。如此,C1和C2将独立地完成其相应的计算任务,并分别产生计算结果R1和R2。最后,计算结果R1和R2被合并为最后的计算结果R而存入存储系统中。
b)协作执行模式
图4(b)示出了根据本发明的另一个实施方式的协作执行模式的示意图。在图4(b)所示的实施方式中,装置300将所接收的计算工作负荷划分为第一子工作负载和第二子工作负载,其可以利用计算节点220中的计算资源C1和存储节点230中的计算资源C2来执行。由于第一子工作负载和第二子工作负载之间存在依赖关系,例如第一子工作负载中的计算任务与第二子工作负载中的计算任务之间存在依赖关系,因此计算节点220与存储节点230之间需要进行数据交换,例如经由图4(b)所示的中介。关于计算节点220与存储节点230之间进行数据交换的细节将在下文中详述。
在一些场景中,一个节点需要等待另一节点完成的计算结果,以启动其自身的计算任务。在另一些场景中,两个节点可以并发地执行计算任务,而在计算处理过程中进行数据交换。在该实施方式中,在数据交换后,C1和C2完成其相应的计算任务,并分别产生计算结果R1和R2。最后,根据计算结果R1和R2确定最后的计算结果R,并将其存入存储系统中。
关于计算节点220与存储节点230之间的数据交换,可以采用如下四种示例性方式。
a)利用计算逻辑内嵌入的数据传输功能进行直接数据传送。
在数据交换的量较小时,可以采用该方式。然而采用该方式,可能存在两个节点的计算速度不匹配的潜在风险,从而引起计算阻塞和计算资源的浪费。
b)以存储系统作为中介。
在数据交换的量较大时,可以采用该方式。该方式可以有效地解决计算速度不匹配的问题,但由于潜在的磁盘性能瓶颈(I/O瓶颈)可能会降低计算性能。
c)消息队列或内存非关系型数据库(in-memory NoSQL)作为中介。
在数据交换的量不是太大时,可以采用该方式。
d)上述三种方式中任意两种的组合
例如,可以采用消息队列或内存NoSQL作为主要中介,存储系统作为辅助中介。利用消息队列或内存NoSQL来确保数据传输性能,而存储系统作为持久层来维持数据完整性。
图5示出根据本发明的另一个实施方式的用于数据处理的装置500的框图。装置500可以作为图2所示的装置210的另一种实现方式。
如图所示,装置500包括用户接口510、中央控制器520、策略引擎530、消息交换器540以及结果处理器550。
用户接口510被配置为装置500的入口点,其从应用程序接收计算工作负载并将所接收的计算工作负载转送至中央控制器520。
中央控制器520被配置为装置500的核心。中央控制器520负责从装置500中的其他模块接收信息,并执行适当的操作。此外,中央控制器520还被配置为借助于消息交换器540,控制计算节点220和存储节点230之间的数据交换。
策略引擎530响应于中央控制器520的查询,基于预定的策略来对计算工作负载进行划分。随后,策略引擎530将经划分的计算工作负载发送至中央控制器520,继而由中央控制器520转发至消息交换器540。
消息交换器540被配置为将经划分的计算工作负载发送至计算节点220和/或存储节点230。消息交换器540还被配置为计算节点220和存储节点230的控制器之间的通信中介。计算节点220和存储节点230可以独立地与底层的存储装置交互,获取其中的数据以进行计算,并且将最终计算结果存储到存储装置中。此外,计算节点220和存储节点230之间的数据交换方式可以由用户进行配置,或者根据数据交换的量而由中央控制器520来配置。
结果处理器550被配置为从计算节点220和/或存储节点230获取各自的计算结果,并基于所获取的计算结果确定最终的计算结果。例如,结果处理器550可以通过将从计算节点220和存储节点230获取的计算结果进行合并以确定最终的计算结果。结果处理器550还被配置为将最终的计算结果存储到存储系统中。
根据以上描述可知,中央控制器520、策略引擎530和消息交换器540可以被配置用于实现图3所示的装置300中的划分单元310和分派单元320的功能。换言之,装置500可以作为装置300的一种示例性实现方式。因此,以上参考图3描述的装置300的各个特征均适用于装置500,在此不再赘述。
图6示出根据本发明的一个实施方式的用于数据处理的方法600的流程图。在一些实施方式中,方法600可以由结合图2描述的装置210来执行。因此,在下文中,将参照图6并借助于图2所示的示例性环境200,来详细描述根据本发明的实施方式的用于数据处理的方法。
如图6所示,在步骤610,装置210基于预定的策略,对针对存储节点230中的数据的计算工作负载进行划分。在步骤620,装置210将经划分的计算工作负载分派至计算节点220和/或与计算节点220在物理上分离的存储节点230,以利用计算节点220中的计算资源和/或存储节点230中的计算资源来执行所述经划分的计算工作负载。
在一些实施方式中,预定的策略包括基于计算节点220的计算能力和存储节点230的计算能力来对该计算工作负载进行划分、和/或基于该计算工作负载的类型来对该计算工作负载进行划分。
在一些实施方式中,经划分的计算工作负载至少包括第一子工作负载。
在一些实施方式中,在预定的策略包括基于该计算能力来对该计算工作负载进行划分的情况下:该第一子工作负载包括该计算工作负载的全部;并且将经划分的计算工作负载分派至计算节点220和/或存储节点230包括:响应于确定存储节点230的该计算能力足以执行该第一子工作负载,将该第一子工作负载分派至存储节点230。
在一些实施方式中,在预定的策略包括基于该计算能力来对该计算工作负载进行划分的情况下:该第一子工作负载包括该计算工作负载的一部分;并且将经划分的计算工作负载分派至计算节点220和/或存储节点230包括:响应于确定存储节点230的该计算能力足以执行该第一子工作负载,将该第一子工作负载分派至存储节点230。
在一些实施方式中,该经划分的计算工作负载进一步包括与第一子工作负载不同的第二子工作负载,该第二子工作负载包括该计算工作负载的一部分;并且其中将经划分的计算工作负载分派至计算节点220和/或存储节点230包括将该第二子工作负载分派至计算节点220。
在一些实施方式中,在预定的策略包括基于该计算能力和该计算工作负载的类型来对该计算工作负载进行划分的情况下:该第一子工作负载包括输入/输出I/O密集型子工作负载。
在一些实施方式中,在预定的策略包括基于该计算工作负载的类型来对该计算工作负载进行划分的情况下:该第一子工作负载包括输入/输出I/O密集型子工作负载;并且该第二子工作负载包括计算密集型子工作负载。
在一些实施方式中,该第一子工作负载与该第二子工作负载之间存在依赖关系,并且该方法进一步包括:基于该依赖关系,控制计算节点220与存储节点230之间的数据交换。
在一些实施方式中,该方法进一步包括:基于该依赖关系,对该第一子工作负载和该第二子工作负载的执行进行调度。
应当理解,方法600可以由作为装置210的示例实现方式的装置300和500来执行。特别地,方法600中的各个步骤可以由装置300和500中的相应单元来执行。由此,上文参考装置300和500描述的各种特征均适用于方法600中的各个步骤,在此不再赘述。
图7示出了根据本发明实施方式的数据处理系统700的架构图。数据处理系统700可以作为图2所示的环境200的一种示例性实现方式。
如图7所示,数据处理系统700可以实现为包括多个节点的集群。集群700包括根据本发明实施方式的用于数据处理的装置710、计算层720和存储层730。
用于数据处理的装置710包括用户接口(User Interface,UI)、中央控制器(Central Controller,CC)、策略引擎(Policy Engine,PE)、消息交换器(MessageExchanger,ME)以及结果处理器(Result Handler,RH)。
中央控制器CC、策略引擎PE和消息交换器ME可以被配置用于实现图3所示的装置300中的划分单元310和分派单元320的功能。换言之,与参照图5所描述的装置500类似,用于数据处理的装置710也可以作为装置300的一种示例性实现方式。因此,以上参考图3描述的装置300的各个特征均适用于装置710,在此不再赘述。
用于数据处理的装置710可以在计算层720和存储层730之外实现。可替换地,用于数据处理的装置710也可以在计算层720中的多个计算节点C1之一上实现。本发明实施方式的范围在此方面不受限制。
计算层720包括多个分布式的计算节点C1。多个计算节点C1可以通过网络来彼此通信。每个计算节点C1例如可以实现为物理的或虚拟的服务器。
存储层730被配置为位于计算层720外部,即与计算层720在物理上分离。存储层730可以通过网络与计算层720进行通信。
存储层730包括多个分布式的存储节点S。每个存储节点S包括用于提供存储服务的存储资源(未示出)和用于提供数据服务的计算资源C2,例如CPU和存储器。由此,存储层730中的各计算资源C2也构成了一个计算层。由于与计算层720相比,由各计算资源C2构成的计算层更加靠近存储装置,因此在下文中,由各计算资源C2构成的计算层也被称作“下部计算层”,而计算层720也被称作“上部计算层”。在上部计算层和下部计算层中可以部署各种计算框架,例如MapReduce、Spark、Hadoop、SQL等。此外,由于上部计算层(计算层720)为向用户提供计算服务的核心,因而被配置有丰富的计算资源。因此,与下部计算层相比,上部计算层的计算能力更强。
此外,计算层720和存储层730分别包括第一控制器7210和第二控制器7310。第一控制器7210被配置为管理和/或控制计算层720中的节点,而第二控制器7310被配置为管理和/或控制存储层730中的节点。作为一个示例,第一控制器7210和第二控制器7310可以被配置为计算框架中的控制节点,例如MapReduce中的JobTracker节点。
应当理解,在图7中仅仅处于说明的目的而示出了计算层720和存储层730各自包括三个节点。在具体实现中,计算层720和存储层730各自可以包括任何适当数目的节点。此外,在图7中仅仅处于说明的目的而示出了每个存储节点S均包括计算资源C2。在具体实现中,计算资源C2的数目可以与存储节点S的数目不同,即,相同的计算资源C2可以由多个存储节点S共享。
此外,尽管在图7中以分布式的节点集群的形式示出了计算层720中的各计算节点C1以及存储层730中的各存储节点S,但是可替换地,计算层720中的计算节点和存储层730中的存储节点均可以以一体方式实现,或者计算层720和存储层730之一的节点以一体方式实现,而另一个以分布式的节点集群来实现。本发明的实施方式的范围在此方面不受限制。
下面详细描述由图7所示的集群700处理的用户数据计算工作负载的端到端生命周期。
在步骤S1,经由用户界面UI接收来自应用程序740的计算工作负载。
在步骤S2,计算工作负载由用户界面UI转发给中央控制器CC。
在步骤S3,中央控制器CC查询策略引擎PE,策略引擎PE基于预定的策略将计算工作负载分为两个子计算工作负载。例如,所接收的计算工作负载可以被编译成有向无环图(Directed Acyclic Graph,DAG)。在DAG中,每个顶点表示计算工作负载中的任务,而每条边表示在任务之间流动的数据以及任务之间的依赖关系。在DAG中的任务例如可以包括计算密集型任务和I/O密集型任务。通过在DAG中找到切割点(cut),策略引擎PE可以将DAG中所呈现的任务划分为计算密集型任务和I/O密集型任务,并发送至中央控制器CC。此外,由于上部计算层和下部计算层可以采用不同的计算框架,因此策略引擎PE可能需要将两个子计算工作负载(例如,计算密集型任务和I/O密集型任务)转换为能够由上部计算层和下部计算层执行的子计算工作负载。
在步骤S4,中央控制器CC将子计算工作负载转发到消息交换器ME。
在步骤S5,消息交换器ME将相应的子计算工作负载分别发送到上部计算层和下部计算层。上部计算层和下部计算层的控制器7210和7310将接收各自的子计算工作负载并启动数据计算。
在步骤S6,在数据计算期间,将会存在上部计算层/下部计算层与存储系统之间的数据交换。
当完成数据计算时,上部计算层和下部计算层分别向消息交换器ME发送通知,消息交换器ME将该通知转发至中央控制器CC(未示出)。随后在步骤S7,中央控制器CC请求结果处理器RH处理最终的计算结果。
在步骤S8,结果处理器RH从上部计算层和下部计算层获取计算结果,例如通过可选地将所获取的计算结果进行合并,结果处理器RH将结果存储到存储系统中。
此外,如上所述,在一些情况下,在计算过程中,上部计算层和下部计算层之间存在数据交换,如图7中的虚线箭头所示。
通过以上描述可知,本发明的实施方式利用由存储系统暴露的计算能力和外部计算服务器的计算能力来构建双层数据计算框架。根据本发明的方案,一部分计算工作负载被分派至存储系统,以实现例如针对大数据分析的“使计算更靠近数据”这一被广泛采用的原则,并因此显著减少存储系统与外部的计算服务器之间的数据传输。因此,数据计算性能和存储系统的数据服务质量都能够得到提升。
图8示出了根据本发明实施方式的用于数据处理的方法的一种示例性应用场景。在图8所示的场景中,例如采用图7所示的数据处理系统700对如下计算工作负载执行计算:对数亿行数据进行排序。待排序的数据810为包含杂质(含量大于50%)的数据,即包含数字数据项和非数字数据项,例如R、*&^、&、*等。
针对该计算工作负载,总的数据计算过程包括两个逻辑步骤:第一步骤,从待排序的数据810中过滤掉全部的非数字数据项(简称“数据过滤操作”);第二步骤,对数字数据项进行排序(简称“数据排序操作”)。
在传统的数据处理系统中,需要从存储系统S中取出全部的待排序的数据810,并将其馈送至上部计算层C1,以执行数据计算的两个步骤。
在根据本发明实施方式的数据处理系统(例如数据处理系统700)中,中央控制器CC查询策略引擎PE(未示出)以将接收的计算工作负载820划分为第一子工作负载8210和第二子工作负载8220,其中第一子工作负载8210包括数据过滤操作,第二子工作负载8220包括数据排序操作。
随后,中央控制器CC经由消息交换器ME(未示出)将第一子工作负载8210和第二子工作负载8220分别发送至下部计算层C2和上部计算层C1。
接下来,下部计算层C2从存储系统S中取出全部的待排序的数据810,并且对其执行数据过滤操作,以从中过滤掉非数字数据项,例如R、*&^、&、*等。在数据过滤操作后,下部计算层C2向中央控制器CC发送通知,并且将经过滤的数据830发送至消息队列MQ。响应于接收到来自下部计算层C2的通知,中央控制器CC调度上部计算层C1以执行数据排序操作。响应于该调度,上部计算层C1从消息队列MQ获取经过滤的数据830,以执行数据排序操作。在数据排序操作后,获得最终的计算结果840。
在上述过程中,由于数字数据项的部分少于50%,因此可以节约存储系统S与上部计算层C1之间的数据业务的50%以上。
图9是示出能够用于实现根据本发明实施方式的计算机系统的示意性框图。
下面参考图9,其示出了适于用来实现本发明实施方式的计算机系统900的示意性框图。如图9所示,计算机系统900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有计算机系统900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括存储盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如存储盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
特别地,根据本发明的实施方式,上文参考图6描述的过程可以被实现为计算机软件程序。例如,本发明的实施方式包括一种计算机程序产品,其包括有形地包含在计算机可读介质上的计算机程序,所述计算机程序包含用于执行方法600的程序代码。
一般而言,本发明的各种示例实施方式可以在硬件或专用电路、软件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本发明的实施方式的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
而且,流程图中的各框可以被看作是方法步骤,和/或计算机程序代码的操作生成的操作,和/或理解为执行相关功能的多个耦合的逻辑电路元件。例如,本发明的实施方式包括计算机程序产品,该计算机程序产品包括有形地实现在计算机可读介质上的计算机程序,该计算机程序包含被配置为实现上文描述方法的程序代码。
在公开的上下文内,计算机可读介质可以是包含或存储用于或有关于指令执行系统、装置或设备的程序的任何有形介质。计算机可读介质可以是机器可读信号介质或机器可读存储介质。计算机可读介质可以包括但不限于电子的、磁的、光学的、电磁的、红外的或半导体系统、装置或设备,或其任意合适的组合。机器可读存储介质的更详细示例包括带有一根或多根导线的电气连接、便携式计算机存储盘、存储盘、随机存储存取器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光存储设备、磁存储设备,或其任意合适的组合。
用于实现本发明的方法的计算机程序代码可以用一种或多种编程语言编写。这些计算机程序代码可以提供给通用计算机、专用计算机或其他可编程的数据处理装置的处理器,使得程序代码在被计算机或其他可编程的数据处理装置执行的时候,引起在流程图和/或框图中规定的功能/操作被实施。程序代码可以完全在计算机上、部分在计算机上、作为独立的软件包、部分在计算机上且部分在远程计算机上或完全在远程计算机或服务器上执行。
另外,尽管操作以特定顺序被描绘,但这并不应该理解为要求此类操作以示出的特定顺序或以相继顺序完成,或者执行所有图示的操作以获取期望结果。在某些情况下,多任务或并行处理会是有益的。同样地,尽管上述讨论包含了某些特定的实施细节,但这并不应解释为限制任何发明或权利要求的范围,而应解释为对可以针对特定发明的特定实施方式的描述。本说明书中在分开的实施方式的上下文中描述的某些特征也可以整合实施在单个实施方式中。相反地,在单个实施方式的上下文中描述的各种特征也可以分离地在多个实施方式或在任意合适的子组合中实施。
针对前述本发明的示例实施方式的各种修改、改变将在连同附图查看前述描述时对相关技术领域的技术人员变得明显。任何及所有修改将仍落入非限制的和本发明的示例实施方式范围。此外,前述说明书和附图存在启发的益处,涉及本发明的这些实施方式的技术领域的技术人员将会想到此处阐明的本发明的其他实施方式。
将会理解,本发明的实施方式不限于公开的特定实施方式,并且修改和其他实施方式都应包含于所附的权利要求范围内。尽管此处使用了特定的术语,但是它们仅在通用和描述的意义上使用,而并不用于限制目的。
Claims (22)
1.一种用于数据处理的装置,包括:
划分单元,被配置为基于预定的策略,将针对存储节点中存储设备中的数据的计算工作负载划分为用于由一个或多个所述存储节点和计算节点执行的至少一个子工作负载;以及
分派单元,被配置为将所述至少一个子工作负载中的至少部分子工作负载从所述存储设备分派至所述存储节点和计算节点中的至少一个,以利用所述存储节点和所述计算节点中的至少一个的计算资源来执行所述至少一个子工作负载,所述存储节点是外部系统,并且所述计算节点与所述存储节点在物理上分离,
其中将所述至少一个子工作负载中的所述至少部分子工作负载从所述存储设备分派至所述存储节点以执行包括:
将所述至少一个子工作负载中的所述至少部分子工作负载从所述存储设备移动到所述存储节点中的所述计算资源;以及
其中将所述至少一个子工作负载中的所述部分子工作负载从所述存储设备分派至所述计算节点以执行包括:
当需要超出所述存储节点的计算能力之外的附加的计算能力来执行所述至少一个子工作负载中的所述部分子工作负载时,经由网络将所述至少一个子工作负载中的至少部分子工作负载从所述存储设备传输到所述计算节点,
其中通过估计用于执行所述至少一个子工作负载中的全部子工作负载或部分子工作负载所需要的计算资源量,来确定存储节点的所述计算能力,
其中估计所需要的计算资源量包括:从所述存储节点的计算资源中移除用于提供数据服务的计算资源后,确定剩余的计算资源量是否大于所需要的计算资源量。
2.根据权利要求1所述的装置,其中所述预定的策略指示以下中的至少一项:
基于所述计算节点的相应计算能力和所述存储节点的相应计算能力来对所述计算工作负载进行划分;以及
基于所述计算工作负载的类型来对所述计算工作负载进行划分。
3.根据权利要求2所述的装置,其中所述至少一个子工作负载至少包括第一子工作负载。
4.根据权利要求3所述的装置,其中所述划分单元被配置为在所述预定的策略指示基于所述计算节点的所述相应计算能力和所述存储节点的所述相应计算能力来对所述计算工作负载进行划分的情况下,将所述计算工作负载中的全部计算工作负载划分至所述第一子工作负载;并且
所述分派单元被进一步配置为:响应于确定所述存储节点的所述计算能力足以执行所述第一子工作负载,将所述第一子工作负载分派至所述存储节点。
5.根据权利要求3所述的装置,其中所述划分单元被配置为在所述预定的策略指示基于所述计算节点的所述相应计算能力和所述存储节点的所述相应计算能力来对所述计算工作负载进行划分的情况下,将所述计算工作负载中的部分计算工作负载划分至所述第一子工作负载;并且
所述分派单元被进一步配置为:响应于确定所述存储节点的所述计算能力足以执行所述第一子工作负载,将所述第一子工作负载分派至所述存储节点。
6.根据权利要求5所述的装置,其中所述至少一个子工作负载进一步包括与所述第一子工作负载不同的第二子工作负载,所述第二子工作负载包括所述计算工作负载中的部分计算工作负载;并且
其中所述分派单元被进一步配置为将所述第二子工作负载分派至所述计算节点。
7.根据权利要求4至6中任一项所述的装置,其中所述划分单元被配置为在所述预定的策略指示基于所述计算节点的所述相应计算能力和所述存储节点的所述相应计算能力以及所述计算工作负载的类型来对所述计算工作负载进行划分的情况下,将所述计算工作负载划分至输入/输出I/O密集型子工作负载;以及
其中所述分派单元被配置为将所述I/O密集型子工作负载分派至所述存储节点。
8.根据权利要求6所述的装置,其中在所述预定的策略指示基于所述计算工作负载的所述类型来对所述计算工作负载进行划分的情况下:
所述第一子工作负载包括输入/输出I/O密集型子工作负载;并且
所述第二子工作负载包括计算密集型子工作负载。
9.根据权利要求6所述的装置,其中所述第一子工作负载与所述第二子工作负载之间存在依赖关系,所述装置进一步包括:
控制单元,被配置为基于所述依赖关系,控制所述计算节点与所述存储节点之间的数据交换。
10.根据权利要求9所述的装置,其中所述控制单元被进一步配置为:
基于所述依赖关系,对所述第一子工作负载和所述第二子工作负载的执行进行调度。
11.一种用于数据处理的方法,包括:
基于预定的策略,将针对存储节点中存储设备中的数据的计算工作负载划分为用于由一个或多个所述存储节点和计算节点执行的至少一个子工作负载;以及
将所述至少一个子工作负载中的至少部分子工作负载从所述存储设备分派至所述存储节点和计算节点中的至少一个,以利用所述存储节点和所述计算节点中的至少一个的计算资源来执行所述至少一个子工作负载,所述存储节点是外部系统,并且所述计算节点与所述存储节点在物理上分离,
其中将所述至少一个子工作负载中的所述至少部分子工作负载从所述存储设备分派至所述存储节点以执行包括:
将所述至少一个子工作负载中的所述至少部分子工作负载从所述存储设备移动到所述存储节点中的所述计算资源;以及
其中将所述至少一个子工作负载中的所述部分子工作负载从所述存储设备分派至所述计算节点以执行包括:
当需要超出所述存储节点的计算能力之外的附加的计算能力来执行所述至少一个子工作负载中的所述部分子工作负载时,经由网络将所述至少一个子工作负载中的至少部分子工作负载从所述存储设备传输到所述计算节点,
其中通过估计用于执行所述至少一个子工作负载的全部子工作负载或部分子工作负载所需要的计算资源量,来确定存储节点的所述计算能力,
其中估计所需要的计算资源量包括:从所述存储节点的计算资源中移除用于提供数据服务的计算资源后,确定剩余的计算资源量是否大于所需要的计算资源量。
12.根据权利要求11所述的方法,其中所述预定的策略指示以下中的至少一项:
基于所述计算节点的相应计算能力和所述存储节点的相应计算能力来对所述计算工作负载进行划分;以及
基于所述计算工作负载的类型来对所述计算工作负载进行划分。
13.根据权利要求12所述的方法,其中所述至少一个子工作负载至少包括第一子工作负载。
14.根据权利要求13所述的方法,其中在所述预定的策略指示基于所述计算节点的所述相应计算能力和所述存储节点的所述相应计算能力来对所述计算工作负载进行划分的情况下,将所述计算工作负载划分为所述至少一个子工作负载包括将所述计算工作负载中的全部计算工作负载划分至所述第一子工作负载;并且
其中将所述至少一个子工作负载分派至所述计算节点和所述存储节点中的至少一个包括:响应于确定所述存储节点的所述计算能力足以执行所述第一子工作负载,将所述第一子工作负载分派至所述存储节点。
15.根据权利要求13所述的方法,其中在所述预定的策略指示基于所述计算节点的所述相应计算能力和所述存储节点的所述相应计算能力来对所述计算工作负载进行划分的情况下,将所述计算工作负载划分为所述至少一个子工作负载包括将所述计算工作负载中的部分计算工作负载划分至所述第一子工作负载;并且
其中将所述至少一个子工作负载分派至所述计算节点和所述存储节点中的至少一个包括:响应于确定所述存储节点的所述计算能力足以执行所述第一子工作负载,将所述第一子工作负载分派至所述存储节点。
16.根据权利要求15所述的方法,其中所述至少一个子工作负载进一步包括与所述第一子工作负载不同的第二子工作负载,所述第二子工作负载包括所述计算工作负载中的部分计算工作负载;并且
其中将所述至少一个子工作负载分派至所述计算节点和所述存储节点中的至少一个包括:将所述第二子工作负载分派至所述计算节点。
17.根据权利要求14至16中任一项所述的方法,其中在所述预定的策略指示基于所述计算节点的所述相应计算能力和所述存储节点的所述相应计算能力以及所述计算工作负载的类型来对所述计算工作负载进行划分的情况下:
将所述计算工作负载划分至所述至少一个子工作负载包括:将输入/输出I/O密集型子工作负载划分至所述第一子工作负载;以及
将所述至少一个子工作负载分派至所述计算节点和所述存储节点中的至少一个包括:将所述I/O密集型子工作负载分派至所述存储节点。
18.根据权利要求16所述的方法,其中在所述预定的策略指示基于所述计算工作负载的所述类型来对所述计算工作负载进行划分的情况下:
所述第一子工作负载包括输入/输出I/O密集型子工作负载;并且
所述第二子工作负载包括计算密集型子工作负载。
19.根据权利要求16所述的方法,其中所述第一子工作负载与所述第二子工作负载之间存在依赖关系,所述方法进一步包括:
基于所述依赖关系,控制所述计算节点与所述存储节点之间的数据交换。
20.根据权利要求19所述的方法,进一步包括:
基于所述依赖关系,对所述第一子工作负载和所述第二子工作负载的执行进行调度。
21.一种服务器,包括:
一个或多个处理器;
存储有计算机程序指令的存储器,当由所述一个或多个处理器执行所述计算机程序指令时使得所述服务器执行根据权利要求11-20中任一权利要求所述的方法。
22.一种计算机程序产品,包括计算机程序指令,当由计算设备执行所述计算机程序指令时使得所述计算设备执行根据权利要求11-20中任一权利要求所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511017541.6A CN106933669B (zh) | 2015-12-29 | 2015-12-29 | 用于数据处理的装置和方法 |
US15/384,432 US10733019B2 (en) | 2015-12-29 | 2016-12-20 | Apparatus and method for data processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511017541.6A CN106933669B (zh) | 2015-12-29 | 2015-12-29 | 用于数据处理的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106933669A CN106933669A (zh) | 2017-07-07 |
CN106933669B true CN106933669B (zh) | 2021-01-08 |
Family
ID=59087245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511017541.6A Active CN106933669B (zh) | 2015-12-29 | 2015-12-29 | 用于数据处理的装置和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10733019B2 (zh) |
CN (1) | CN106933669B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10761900B1 (en) | 2015-04-30 | 2020-09-01 | V2Com S.A. | System and method for secure distributed processing across networks of heterogeneous processing nodes |
US10013214B2 (en) | 2015-12-29 | 2018-07-03 | International Business Machines Corporation | Adaptive caching and dynamic delay scheduling for in-memory data analytics |
US10944814B1 (en) * | 2017-12-04 | 2021-03-09 | Amazon Technologies, Inc. | Independent resource scheduling for distributed data processing programs |
BR112020017898A2 (pt) * | 2018-03-01 | 2020-12-22 | V2Com S.A. | Sistema e método para processamento distribuído seguro através de redes de nós de processamento heterogêneo |
CN108829508B (zh) * | 2018-03-30 | 2020-10-27 | 北京趣拿信息技术有限公司 | 任务处理方法和装置 |
US10768998B2 (en) | 2018-04-05 | 2020-09-08 | International Business Machines Corporation | Workload management with data access awareness in a computing cluster |
CN110737391B (zh) | 2018-07-20 | 2023-08-22 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机程序产品 |
US10802883B2 (en) * | 2018-08-21 | 2020-10-13 | Intel Corporation | Method, system, and device for near-memory processing with cores of a plurality of sizes |
CN111435943B (zh) * | 2019-01-14 | 2022-07-19 | 阿里巴巴集团控股有限公司 | 数据处理方法、设备、系统及存储介质 |
CN111459653B (zh) * | 2019-01-22 | 2023-05-05 | 阿里巴巴集团控股有限公司 | 集群调度方法、装置和系统以及电子设备 |
US11321123B2 (en) * | 2019-11-21 | 2022-05-03 | International Business Machines Corporation | Determining an optimum number of threads to make available per core in a multi-core processor complex to executive tasks |
US11481259B2 (en) * | 2020-01-07 | 2022-10-25 | International Business Machines Corporation | Distributing computation workloads based on calculated compute gravity within differing computing paradigms |
CN111400008B (zh) * | 2020-03-13 | 2023-06-02 | 北京旷视科技有限公司 | 计算资源调度方法、装置及电子设备 |
CN113342525A (zh) * | 2020-07-24 | 2021-09-03 | 北京一流科技有限公司 | 分布式数据处理系统及其方法 |
US11372687B1 (en) * | 2021-06-30 | 2022-06-28 | Blackshark.Ai Gmbh | Geo-spatial workload scheduling in distributed systems |
CN113448757B (zh) * | 2021-08-30 | 2022-02-01 | 阿里云计算有限公司 | 消息处理方法、装置、设备、存储介质和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067524A (zh) * | 2013-01-18 | 2013-04-24 | 浪潮电子信息产业股份有限公司 | 一种基于云计算环境的蚁群优化计算资源分配方法 |
CN103699425A (zh) * | 2013-09-26 | 2014-04-02 | 武汉中地数码科技有限公司 | 一种基于云计算的软件t/c/v架构及其云计算方法 |
US20150189020A1 (en) * | 2013-12-26 | 2015-07-02 | Emc Corporation | Network storage node and network storage system |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005352697A (ja) * | 2004-06-09 | 2005-12-22 | Canon Inc | コンピュータシステム、及び該システムにおけるジョブの割り当て方法 |
US20070094270A1 (en) * | 2005-10-21 | 2007-04-26 | Callminer, Inc. | Method and apparatus for the processing of heterogeneous units of work |
JP4871174B2 (ja) * | 2007-03-09 | 2012-02-08 | 株式会社日立製作所 | 仮想計算機システム |
US8458710B2 (en) * | 2009-09-03 | 2013-06-04 | Hewlett-Packard Development Company, L. P. | Scheduling jobs for execution on a computer system |
US9268613B2 (en) * | 2010-12-20 | 2016-02-23 | Microsoft Technology Licensing, Llc | Scheduling and management in a personal datacenter |
US8453152B2 (en) * | 2011-02-01 | 2013-05-28 | International Business Machines Corporation | Workflow control of reservations and regular jobs using a flexible job scheduler |
US9477529B2 (en) * | 2012-06-20 | 2016-10-25 | International Business Machines Corporation | Job distributed within a grid environment using mega-host groupings of execution hosts based on resource attributes |
US9531623B2 (en) * | 2013-04-05 | 2016-12-27 | International Business Machines Corporation | Set up of direct mapped routers located across independently managed compute and storage networks |
US9477511B2 (en) * | 2013-08-14 | 2016-10-25 | International Business Machines Corporation | Task-based modeling for parallel data integration |
US9083653B2 (en) * | 2013-10-21 | 2015-07-14 | Hewlett-Packard Development Company, L.P. | Automated cloud set up |
US9250953B2 (en) * | 2013-11-12 | 2016-02-02 | Oxide Interactive Llc | Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system |
US10484471B2 (en) * | 2014-05-12 | 2019-11-19 | Netapp, Inc. | Bridging clouds |
US9836234B2 (en) * | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US20150363229A1 (en) * | 2014-06-11 | 2015-12-17 | Futurewei Technologies, Inc. | Resolving task dependencies in task queues for improved resource management |
US9521089B2 (en) * | 2014-08-30 | 2016-12-13 | International Business Machines Corporation | Multi-layer QoS management in a distributed computing environment |
US20160378570A1 (en) * | 2015-06-25 | 2016-12-29 | Igor Ljubuncic | Techniques for Offloading Computational Tasks between Nodes |
-
2015
- 2015-12-29 CN CN201511017541.6A patent/CN106933669B/zh active Active
-
2016
- 2016-12-20 US US15/384,432 patent/US10733019B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067524A (zh) * | 2013-01-18 | 2013-04-24 | 浪潮电子信息产业股份有限公司 | 一种基于云计算环境的蚁群优化计算资源分配方法 |
CN103699425A (zh) * | 2013-09-26 | 2014-04-02 | 武汉中地数码科技有限公司 | 一种基于云计算的软件t/c/v架构及其云计算方法 |
US20150189020A1 (en) * | 2013-12-26 | 2015-07-02 | Emc Corporation | Network storage node and network storage system |
Also Published As
Publication number | Publication date |
---|---|
US10733019B2 (en) | 2020-08-04 |
CN106933669A (zh) | 2017-07-07 |
US20170185452A1 (en) | 2017-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106933669B (zh) | 用于数据处理的装置和方法 | |
US10003500B2 (en) | Systems and methods for resource sharing between two resource allocation systems | |
US10467725B2 (en) | Managing access to a resource pool of graphics processing units under fine grain control | |
US11256554B2 (en) | Reducing overlay network overhead across container hosts | |
US20220043673A1 (en) | Fpga acceleration for serverless computing | |
US9846589B2 (en) | Virtual machine placement optimization with generalized organizational scenarios | |
US8584136B2 (en) | Context-aware request dispatching in clustered environments | |
US9442760B2 (en) | Job scheduling using expected server performance information | |
CN112465129B (zh) | 片内异构人工智能处理器 | |
US20200174844A1 (en) | System and method for resource partitioning in distributed computing | |
US20130290953A1 (en) | Efficient execution of jobs in a shared pool of resources | |
US20140379722A1 (en) | System and method to maximize server resource utilization and performance of metadata operations | |
CN109729106B (zh) | 处理计算任务的方法、系统和计算机程序产品 | |
CN109564528B (zh) | 分布式计算中计算资源分配的系统和方法 | |
KR20140080434A (ko) | 맵리듀스 프레임워크에서 데이터 프로세싱의 최적화를 위한 디바이스 및 방법 | |
CN112130963A (zh) | 虚拟机任务的调度方法、装置、计算机设备及存储介质 | |
CN111552550A (zh) | 一种基于图形处理器gpu资源的任务调度方法、设备及介质 | |
KR102052964B1 (ko) | 컴퓨팅 스케줄링 방법 및 시스템 | |
CN115686805A (zh) | Gpu资源共享的方法和装置、调度gpu资源共享的方法和装置 | |
Govindarajan et al. | Task scheduling in big data-review, research challenges, and prospects | |
US20150286508A1 (en) | Transparently routing job submissions between disparate environments | |
US9990240B2 (en) | Event handling in a cloud data center | |
US10877800B2 (en) | Method, apparatus and computer-readable medium for application scheduling | |
US20180159720A1 (en) | Dynamic agent deployment in a data processing system | |
US20230418681A1 (en) | Intelligent layer derived deployment of containers |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200424 Address after: Massachusetts, USA Applicant after: EMC IP Holding Company LLC Address before: Ma Sazhusaizhou Applicant before: EMC Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |