Embodiments of the invention generally relate to information technology, and, more particularly, to distributed computing.
MapReduce is an important programming paradigm for processing large data. Accordingly, there has been work in the area of design of MapReduce schedulers. All existing scheduling approaches have focused on the scheduling of collections of singleton MapReduce jobs, as single MapReduce jobs were originally an appropriate atomic unit of work. More recently, however, more elaborate MapReduce work has emerged, and currently it is common to see the submission of flows of interconnected MapReduce jobs. Each flow can be represented by a directed acyclic graph in which the nodes are singleton MapReduce jobs and the directed arcs represent precedence. This means that the atoms have become molecules: the flows have become the basic unit of MapReduce work, and it is the completion time of the flows that commonly determines the appropriate measure of quality, not the completion times of the individual MapReduce jobs.
Previous parallel scheduling implementations and theoretical results include what are referred to as rigid jobs. These jobs run on a fixed number of processors (also referred to herein as slots) and are presumed to complete their work simultaneously. One can thus think of a job as corresponding to a rectangle whose width corresponds to the number of processors p, whose height corresponds to the execution time t of the job, and whose area, s=p·t, corresponds to the work performed by the job.
Early work focused on the makespan metric, while subsequent parallel scheduling research included additional considerations. One such consideration involved moldable scheduling, wherein each job can be run on an arbitrary number of processors, but with an execution time that is a monotone non-increasing function of the number of processors. Thus the width of a job is changed from an input parameter to a decision variable. Additionally, with respect to another consideration, malleable scheduling, the number of processors allocated to a job is allowed to vary over time. However, each job must still perform its fixed amount of work.
Accordingly, existing approaches for scheduling simultaneous MapReduce work on a distributed cluster of processors typically include slot-based approaches. Such scheduling techniques favor time of arrival, while others favor notions of fairness.
However, MapReduce work is typically initiated in the form of flow-graph applications rather than single MapReduce jobs. These flow-graphs commonly include nodes describing MapReduce jobs, with directed arcs corresponding to precedence relations between the jobs. Additionally, it is often the completion time of the entire flow-graph, as noted above, that is of importance to the user submitting the application. Moreover, the completion times of individual MapReduce jobs themselves are often not overly relevant because the individual MapReduce jobs are commonly steps on a path to a larger goal. Accordingly, a need exists for scheduling management of overall MapReduce flow-graph applications, with the additional goal of optimizing metrics based on completion times of such applications.
In one aspect of the present invention, techniques for automated scheduling management of MapReduce flow-graph applications are provided. An exemplary computer-implemented method can include steps of determining a job schedule of one or more MapReduce jobs within each of multiple MapReduce flows in a cluster environment, wherein said job schedule does not violate a precedence relationship within the corresponding MapReduce flow and reduces makespan of the corresponding MapReduce flow. The method additionally includes determining a flow schedule for the multiple MapReduce flows based on consideration of a given metric, wherein said flow schedule comprises a number of slots allotted to each of the multiple MapReduce flows, and wherein said number of slots is less than or equal to a number of the one or more MapReduce jobs within each corresponding MapReduce flow. Further, the method includes transforming each job schedule into the flow schedule to allocate resources for the multiple MapReduce flows in the cluster environment without violating a precedence constraint of any of the multiple MapReduce flows.
Another aspect of the invention or elements thereof can be implemented in the form of an article of manufacture tangibly embodying computer readable instructions which, when implemented, cause a computer to carry out a plurality of method steps, as described herein. Furthermore, another aspect of the invention or elements thereof can be implemented in the form of an apparatus including a memory and at least one processor that is coupled to the memory and operative to perform noted method steps. Yet further, another aspect of the invention or elements thereof can be implemented in the form of means for carrying out the method steps described herein, or elements thereof; the means can include hardware module(s) or a combination of hardware and software modules, wherein the software modules are stored in a tangible computer-readable storage medium (or multiple such media).
These and other objects, features and advantages of the present invention will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings.
As described herein, an aspect of the present invention includes optimizing slot-based scheduling of flow-graph applications of MapReduce jobs. As further detailed herein, at least one embodiment of the invention includes allocating resources for multiple MapReduce flows in a cluster environment in a continuously adaptive manner to optimize a given metric associated with the completion time of each flow. As used herein, a flow-graph includes nodes describing MapReduce jobs with relations between those jobs. Accordingly, at least one embodiment of the invention includes providing automatic scheduling of MapReduce jobs based on MapReduce flow-graph completion times.
As noted, an aspect of the invention considers the problem of scheduling MapReduce workloads. For example,
As depicted in
A workload includes multiple independent applications (or flows), and each flow is itself a set of MapReduce jobs with precedence constraints. As detailed herein, this can be modeled as a parallel scheduling problem, and more specifically, as precedence constrained malleable scheduling with linear speed-up and processor maxima. Each flow is associated with an arbitrary cost function that describes the cost incurred for completing the flow at a particular time. An objective of at least one embodiment of the invention includes minimizing the total cost (minisum) or the maximum cost (minimax) of the flows. As further described herein, a schedule includes an allocation of slots to the various jobs and flows over time. Related but distinct schemes can be provided for the minisum and minimax scheduling problems.
As also described herein, the Map and Reduce phases can be composed of many small, independent tasks. Because the two phases are independent, they do not need to start simultaneously and they can be processed with any degree of parallelism without significant overhead. This, in turn, means that the jobs will have nearly linear speed-up. Because the tasks can be many and small, the decisions of the scheduler can be closely approximated. By way of example, consider
Suppose, for example, a task on a node completes, freeing a slot. The assignment layer determines which job is the most relatively under-allocated according to the allocation layer schedule, and acts greedily, assigning a new task from that job to the slot. Examining
Accordingly, MapReduce workloads are implemented with malleable scheduling with linear speedup and processor maxima, for example, because there is a natural decoupling of MapReduce scheduling into an allocation layer followed by an assignment layer. In the allocation layer, quantity decisions are made, and that is where the mathematical complexity resides. The assignment layer implements these allocation decisions (to the extent possible) in the MapReduce cluster. For example, as illustrated in
As further detailed below, at least one embodiment of the invention includes implementing a set of scheduling algorithms for flows of MapReduce jobs in the context of a wide variety of scheduling metrics, each of which being based on the completion times of the flows. Example scheduling metrics can include makespan, average completion time, average and maximum stretch and metrics involving one or more deadlines. Any given metric will be appropriate for a particular scenario, and the algorithm applied will depend on the choice of metric. For example, in a batch environment, makespan may be emphasized to ensure that the batch window is not elongated. In an interactive environment, users would typically focus on completion time.
By way of example, the following notation is used herein to describe aspects of one or more embodiments of the invention. There are P identical processors that correspond to resources (slots) in the MapReduce cluster. There are m flows. Each flow j is described by means of a directed acyclic graph. The nodes in each of these directed acyclic graphs are jobs, and the directed arcs correspond to precedence relations. The standard notation i1i2 is used to indicate that job i1 must be completed before job i2 can begin. Each job i must perform a fixed amount of work si (also referred to as the job size), and can be performed on a maximum number δiε[P] of processors at any point in time. Jobs have linear speed-up through their maximum numbers of processors: the rate at which work is done on job i at any time is proportional to the number of processors pΣ[δi] assigned thereto. Job i is complete when si units of work have been performed.
At least one embodiment of the invention includes producing malleable schedules. In this setting, a schedule for job i is given by a function τi:[0, ∞)→{0, 1, . . . , δi}, where ∫t=0∞τi(t)dt=si. Note that this satisfies both linear speed-up and processor maxima. The start time of schedule τi is denoted by S(τi):=arg min{t≧0:τi(t)>0}; similarly, the completion time is denoted C(τi):=arg max{t≧0:τi(t)>0}. A schedule for flow j (which includes jobs Ij) is given by a set {τi:iεIj} of schedules for its jobs, where C(τi
Total load (or squashed area):
; and
Critical path: the maximum of
over all chains i1i2 in flow j.
Each flow j also specifies an arbitrary non-decreasing cost function ωj: +→+ where wj(t) is the cost incurred when job j is completed at time t. At least one embodiment of the invention can handle both minisum and minimax objective functions. The minisum (resp. minimax) objective minimizes the sum (resp. maximum) of the cost functions over all flows. These problems can be collectively referred to herein as precedence constrained malleable scheduling with linear speed-up. This general cost model can solve commonly used scheduling objectives including weighted average completion time, makespan (maximum completion time), average and maximum stretch, and deadline-based metrics associated with number of tardy jobs, service level agreements, etc.
The scheduling algorithm implemented in accordance with at least one embodiment of the invention includes three sequential stages, described at a high level as follows.
The first stage considers each flow j separately, and converts the precedence constraints for each flow into a chain of precedence constraints. As used herein, a chain precedence on elements {ei: 1≦i≦n} is a total order, such as e1e2 . . . en. This first stage additionally creates a pseudo-schedule for each flow that assumes an infinite number of processors, but respects precedence constraints and the bounds δi on jobs i. Also, in this first stage, the pseudo-schedule is partitioned into a chain of pseudo-jobs, where each pseudo-job k corresponds to a maximal interval in the pseudo-schedule with uniform processor usage. Just like the original jobs, each pseudo-job k specifies a size sk and bound δk of the maximum number of processors on which it can be run. However, unlike jobs, the bound δk of a pseudo-job may be larger than P.
The second stage treats each flow as a chain of pseudo-jobs, and obtains a malleable schedule of pseudo-jobs. This stage has two components. The first component includes obtaining a bi-criteria approximation algorithm in the special case of metrics based on strict deadlines, employing a natural greedy scheme. The second component includes obtaining a schedule for general cost metrics, by reduction to strict deadline metrics. For minisum cost functions, the second stage includes formulating a minimum cost flow sub-problem based on the cost metric, which can be solved efficiently. The solution to this sub-problem is used to derive a deadline for each flow, wherein the deadline is to be used in the greedy scheme. For minimax cost metrics, it is not necessary to solve a minimum cost flow problem. Instead, the scheme uses a bracket and bi-section scheme, each phase of which produces natural deadlines for each chain, and which involves solving the greedy scheme multiple times. At this point (that is, after stage two), a malleable schedule for the pseudo-jobs has been produced, satisfying the chain precedence within each flow as well as the bounds δk.
The third stage combines stages one and two. Specifically, the third stage includes transforming the malleable schedule of pseudo-jobs into a malleable schedule for the original jobs, while respecting the precedence constraints and bounds δi. This is referred to herein as shape shifting. Specifically, this stage includes converting the malleable schedule of each pseudo job k into a malleable schedule for the (portions) of jobs i for which it comprises.
As described herein, the first stage of at least one embodiment of the invention includes converting general precedence constraints to chains. A procedure to convert an arbitrary precedence constraint on jobs into a chain constraint on “pseudo-jobs” includes the following. Consider any flow with n jobs, where each job iε[n] has size si and processor bound δi. The precedence constraints are given by a directed acyclic graph on the jobs, and a pseudo-schedule for the flow is constructed as follows. Allocate each job iε[n] its maximal number δi of processors, and assign job i the smallest start time bi≧0 such that for all i1i2 it is true that
It should be understood that the start times {bi}i−1n can be computed via dynamic programming. The pseudo-schedule runs each job i on δi processors, between time bi and
Given an infinite number of processors, the pseudo-schedule is a valid schedule satisfying precedence.
Next, pseudo-jobs corresponding to this flow are constructed. Let
denote the completion time of the pseudo-schedule; observe that T equals the critical path bound of the flow. The time interval [0, 7] is partitioned into maximal intervals I1, . . . , Ih so that the set of jobs processed by the pseudo-schedule in each interval remains fixed. For each kε[h], if rk denotes the total number of processors being used during Ik, pseudo-job k is defined to have processor bound δ(k):=rk and size s(k):=rk·|Ik|, which is the total work done by the pseudo-schedule during Ik. Note that a pseudo-job includes portions of work from multiple jobs; moreover, it is possible that rk>P because the pseudo-schedule is defined independent of P. Additionally, the chain precedence constraint 12 . . . h is enforced on pseudo-jobs.
By way of example,
As also described herein, the second stage of at least one embodiment of the invention includes scheduling flows with chain precedence constraints. Consider a malleable scheduling problem on P parallel processors with chain precedence constraints and general cost functions. Each chain jε[m] is a sequence k1jk2j . . . kn(j)j of pseudo-jobs, where each pseudo-job k has a size s(k) and specifies a maximum number δk of processors on which it can be run. Note that the δk s may be larger than P. Each chain jε[m] also specifies a non-decreasing cost function ωj: +→+, where wj(t) is the cost incurred when chain j is completed at time t. An objective is to find a malleable schedule on P identical parallel processors that satisfies precedence constraints and minimizes the total cost.
Malleable schedules for pseudo-jobs (resp. chains of pseudo-jobs) are defined identically to jobs (resp. flows). To reduce notation, a malleable schedule for chain j can be denoted by a sequence τj=τ1j, . . . , τn(j)j of schedules for its pseudo-jobs, where τrj is a malleable schedule for pseudo-job krj for each rε[n(j)]. Note that chain precedence implies that for each rε{1, . . . , n(j)−1}, the start time of kr+1j, S(τr+1j)≧C(τrj), the completion time of krj. The completion time of this chain is C(τj):=C(τn(j)j).
Consider the problem of scheduling chains on P parallel processors under a strict deadline metric. That is, each chain jε[m] has a deadline dj and its cost function is: wj(t)=0 if t≦dj, and ∞ otherwise.
In an example embodiment of the invention, a natural greedy algorithm can be applied. By renumbering chains, assume that d1≦ . . . ≦dm. The algorithm schedules chains in increasing order of deadlines, and within each chain, the algorithm schedules pseudo-jobs greedily (by allocating the maximum possible number of processors).
A description of such a greedy scheme is depicted in
Additionally, consider the problem of scheduling chains on P parallel processors under arbitrary minisum metrics. Recall that there are m chains, each having a non-decreasing cost function φj:+→+. Such a scheme can operate in two phases. In the first phase, each chain is treated as a certain volume of work, and a minimum cost flow sub-problem is formulated using the cost functions wjs. The solution to this sub-problem is used to determine candidate deadlines {dj}j=1m for the chains. Further, in the second phase, the algorithm for deadline-metrics is run using {dj}j=1m to obtain the final solution.
As noted herein, at least one embodiment of the invention includes generating a minimum cost flow. In such an embodiment, each chain jε[m] is treated as a work of volume Vj:=τi=1n(j)s(kij), which is the total size of pseudo-jobs in j. Note that a network flow instance includes a directed graph (V, E) with designated source/sink nodes and demand ρ, where each arc eεE has a capacity αe and cost (per unit of flow) of βe. A flow satisfies arc capacities and node conservation (in flow equals out flow), and an objective includes determining a flow of ρ units from source to sink having a minimum cost.
By way of example, the nodes of the flow network include {a1, . . . , am}∪{b1, . . . , bH}∪{r, r′}, where r denotes the source and r′ the sink. The nodes ajs correspond to chains and bts correspond to intervals [t−1, t) in time. The arcs include E=E1∪E2 ∪E3 ∪E4, where:
and capacity ∞,
Accordingly, an example embodiment of the invention includes setting the demand ρ:=Σi=1mVj, and computing a minimum cost flow f:E→+. Notice that, by definition of arc capacities, any ρ-unit flow must send exactly Vj units through each node aj(jε[m]). Moreover, this network flow instance is a valid relaxation of any malleable schedule, so the total cost of flow f is less than or equal to opt, the optimal value of the malleable scheduling instance.
See
Additionally, as detailed herein, at least one embodiment of the invention includes obtaining candidate deadlines. Accordingly, the flow f can be rounded to obtain deadlines dj for each chain jε[m]. Define d1j:=arg min{t:Σs=1tf(aj, bs)≧Vj/2}, for all jε[M]. In other words, dj corresponds to the “half completion time” of chain j given by the network flow f. Because wj(•) is non-decreasing and Σt≧d
∀jε[m].
Note that the right-hand side of the previous equation is at most twice the cost of arcs leaving node aj. Thus, given a schedule that completes each chain j by its deadline dj, the total cost Σj−1mwj(dj)≦2·opt. Moreover, by definition of the arcs E2, dj≧Qj≧(critical path of chain j), ∀jε[m]. Also, by the arc capacities on E3, Σj−1mΣs=1tf(aj, bs)≦P·t, for all t ε[H].
By way of illustration, assume a renumbering of the chains in deadline order so that d1≦d2≦ . . . ≦dm. Then, using the definition of deadlines (as half completion times) and the above inequality for t=dj,
∀jε[m].
Further, at least one embodiment of the invention includes solving a deadline-metric sub-problem. Such an embodiment includes applying the algorithm for scheduling with deadline metrics using the deadlines {dj}j=1m computed above.
A similar algorithm can be employed for minimax metrics. For example, such an algorithm assumes a bound M such that M≦opt≦(1+ε)M for some ε>0, and attempts to find a schedule of minimax cost of at most M. The final algorithm performs a bracket and bi-section search on M and returns the solution corresponding to the smallest feasible M. As with the minisum objective, the algorithm here also relies on a reduction to the deadline metric, as detailed as follows.
Step 1: Obtain deadlines. Define, for each chain, jε[m], its deadline Dj:=arg max {t: wj (t)≦M}.
Step 2: Solve deadline sub-problem. Run the algorithm for deadline-metrics using the obtained deadlines {Dj}j=1m. If the deadline algorithm declares unfeasibility, the estimate M is too low. Otherwise, a schedule having minimax cost M is obtained. Start the algorithm with a value M corresponding to the critical path bound.
As also described herein, the third stage of at least one embodiment of the invention includes combining the output of stages one and two, and converting any malleable schedule of pseudo-jobs and chains into a valid schedule of the original jobs and flows. Consider the schedule of each pseudo-job k separately, and using a generalization of McNaughton's Rule, construct a malleable schedule for the (portions of) jobs comprising pseudo-job k. The original precedence constraints are satisfied because the chain constraints are satisfied on pseudo-jobs, and the jobs participating in any single pseudo-job are independent.
Consider any pseudo-job k that corresponds to interval Ik in the pseudo-schedule (recall stage one), during which jobs S⊂[n] are executed in parallel for a total of rk=Σiεs δi processors. Consider also any malleable schedule of pseudo-job k that corresponds to a histogram σ (of processor usage) having area sk=|Ik|·rk and maximum number of processors at most rk.
At least one embodiment of the invention also includes shape-shifting a pseudo-schedule for S in Ik into a valid schedule given by histogram σ. The histogram σ is decomposed into intervals ℑ of constant numbers of processors. For each interval Jεℑ having width (number of processors) σ(J), the work is scheduled from a time
sub-interval of Ik; observe that the respective areas in a and Ik are equal. Because ΣJΣℑ|J|·σ(J)=sk=|Ik|·rk, taking such schedules over all Jεℑ gives a full schedule for Ik. For a particular interval J, at least one embodiment of the invention includes applying McNaughton's Rule to schedule the work from its Ik sub-interval. McNaughton's Rule functions here as a wrap-around scheme: Order the jobs, and for the first job fill the area vertically, one processor at a time, until the total amount of work involving that job has been allotted. Then, starting where the scheme left off, fill the area needed for the second job, and so on. Accordingly, all appropriate constraints are satisfied.
If the problem is mini-max, bracket and bisection module 914 implements a bracket and bisection algorithm invoking multiple greedy modules until the optimal value is computed. Additionally, as depicted in
Additionally, at least one embodiment of the invention includes converting one or more histograms into one or more slot schedules based on the maximum number of slots assigned to each MapReduce job. Further, as described herein, at least one embodiment of the invention includes removing unused slots from the maximum number of slots assigned to each MapReduce job.
Step 1004 includes determining a flow schedule for the multiple MapReduce flows based on consideration of a given metric (for example, a metric associated with completion time of each MapReduce flow), wherein said flow schedule comprises a number of slots allotted to each of the multiple MapReduce flows, and wherein said number of slots is less than or equal to a number of the one or more MapReduce jobs within each corresponding MapReduce flow. The techniques depicted in
Determining a flow schedule can include selecting a number of slots for each MapReduce flow. A flow schedule such as determined in step 1004 can result in performance of the same amount of work for each of the multiple MapReduce flows. Additionally, a flow schedule such as determined in step 1004 can include a scheme pertaining to one or more deadline-based metrics, and/or a scheme pertaining to one or more non-deadline-based metrics.
Step 1006 includes transforming each job schedule into the flow schedule to allocate resources for the multiple MapReduce flows in the cluster environment without violating a precedence constraint of any of the multiple MapReduce flows. Further, in at least one embodiment of the invention, steps 1002, 1004 and 1006 can be executed upon arrival of one or more MapReduce jobs into the cluster environment, upon departure of one or more MapReduce jobs from the cluster environment, upon a transition of one or more MapReduce jobs in the cluster environment, and/or upon completion of a pre-specified interval of time.
The techniques depicted in
Additionally, the techniques depicted in
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in a computer readable medium having computer readable program code embodied thereon.
An aspect of the invention or elements thereof can be implemented in the form of an apparatus including a memory and at least one processor that is coupled to the memory and operative to perform exemplary method steps.
Additionally, an aspect of the present invention can make use of software running on a general purpose computer or workstation. With reference to
Accordingly, computer software including instructions or code for performing the methodologies of the invention, as described herein, may be stored in associated memory devices (for example, ROM, fixed or removable memory) and, when ready to be utilized, loaded in part or in whole (for example, into RAM) and implemented by a CPU. Such software could include, but is not limited to, firmware, resident software, microcode, and the like.
A data processing system suitable for storing and/or executing program code will include at least one processor 1102 coupled directly or indirectly to memory elements 1104 through a system bus 1110. The memory elements can include local memory employed during actual implementation of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during implementation.
Input/output or I/O devices (including but not limited to keyboards 1108, displays 1106, pointing devices, and the like) can be coupled to the system either directly (such as via bus 1110) or through intervening I/O controllers (omitted for clarity).
Network adapters such as network interface 1114 may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
As used herein, including the claims, a “server” includes a physical data processing system (for example, system 1112 as shown in
As noted, aspects of the present invention may take the form of a computer program product embodied in a computer readable medium having computer readable program code embodied thereon. Also, any combination of computer readable media may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a computer readable medium may be transmitted using an appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of at least one programming language, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. Accordingly, an aspect of the invention includes an article of manufacture tangibly embodying computer readable instructions which, when implemented, cause a computer to carry out a plurality of method steps as described herein.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, component, segment, or portion of code, which comprises at least one executable instruction for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
It should be noted that any of the methods described herein can include an additional step of providing a system comprising distinct software modules embodied on a computer readable storage medium; the modules can include, for example, any or all of the components detailed herein. The method steps can then be carried out using the distinct software modules and/or sub-modules of the system, as described above, executing on a hardware processor 1102. Further, a computer program product can include a computer-readable storage medium with code adapted to be implemented to carry out at least one method step described herein, including the provision of the system with the distinct software modules.
In any case, it should be understood that the components illustrated herein may be implemented in various forms of hardware, software, or combinations thereof, for example, application specific integrated circuit(s) (ASICS), functional circuitry, an appropriately programmed general purpose digital computer with associated memory, and the like. Given the teachings of the invention provided herein, one of ordinary skill in the related art will be able to contemplate other implementations of the components of the invention.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a,” “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of another feature, integer, step, operation, element, component, and/or group thereof.
The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed.
At least one aspect of the present invention may provide a beneficial effect such as, for example, optimizing slot-based scheduling of MapReduce jobs by considering scheduling metrics at the flow-graph level of atomicity.
The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.
This invention was made with Government support under Contract No. H98230-11-C-0276 awarded by Department of Defense (DOD). The Government has certain rights in this invention.