Patent Publication Number: US-8544094-B2

Title: Suspicious node detection and recovery in MapReduce computing

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a Divisional of U.S. application Ser. No. 12/651,100, filed Dec. 31, 2009, currently pending, the entirety of which is incorporated herein by reference. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to distributed computing for large data sets on clusters of computers and more particularly to suspicious node detection and recovery in MapReduce computing. 
     2. Description of the Related Art 
     Application server clusters have become common in the field of high-availability and high-performance computing. Application cluster-based systems exhibit three important and fundamental characteristics or properties: reliability, availability and serviceability. Each of these features is of paramount importance when designing a robust clustered system. Generally, a clustered system consists of multiple application server instances grouped together in a server farm of one or more server computing nodes that are connected over high-speed network communicative linkages. Each application server process in the application cluster can enjoy access to memory, possibly disk space and the facilities of a host operating system. 
     Among the many challenges faced by those who manage the capacity and performance of a clustered system is the allocation of network resources for consumption by a particular application or workload. Network resources in a cluster can be managed through agents known as workload managers. The workload managers can optimally assign different network resources within endpoint containers to handle selected workloads in an application. In many cases, workload managers can adjust the assignment of network resources based upon performance metrics measured through systems management components in the clustered system. 
     MapReduce is a parallel programming technique frequently used in Cloud computing environments. In other words, MapReduce is a framework for processing huge datasets on certain kinds of distributable problems using a large number of computers (nodes), collectively referred to as a cloud or cluster. Computational processing can occur on data stored either in a filesystem (unstructured) or within a database (structured). MapReduce has two main components a “Map” step and a “Reduce” step. 
     “Map” step: The master node takes the input, chops it up into smaller sub-problems, and distributes those to worker nodes. (A worker node may do this again in turn, leading to a multi-level tree structure.) The worker node processes that smaller problem, and passes the answer back to its master node. 
     “Reduce” step: The master node then takes the answers to all the sub-problems and combines them in a way to get the output—the answer to the problem it was originally trying to solve. 
     One advantage of MapReduce is that it allows for distributed processing of the map and reduction operations. Provided each mapping operation is independent of the other, all maps can be performed in parallel—though in practice it is limited by the data source and/or the number of CPUs near that data. Similarly, a set of ‘reducers’ can perform the reduction phase—all that is required is that all outputs of the map operation which share the same key are presented to the same reducer, at the same time. While this process can often appear inefficient compared to algorithms that are more sequential, MapReduce can be applied to significantly larger datasets than that which “commodity” servers can handle—a large server farm can use MapReduce to sort a petabyte of data in only a few hours. The parallelism also offers some possibility of recovering from partial failure of servers or storage during the operation: if one mapper or reducer fails, the work can be rescheduled—assuming the input data are still available. 
     However, in this computing configuration there are number possible attacks, including a rogue worker node that produces bad results, produces no results, produces results slowly, produce extra tasks, replaces good tasks with bad tasks “leaks” tasks or results to allow parties outside a firewall to see them. 
     It will be apparent to the skilled artisan, then, that security in Cloud computing environments can be complicated. In the presence of potentially malicious nodes in a public cloud, the master node needs to be able to both detect suspicious nodes and take corrective action when a suspicious node is detected 
     BRIEF SUMMARY OF THE INVENTION 
     Embodiments of the present invention address deficiencies of the art in respect to distributed computing for large data sets on clusters of computers and provide a novel and non-obvious method, system and computer program product for detecting and correcting malicious nodes in a cloud computing environment (e.g., MapReduce computing). In one embodiment of the invention, a computer-implemented method for detecting and correcting malicious nodes in a cloud computing environment can include selecting a task to dispatch to a first worker node, setting a suspicion index threshold for the selected task, determining a suspicion index for the selected task, comparing the suspicion index to the suspicion index threshold and receiving a result from a first worker node. 
     In one aspect of the embodiment, setting a suspicion index threshold for the selected task can include identifying an expected processing time for the selected task and identifying a configuration type of the first worker node. In another aspect of the embodiment, the determining a suspicion index for the selected task can include determining prior performance of the first worker node and determining a current workload of the first worker node. 
     Also, the computer-implemented method further can include applying a recovery action when the suspicion index exceeds the selected suspicion index threshold. The application of the recovery act can include selecting a second worker node for the selected task, discarding results returned by the first worker node and stopping further use of the first work node. 
     In another embodiment of the invention, a data processing system for detecting and correcting malicious nodes in a cloud computing environment can include a router configured for communicative coupling to one or more requesting clients over a computer communications network. The data processing system also can include a master node manager for distributing selected tasks to at least one worker node. Finally, the data processing system can include a suspicion detector. The suspicion detector can include program code enabled to select a task to dispatch to a first worker node, to set a suspicion index threshold for the selected task, to determine a suspicion index for the selected task, to compare the suspicion index to the suspicion index threshold and to receive a result from a first worker node. 
     Additional aspects of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The aspects of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed. 
    
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
       The accompanying drawings, which are incorporated in and constitute part of this specification, illustrate embodiments of the invention and together with the description, serve to explain the principles of the invention. The embodiments illustrated herein are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown, wherein: 
         FIG. 1  is a schematic illustration of distributed computing for large data sets on clusters of computers in a cloud computing environment; and, 
         FIG. 2  is a flow chart illustrating a process for detecting and correcting malicious nodes in a cloud computing environment. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Embodiments of the present invention address deficiencies of the art in respect to distributed computing for large data sets on clusters of computers and provide a novel and non-obvious method, system and computer program product for detecting and correcting malicious nodes in a cloud computing environment (e.g., MapReduce computing). In accordance with an embodiment of the present invention, a computer-implemented method for detecting and correcting malicious nodes in a cloud computing environment can include selecting a task to dispatch to a first worker node, setting a suspicion index threshold for the selected task, determining a suspicion index for the selected task, comparing the suspicion index to the suspicion index threshold and receiving a result from a first worker node. In an aspect of this embodiment the computer-implemented method further can include applying a recovery action when the suspicion index exceeds the selected suspicion index threshold. The application of the recovery act can include selecting a second worker node for the selected task, discarding results returned by the first worker node and stopping further use of the first work node. 
     In further illustration,  FIG. 1  is a schematic illustration of distributed computing for large data sets on clusters of computers in a cloud computing environment. The data processing system for detecting and correcting malicious nodes in a cloud computing environment can include a workload router  130  coupled to one or more client requestors  110  over a computer communications network  120 . The workload router  130  can be configured to route requests to one or more master nodes  150 . Master node  150  can process the requests into smaller elements, e.g., tasks and distribute those tasks to the one or more worker nodes  180  for processing. 
     Notably, a suspicion detector  160  can be communicatively coupled both to the router  130  and the master node  150 , or it could be part of the master node  150 . The suspicion detector  160  can include program code enabled to select a task to dispatch to a first worker node, to set a suspicion index threshold for the selected task, to determine a suspicion index for the selected task, to compare the suspicion index to the suspicion index threshold and to receive a result from a first worker node. The suspicion detector  160  further can include program code enabled to apply a recovery action when the suspicion index exceeds the selected suspicion index threshold. Worker nodes can be used or not used at the discretion of master node  150  using input from the suspicion detector  160 . 
     The master node  150  and the worker nodes  180  can be communicatively coupled to a logically shared memory  170  and share communications. For example, the master node  150  can distribute tasks (e.g., subproblems) to the worker nodes  180  via the shared memory  170 , while the worker nodes  180  retrieve the tasks. The worker nodes  180  can then produce the result, while the master node  150  collects the results and reduces the collected results into the answer to the problem the master originally received in a request from a client requestor  110 . which can also include communication links 
     In further illustration,  FIG. 2  is a flow chart illustrating a process for detecting and correcting malicious nodes in a cloud computing environment. Beginning in block  210 , one or more tasks can be selected for dispatch to a target worker node  180 , e.g., first worker node. In block  220 , a suspicion index threshold for the selected task can be set, which can be based on an expected processing time for the selected task and a configuration type of the first worker node. For example, the first worker node  180  can be a hardware and/or software configuration. In embodiments the suspicion index threshold will be some value above the minimum value of zero (0), for example, three (3) or five (5). Next, in block  230 , an initial value for the suspicion index is determined. The initial value of the suspicion index can be determined based on the master node&#39;s prior experience with the first worker node  180 . For example, when the first worker node is a “new” node, e.g., a node that the master node has not used before, the suspicion index can be determined to have the minimum value of zero (0). The same can occur when the node has reliably returned correct results in a timely manner. In other embodiments, the initial value of the suspicion index can be determined to have a positive value below the suspicion index threshold but greater than zero (0) when the first worker node has returned reliable results but in an untimely manner. The value of the suspicion index increases over time based on a suspicion detector function determined by the suspicion detector  160 . This suspicion detector function can be based on the hardware and/or software configuration and/or current workload of the worker node. 
     In decision block  240 , it can be determined whether or not the determined suspicion index has exceeded the suspicion index threshold. If the determined suspicion index has not exceeded the suspicion index threshold, then in block  250 , the result from the first worker node can be used by the master node  150  in its reduce step. Otherwise, in block  260 , a recovery action can be selected. Potential recovery actions include submitting the request to a new node, discarding any result from the original node and stopping further use of the original node. Another potential recovery action includes selecting a second worker node for selected task, comparing results returned by the first worker node to results returned by the second worker node and resetting the suspicion index of the first worker node to a minimum value (e.g., zero (0)) conditioned upon a positive match of the results returned by the first worker node to the results returned by the second worker node (assuming a timely response from the second worker node). 
     Yet another potential recovery action includes selecting a second worker node and a third worker node for the selected task, comparing results returned by the first worker node to results returned by the second worker node and to the results returned by the third worker node and stopping use of the first worker node conditioned upon a negative match of the results returned by the first worker node to the results returned by the second worker node and the results returned by the third worker node. Still yet another potential recovery action includes selecting a second worker node and a third worker node for the selected task, comparing results returned by the first worker node to results returned by the second worker node and to the results returned by the third worker node and lowering the suspicion index of the first worker node conditioned upon a positive match of the results returned by the first worker node to the results returned by the second worker node and the results returned by the third worker node. 
     Other potential recovery actions can include logging an administrative message and/or sending an event to an event coordinator. In any event, one of the potential recovery actions can be applied in block  270 . 
     Embodiments of the invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, and the like. Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. 
     For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD. 
     A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution 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 execution. Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. Network adapters 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.