Enterprises such as companies, educational organizations, and government agencies may employ relatively large volumes of data that are often subject to analysis. A substantial amount of the data of an enterprise can be unstructured data, which is data that is not in the format used in typical commercial databases, and therefore cannot be processed efficiently.
The detailed description will refer to the following drawings, in which:
MapReduce is a programming framework designed for processing large volumes of data, including unstructured data, in parallel by dividing the work into a set of independent tasks that are executed on a distributed computing system. Unstructured data refers to data not formatted according to a format of a relational database management system. An open-source MapReduce framework is Hadoop. The MapReduce framework is increasingly being used across enterprises for distributed, advanced data analytics and for enabling new applications associated with data retention, regulatory compliance, e-discovery, and litigation issues. The infrastructure associated with the MapReduce framework can be shared by various diverse applications, for enhanced efficiency.
A MapReduce framework includes a master node and multiple slave nodes (also referred to as worker nodes). A MapReduce job submitted to the master node is divided into multiple map tasks and multiple reduce tasks, which are executed in parallel by the slave nodes. The map tasks are defined by a map function, while the reduce tasks are defined by a reduce function. Each of the map and reduce functions are user-defined functions that are programmable to perform target functionalities.
The map function processes segments of input data to produce intermediate results, where each of the multiple map tasks (that are based on the map function) process corresponding segments of the input data. For example, the map tasks process input key-value pairs to generate a set of intermediate key-value pairs. The reduce tasks (based on the reduce function) produce an output from the intermediate results. For example, the reduce tasks merge the intermediate values associated with the same intermediate key.
More specifically, the map function takes input key-value pairs (k1, v1) and produces a list of intermediate key-value pairs (k2, v2). The intermediate values associated with the same key k2 are grouped together and then passed to the reduce function. The reduce function takes an intermediate key k2 with a list of values and processes them to form a new list of values (v3), as expressed below.
map(k1,v1)→list(k2,v2)
reduce(k2,list(v2))→list(v3)
The multiple map tasks and multiple reduce tasks (of multiple jobs) are designed to be executed in parallel across resources of a distributed computing platform.
In a complex system, it can be relatively difficult to efficiently allocate resources to jobs and to schedule the tasks of the jobs for execution using the allocated resources, while meeting performance goals of the jobs. The jobs to be executed in a system can have different performance goals—some jobs can be jobs performed in response to queries where the requesters expect relatively quick responses, while other jobs can be long production jobs (e.g., routine data analysis, etc.) that can run a relatively long time.
Disclosed herein is a system and corresponding method that allow specifying efficient allocations of resources to jobs and to scheduling jobs using the allocated resources in a manner to satisfy performance goals of the jobs. In an example, a scheduler determines job ordering and scheduling of tasks of corresponding jobs. The ordering of jobs can be according to respective performance goals of the jobs. The scheduler also receives as input resource allocations for the respective jobs. The resource allocations are determined based on employing a performance model that takes into account job profiles (of the respective jobs), where the determined allocations are able to satisfy the performance goals associated with the respective jobs. Given the ordering of the jobs and the determined resource allocations, the scheduler is able to schedule tasks of the jobs for execution.
The performance goal associated with a job can be expressed as a target completion time, which can be a specific deadline, or some other indication of a time duration within which the job should be executed. Other performance goals can be used in other examples. For example, a performance goal can be expressed as a service level objective (SLO), which specifies a level of service to be provided (expected performance, expected time, expected cost, etc.).
Although reference is made to the MapReduce framework in some examples, the herein disclosed techniques or mechanisms can be applied in other distributed processing frameworks that employ map tasks and reduce tasks. More generally, “map tasks” are used to process input data to output intermediate results, based on a predefined function that defines the processing to be performed by the map tasks. “Reduce tasks” take as input partitions of the intermediate results to produce outputs, based on a predefined function that defines the processing to be performed by the reduce tasks. The map tasks are considered to be part of a map stage, whereas the reduce tasks are considered to be part of a reduce stage. In addition, although reference is made to unstructured data in some examples, techniques or mechanisms can also be applied to structured data formatted for relational database management systems.
The storage modules 102 can be implemented with storage devices such as disk-based storage devices or integrated circuit storage devices. In some examples, the storage modules 102 correspond to respective different physical storage devices. In other examples, plural ones of the storage modules 102 can be implemented on one physical storage device, where the plural storage modules correspond to different logical partitions of the storage device.
The system of
A “node” refers generally to processing infrastructure to perform computing operations. A node can refer to a computer, or a system having multiple computers. Alternatively, a node can refer to a CPU within a computer. As yet another example, a node can refer to a processing core within a CPU that has multiple processing cores. More generally, the system can be considered to have multiple processors, where each processor can be a computer, a system having multiple computers, a CPU, a core of a CPU, or some other physical processing partition.
In an example, a scheduler 108 in the master node 110 is configured to perform scheduling of jobs on the slave nodes 112. The slave nodes 112 are considered the working nodes within the cluster that makes up the distributed processing environment.
Each slave node 112 has a corresponding number of map slots and reduce slots, where map tasks are run in respective map slots, and reduce tasks are run in respective reduce slots. The number of map slots and reduce slots within each slave node 112 can be preconfigured, such as by an administrator or by some other mechanism. The available map slots and reduce slots can be allocated to the jobs. The map slots and reduce slots are considered the resources used for performing map and reduce tasks. A “slot” can refer to a time slot or alternatively, to some other share of a processing resource that can be used for performing the respective map or reduce task. Depending upon the load of the overall system, the number of map slots and number of reduce slots that can be allocated to any given job can vary.
The slave nodes 112 may periodically (or repeatedly) send messages to the master node 110 to report the number of free slots and the progress of the tasks that are currently running in the corresponding slave nodes.
Each map task processes a logical segment of the input data that generally resides on a distributed file system, such as the distributed file system 104 shown in
The reduce stage (that includes the reduce tasks) has three phases: shuffle phase, sort phase, and reduce phase. In the shuffle phase, the reduce tasks fetch the intermediate data from the map tasks. In the sort phase, the intermediate data from the map tasks are sorted. An external merge sort is used in case the intermediate data does not fit in memory. Finally, in the reduce phase, the sorted intermediate data (in the form of a key and all its corresponding values, for example) is passed on the reduce function. The output from the reduce function is usually written back to the distributed file system 104.
In addition to the scheduler 108, the master node 110 of
The master node 110 also includes a resource estimator 116 that is able to allocate resources, such as numbers map slots and reduce slots, to a job, given a performance goal (e.g., target completion time) associated with the job. The resource estimator 116 receives as input a job profile, which can be a job profile created by the job profiler 120, or a job profile previously stored in the job profile database 122. The resource estimator 116 also uses a performance model that calculates a performance parameter (e.g., time duration of the job) based on the characteristics of the job profile, a number of map tasks of the job, a number of reduce tasks of the job, and an allocation of resources (e.g., number of map slots and number of reduce slots).
Using the performance parameter calculated by the performance model, the resource estimator 116 is able to determine feasible allocations of resources to assign to the given job to meet the performance goal associated with the given job. As noted above the performance goal may be expressed as a target completion time, which can be a target deadline or a target time duration, by or within which the job is to be completed. The performance parameter that is calculated by the performance model may be a time duration value corresponding to the amount of time the job would take assuming a given allocation of resources. The resource estimator 116 is able to determine whether any particular allocation of resources can meet the performance goal associated with a job by comparing a value of the performance parameter calculated by the performance model to the performance goal.
As noted above, the resource estimator 116 is able to calculate multiple feasible solutions of allocations of resources to perform a given job, where a “feasible solution” refers to an allocation of resources that allows a system to execute the given job while satisfying the performance goal associated with the given job. The multiple feasible solutions of allocations of resources for the given job can be added to a set of feasible solutions. Then, using some predefined criterion, one of the feasible solutions can be selected from the set to determine a specific allocation of resources for the given job.
The resource estimator 116 may be able to select one of the feasible solutions that is associated with a minimum amount of allocated resources (e.g. minimum total number of map and reduce slots) that allows the given job to meet its performance goal. The selection of the feasible solution with the minimum amount of allocated resources may use a Lagrange's multiplier technique, which is a technique that finds a maxima or minima of a function subject to constraints. The Lagrange's multiplier technique is discussed further below. The resource estimator 116 may use other techniques for selecting from among multiple feasible solutions for output as a selected solution that includes a specific allocation of resources.
As shown in
The scheduler 108 is able to listen for events such as job submissions, heartbeats from the slave nodes 118 (indicating availability of map and/or reduce slots, and/or other events). The scheduling functionality of the scheduler 108 can be performed in response to detected events.
The scheduler 108 is able to order the jobs to be executed according to performance goals of the respective jobs. For example, if the performance goals are corresponding deadlines of the jobs, the scheduler 108 is able to employ an earliest deadline first technique to perform job ordering, where the job with the earliest deadline is ordered ahead of other jobs. Effectively, the earliest deadline first technique orders jobs starting with the job having the earliest deadline, and progressing to the job with the latest deadline. Alternately, other ordering techniques for ordering a collection of jobs may be used.
According to the allocated amount of resources for each job and the ordering of the jobs, the scheduler 108 is able to schedule tasks of jobs to respective map and reduce slots. There may also be different classes of jobs, including jobs with deadlines and jobs without deadlines. The scheduler 108 can assign jobs with deadlines higher priorities over jobs without deadlines. However, once jobs with deadlines are assigned their respective allocations of map and reduce slots, the remaining slots can be distributed to other classes of jobs.
The scheduling of job tasks in respective slots (as performed by the scheduler 108) is provided as output to a resource allocator 126, which performs the assignment of tasks to respective slots (according to the scheduling). The resource allocator 126 ensures that the number of map and reduce slots assigned to any given job remains below allocated numbers for each given job as provided by the resource estimator 116. Note that if there are spare slots that are unused, the resource allocator 126 can employ further policy to use such slots for performing tasks of jobs.
Although the scheduler 108 and resource allocator 126 are depicted as separate modules in
The performance goal associated with a job may be a target completion time (a deadline or time duration of the job). However, it may alternately be any other performance goal.
As depicted in
A “map wave” refers to an iteration of the map stage. If the number of allocated map slots is greater than or equal to the number of map tasks, then the map stage can be completed in a single iteration (single wave). However, if the number of map slots allocated to the map stage is less than the number of map tasks, then the map stage would have to be completed in multiple iterations (multiple waves). Similarly, the number of iterations (waves) of the reduce stage is based on the number of allocated reduce slots as compared to the number of reduce tasks.
Thus, it can be observed from the examples of
The master node 110 also determines (at 306) a respective allocation of resources for each of the jobs based on the corresponding job profile. This task can be performed by the resource estimator 116. For example, the resource estimator 116 can select an allocation of resources (e.g. number of map slots and number of reduce slots) for each job by selecting the allocation with the minimum amount of resources (e.g. minimum total number of map and reduce slots). The selected allocation can be from among multiple feasible solutions.
Based on the ordering of the jobs and the respective allocated amounts of resources for the jobs, the scheduler can schedule (at 308) tasks (including map tasks and reduce tasks) of the jobs for execution.
Further details regarding the job profile, performance model, determination of solutions of resource allocations, and scheduling of job tasks are discussed below.
A job profile reflects performance invariants that are independent of the amount of resources assigned to the job over time, for each of the phases of the job: map, shuffle, sort, and reduce phases. The job profile properties for each of such phases are provided below.
The map stage includes a number of map tasks. To characterize the distribution of the map task durations and other invariant properties, the following metrics can be specified in some examples:
(Mmin,Mavg,Mmax,AvgSizeMinput,SelectivityM), where
As described earlier, the reduce stage includes the shuffle, sort and reduce phases. The shuffle phase begins only after the first map task has completed. The shuffle phase (of any reduce wave) completes when the entire map stage is complete and all the intermediate data generated by the map tasks have been shuffled to the reduce tasks.
The completion of the shuffle phase is a prerequisite for the beginning of the sort phase. Similarly, the reduce phase begins only after the sort phase is complete. Alternately, instead of performing the shuffle and sort phases of the reduce stage in sequence, for enhanced performance efficiency, the shuffle and sort phases of the reduce stage can be interleaved. The profiles of the shuffle, sort, and reduce phases are represented by their average and maximum time durations. In addition, for the reduce phase, the reduce selectivity, denoted as SelectivityR, is computed, which is defined as the ratio of the reduce data output size to its data input size.
The shuffle phase of the first reduce wave may be different from the shuffle phase that belongs to the subsequent reduce waves (after the first reduce wave). This can happen because the shuffle phase of the first reduce wave overlaps with the map stage and depends on the number of map waves and their durations. Therefore, two sets of measurements are collected: (Shavg1,Shmax1) for a shuffle phase of the first reduce wave (referred to as the “first shuffle phase”), and (Shavgtyp,Shmaxtyp) for the shuffle phase of the subsequent reduce waves (referred to as “typical shuffle phase”). Since techniques are looking for the performance invariants that are independent of the amount of allocated resources to the job, a shuffle phase of the first reduce wave is characterized in a special way and the parameters (Shavg1 and Shmax1) reflect only wdurations of the non-overlapping portions (non-overlapping with the map stage) of the first shuffle. In other words, the durations represented by Shavg1 and Shmax1 represent portions of the duration of the shuffle phase of the first reduce wave that do not overlap with the map stage.
The job profile in the shuffle phase is characterized by two pairs of measurements:
(Shavg1,Shmax1),(Shavgtyp,Shmaxtyp).
If the job execution has only a single reduce wave, the typical shuffle phase duration is estimated using the sort benchmark (since the shuffle phase duration is defined entirely by the size of the intermediate results output by the map stage).
A performance model used for determining a feasible allocation of resources for a job calculates a performance parameter. The performance parameter may be expressed as an upper bound parameter or a lower bound parameter or some determined intermediate parameter between the lower bound and upper bound (e.g. average of the lower and upper bounds). If the performance parameter is a completion time value, the lower bound parameter may be a lower bound completion time, the upper bound parameter is an upper bound completion time, and the intermediate performance parameter is an intermediate completion time (e.g. average completion time that is an average of the upper and lower completion). However, instead of calculating the average of the upper bound and lower bound to provide the intermediate performance parameter, a different intermediate parameter can be calculated, such as a value based on a weighted average of the lower and upper bounds or application of some other predefined function on the lower and upper bounds.
In some examples, the lower and upper bounds are for a makespan (a completion time of the job) of a given set of n (n>1) tasks that are processed by k (k>1) servers (or by k slots in a MapReduce environment). Let T1, T2, . . . , Tn be the durations of n tasks of a given job. Let k be the number of slots that can each execute one task at a time. The assignment of tasks to slots is done using a simple, online, greedy algorithm, e.g. assign each task to the slot with the earliest finishing time.
Let μ=(Σi=1nTi)/n and λ=maxi {Ti} be the mean and maximum durations of the n tasks, respectively. The makespan of the greedy task assignment is at least n·μ/k and at most (n−1)·μ/k+λ. We call this statement as a Makespan Theorem. The lower bound is trivial, as the best case is when all n tasks are equally distributed among the k slots (or the overall amount of work n·μ is processed as fast as it can by k slots). Thus, the overall makespan (completion time of the job) is at least n·μ/k (lower bound of the completion time).
For the upper bound of the completion time for the job, the worst case scenario is considered, i.e., the longest task (T)ε(T1, T2, . . . , Tn) with duration λ is the last task processed. In this case, the time elapsed before the last task is scheduled is (Σi=1n−1Ti)/k≦(n−1)·μ/k. Thus, the makespan of the overall assignment is at most (n−1)·μ/k+λ. These bounds are particularly useful when λ<<n·μ/k, in other words, when the duration of the longest task is small as compared to the total makespan.
The difference between lower and upper bounds (of the completion time) represents the range of possible job completion times due to non-determinism and scheduling. As discussed below, these lower and upper bounds, which are part of the properties of the performance model, are used to estimate a completion time for a corresponding job J.
The given job J has a given profile created by the job profiler 120 (
Let Mavg and Mmax be the average and maximum time durations of map tasks (defined by the job J profile). Then, based on the Makespan theorem, the lower and upper bounds on the duration of the entire map stage (denoted as TMlow and TMup, respectively) are estimated as follows:
T
M
low
N
M
J
/S
M
J
·M
avg, (Eq. 1)
T
M
up=(NMJ−1)/SMJ·Mavg+Mmax. (Eq. 2)
The “J” superscript in NMJ and SMJ indicates that the respective parameter is associated with job J. Stated differently, the lower bound of the duration of the entire map stage is based on a product of the average duration (Mavg) of or map tasks multiplied by the ratio of the number of map tasks (NMJ) to the number of allocated map slots (SMJ). The upper bound of the duration of the entire map stage is based on a sum of the maximum duration of map tasks (Mmax) and the product of Mavg with (NMJ−1)/SMJ. Thus, it can be seen that the lower and upper bounds of durations of the map stage are based on properties of the job J profile relating to the map stage, and based on the allocated number of map slots.
The reduce stage includes shuffle, sort and reduce phases. Similar to the computation of the lower and upper bounds of the map stage, the lower and upper bounds of time durations for each of the shuffle phase (TShlow,TShup), sort phase (TSortlow,TSortup), and reduce phase (TRlow,TRup) are computed. The computation of the Makespan theorem is based on the average and maximum durations of the tasks in these phases (respective values of the average and maximum time durations of the shuffle phase, the average and maximum time durations of the sort phase, and the average and maximum time duration of the reduce phase) and the numbers of reduce tasks NR and allocated reduce slots SR, respectively. The formulae for calculating (TShlow,TShup), (TSortlow,TSortup), and (TRlow,TRup) are similar to the formulae for calculating TMup and TMup set forth above, except variables associated with the reduce tasks and reduce slots and the respective phases of the reduce stage are used instead.
The subtlety lies in estimating the duration of the shuffle phase. As noted above, the first shuffle phase is distinguished from the task durations in the typical shuffle phase (which is a shuffle phase subsequent to the first shuffle phase). As noted above, the first shuffle phase includes measurements of a portion of the first shuffle phase that does not overlap the map stage. The portion of the typical shuffle phase in the subsequent reduce waves (after the first reduce wave) is computed as follows:
where Shavgtyp is the average duration of a typical shuffle phase, and Shmaxtyp is the average duration of the typical shuffle phase. The formulae for the lower and upper bounds of the overall completion time of job J are as follows:
T
J
low
=T
M
low
+Sh
avg
1
+T
Sh
low
+T
Sort
low
+T
R
low, (Eq. 5)
T
J
up
=T
M
up
+Sh
max
1
+T
Sh
up
+T
Sort
up
+T
R
up, (Eq. 6)
where Shavg1 is the average duration of the first shuffle phase, and Shmax1 is the maximum duration of the first shuffle phase. TJlow and TJup represent optimistic and pessimistic predictions (lower and upper bounds) of the job J completion time. Thus, it can be seen that the lower and upper bounds of time durations of the job J are based on properties of the job J profile and based on the allocated numbers of map and reduce slots. The properties of the performance model, which include TJlow and TJup, are thus based on both the job profile as well as allocated numbers of map and reduce slots.
An intermediate performance parameter value, such as an average value between the lower and upper bounds, TJavg is defined as follows:
T
J
qvg=(TMup+)TJlow/2. (Eq. 7)
Eq. 5 for TJlow can be rewritten by replacing its parts with Eq. 1 and Eq. 3 and similar equations for sort and reduce phases as follows:
The alternative presentation of Eq. 8 allows the estimates for completion time to be expressed in a simplified form shown below:
where AJlow=Mavg,BJlow=(Shavgtyp+Ravg), and CJlow=Shavg1−Shavgtyp. Eq. 9 provides an explicit expression of a job completion time as a function of map and reduce slots allocated to job J for processing its map and reduce tasks, i.e., as a function of (NMJ,NRJ) and (SMJ,SRJ). The equation for TJup and Tavg J can be rewritten similarly.
The following discusses how an allocation with a minimum number of map and reduce slots may be determined, using a Lagrange's multiplier technique.
The allocations of map and reduce slots to job J (with a known profile) for meeting deadline T can be found using Eq. 9 or similar equations for the upper bound or the average completion time. A simplified form of this equation is shown below:
where m is the number of map slots allocated to the job J, r is the number of reduce slots allocated to the job J, and a, b and D represent the corresponding constants (expressions) from Eq. 9 or similar other equations for TJup and TJavg.
As shown in
These different feasible resource allocations (represented by points along the curve 402) correspond to different amounts of resources that allow the deadline T to be satisfied.
The minima (C) on the curve 404 may be calculated using Lagrange's multiplier technique. The technique seeks to minimize f(m,r)=m+r that satisfy the equation:
The technique sets
where λ represents a Lagrange multiplier.
Differentiating Λ partially with respect to m, r and λ and equating to zero, the following are obtained:
Solving these equations simultaneously, the variables m and r are obtained:
These values for m (number of map slots) and r (number of reduce slots) reflect the optimal allocation of map and reduce slots for a job such that the total number of slots used is minimized while meeting the deadline of the job. In practice, the m and r values are integers—hence, the values found by Eq. 14 are rounded up and used as approximations.
An example technique performed by the master node 110 (
The pseudo-code above is explained in connection with
The master node 110 also determines (at 506, line 3 of pseudo-code) the minimum allocation of resources (the allocation with the minimum total number of map and reduce slots) for job j, such as by use of the Lagrange's multiplier technique (discussed above). This minimum allocation of resources is represented as (mj, rj), where mj represents the allocated number of map slots, and rj represents the number of reduce slots.
The master node 110 further determines (at 508, line 4 of the pseudo-code) if a heartbeat is received from slave node n. A heartbeat is sent by a slave node to indicate availability of a slot (map slot and/or reduce slot). In response to the heartbeat, the master node 110 orders (at 510, line 5 of the pseudo-code) a data structure jobs, which contains the jobs that are to be executed in the system. The ordering of jobs in the data structure jobs may be in an order of earliest deadline.
Next, for each free slot s (free map slot or free reduce slot) and for each job j in jobs, the master node 110 launches (at 512) map tasks and/or reduce tasks according to predefined criteria, as specified in lines 6-21 of the pseudo-code. Since the jobs in the data structure jobs are sorted according to the deadlines of the jobs, the processing performed at lines 6-21 of the pseudo-code would consider jobs with earlier deadlines before jobs with later deadlines.
Line 8 of the pseudo-code determines if a parameter RunningMapsj is less than the number of map slots allocated to job j (mj), and if the free slot (s) is a map slot. The parameter RunningMapsj represents the how may map slots are already used for executing map tasks of job j. If the condition at line 8 of the pseudo-code is true, then line 9 of the pseudo-code determines if job j has an unlaunched map task t with data on node n—if so, then this map task t is launched with local data on node n (line 10 of the pseudo-code). The pseudo-code at lines 9-10 favor execution of a map task t that has data on node n—the availability of local data on node n for the map task t increases efficiency of execution since network communication is reduced or avoided in executing task t on node n.
However, if there is no map task t with local data on node n, line 11 of the pseudo-code checks if job j has unlaunched map task t—if so, then map task t is launched on node n (line 12 of the pseudo-code). Note that the map task t launched at line 12 may not have local data on node n.
Line 15 of the pseudo-code checks to see if there are any finished map tasks for job j (based on determining if FinishedMapsj>0)—this check is performed since reduce tasks are performed after at least one map task completes. The parameter FinishedMapsj indicates a number of map tasks that have completed. Also, line 15 checks to determine if free slot (s) is a reduce slot, and if the number of reduce slots used by job j (RunningReducesj) is less than rj—if all three conditions of line 15 are true, then an unlaunched reduce task t from job j is launched (lines 16-17 of the pseudo-code).
Line 22 of the pseudo-code checks (at 514) to see if any task (map task or reduce task) has completed in node n. If so, then the minimum allocation of map slots and reduce slots (mj, rj) may be recomputed (at 516) based on a current time, a current progress of job j, and the deadline of job j (line 23 of the pseudo-code). The recomputing of the minimum allocation of map and reduce slots allows the system to ensure that the job j has sufficient resources to meets its deadline, given the progress of the job j. At any given point in time, the number of available map and/or reduce slots may be less than the number of map and reduce slots specified by a minimum allocation for job j. As a result, the job j may not be able to progress as quickly as anticipated, since insufficient resources are assigned to the job. The recomputation of the resource allocation for job j increases the likelihood that job j will be executed in time to meets its respective deadline.
Machine-readable instructions described above (including the various modules depicted in
Data and instructions are stored in respective storage devices, which are implemented as one or multiple computer-readable or machine-readable storage media. The storage media include different forms of memory including semiconductor memory devices such as dynamic or static random access memories (DRAMs or SRAMs), erasable and programmable read-only memories (EPROMs), electrically erasable and programmable read-only memories (EEPROMs) and flash memories; magnetic disks such as fixed, floppy and removable disks; other magnetic media including tape; optical media such as compact disks (CDs) or digital video disks (DVDs); or other types of storage devices. Note that the instructions discussed above may be provided on one computer-readable or machine-readable storage medium, or alternatively, may be provided on multiple computer-readable or machine-readable storage media distributed in a large system having possibly plural nodes. Such computer-readable or machine-readable storage medium or media is (are) considered to be part of an article (or article of manufacture). An article or article of manufacture may refer to any manufactured single component or multiple components. The storage medium or media may be located either in the machine running the machine-readable instructions, or located at a remote site from which machine-readable instructions may be downloaded over a network for execution.
Another exemplary method which may be performed by various modules in the master node 110 of
The exemplary method continues with ordering 602 the jobs according to performance goals of respective ones of the jobs into a hierarchy. The performance goals may be ordered, for example, based on deadlines with the most urgent deadline being at the top of the hierarchy. The exemplary process proceeds with allocating 604 to each of the jobs a minimum quantity of resources necessary to achieve the corresponding performance goal based on the corresponding job profile. The resources may be, for example, maps slots and reduce slots in at least one slave node 112.
The method then proceeds with allocating 606 a plurality of spare resources to at least one of the jobs. The spare resources may be additional map slots and reduce slots after the minimal amount of resources have been allocated to achieve each of the jobs' performance goals.
After the spare resources have been allocated, the method proceeds with receiving 608 a new job profile of a new job having a new performance goal. Next, the process proceeds with determining 610 whether the new performance goal of the new job may be achieved without deallocating the spare resources from the other jobs. For example, the system determines whether it may achieve the new performance goal only through the allocation of spare resources to the new job after those spare resources finish their respective tasks. If the performance goal of the new job cannot be met solely without additional resources, then the method continues with reallocating 612 spare resources from at least one of the other jobs to the new job to achieve the new performance goal without compromising the other performance goals of the other jobs. Since only spare resources are re-allocated, the processing of the new job will not compromise the system's ability to achieve the performance goals of the other jobs.
Yet another exemplary method which may be performed by various modules in the master node 110 of
The exemplary method includes allocating 702 map tasks and reduce tasks to a minimum quantity of maps slots and reduce slots to each of the jobs to complete each of the jobs within its respective deadline. The method then continues with evaluating 704 with the system a quantity of spare map slots and reduce slots. The spare map and reduce slots are the additional slots not allocated to any jobs after each of the job has had enough resources allocated to it to be completed before its respective deadline.
The method then continues with allocating 706 map tasks and reduce tasks of at least one of the jobs to the spare map slots and reduce slots. Thus, additional resources are allocated to at least one of the jobs to complete some of the jobs before its deadline. The method proceeds with receiving 708 a new job having a new deadline. The method then continues with analyzing 710 the new job to determine the quantity of map slots and reduce required to process the new job. Next, the method proceeds with determining 712 whether the new job may be processed before the new deadline through the allocation of spare map slots and spare reduce slots after those slots have finished processing their respective map tasks and reduce tasks of the other jobs. If the new job cannot be completed before its deadline, then the method continues with reallocating 714 a plurality of spare map slots and a plurality of spare reduce slots to the new job to complete the new job before the new deadline.
Another example technique performed by the master node 110 (