US20160098472A1 - Map-reduce job virtualization - Google Patents
Map-reduce job virtualization Download PDFInfo
- Publication number
- US20160098472A1 US20160098472A1 US14/504,237 US201414504237A US2016098472A1 US 20160098472 A1 US20160098472 A1 US 20160098472A1 US 201414504237 A US201414504237 A US 201414504237A US 2016098472 A1 US2016098472 A1 US 2016098472A1
- Authority
- US
- United States
- Prior art keywords
- map
- reduce
- clusters
- language
- job
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G06F17/30598—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G06F17/30424—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Definitions
- This disclosure is related generally to processing large data sets, and more particularly, to methods of performing map-reduce jobs.
- Map-reduce is a programming model for processing large data sets.
- the map-reduce programming model comprises a map procedure that performs filtering and sorting and a reduce procedure that perform a summary operation.
- a map-reduce job is performed on clusters of computers, such as clusters of storage servers in a distributed file system.
- a file system may have clusters of storage servers, such that each cluster includes a master node and one or more worker nodes.
- a master node may receive a job request to perform an operation using a file or data located in the memory.
- the master node may divide the job into smaller sub-jobs, and may distribute the sub-jobs to the worker nodes.
- the worker nodes may process the sub-jobs in parallel and may pass the results back to the master node.
- the master node may collect the results of the sub-jobs and combine the results by performing a summary operation to form the output for the job request.
- FIG. 1 is a block diagram of an example system architecture, in accordance with various implementations
- FIG. 2 is a block diagram illustrating an example of a map-reduce management module
- FIG. 3 is a flow diagram illustrating an example method for scheduling and converting a map-reduce job, according to an implementation of the disclosure
- FIG. 4 is a flow diagram illustrating an example method for selecting a cluster to run a map-reduce job, according to an implementation of the disclosure.
- FIG. 5 illustrates a block diagram of an example computer system that may implement systems and methods described herein.
- a map-reduce job may be performed by different map-reduce frameworks.
- each cluster of computers may run different map-reduce frameworks such as, Hadoop, Hazelcast, MongoDB, Infinispan, Spark, etc.
- Each framework may support a map-reduce job written specifically for the corresponding framework.
- Infinispan may process map-reduce jobs written for an Infinispan framework
- Hadoop may process map-reduce jobs written for a Hadoop framework.
- a cluster running Infinispan cannot process a map-reduce job written for a cluster running Hadoop and vice versa. Since different clusters of servers may execute different map-reduce frameworks, clusters running different frameworks may be incompatible.
- map-reduce jobs written for different frameworks may be incompatible, migrating existing map-reduce jobs across clusters running different frameworks may be untenable.
- An administrator must write different map-reduce jobs, each for a different map-reduce framework, in order to execute a map-reduce job on computer clusters hosting different map-reduce frameworks.
- a map-reduce service machine receives a map-reduce job written in a first map-reduce language from a client machine.
- a map-reduce management module running on the map-reduce service machine identifies one or more clusters to run the map-reduce job, by evaluating the availability of resources of the clusters, the load of the clusters, the availability of the data on the clusters, and characteristics of the clusters (e.g., disk-based storage, memory-based storage).
- the map-reduce management module may also convert the map-reduce job into another map-reduce language that corresponds to the map-reduce framework running on the selected clusters, as the original language of the map-reduce job may be incompatible with the framework running on the selected clusters.
- the result of the map-reduce job may be represented in the language supported by the framework running on the selected clusters.
- the map-reduce management module may convert the result into the original map-reduce language.
- FIG. 1 is a block diagram of an example system architecture implementing the systems and methods described herein.
- the system architecture 100 may include one or more client machines 102 A-D coupled to a map-reduce service machine 106 via a network 108 .
- Map-reduce service machine 106 is coupled to computer cluster 101 , computer cluster 103 , and database 107 via network 108 .
- a computer cluster such as computer cluster 101 and computer cluster 103 , may comprise a set of interconnected computers or nodes that may be configured to perform a common task so that the computer cluster may be viewed as a single computer system.
- the nodes of a cluster may be connected to each other through a network, such as network 108 , with each node (e.g., node 140 A-F) running its own instance of an operating system.
- a developer may write a separate map-reduce job for each cluster running a different map-reduce framework.
- one or more client devices submit a map-reduce (MR) job that is received by map-reduce service machine 106 .
- Map-reduce service machine 106 may receive an MR job written in any language of a supported set of languages, including a language that is specifically designated as a general map-reduce language.
- the general MR language may be a single universal language that describes the functions that may be implemented by each of the multiple map-reduce frameworks.
- the general MR language may be an MR language that corresponds to a specific MR framework.
- map-reduce management module 130 selects one or more computer clusters (e.g., computer cluster 101 or computer cluster 103 ) on which to run the MR job. The selection may be performed based on the load of each cluster, availability of each cluster, characteristics of each cluster, the framework of each cluster, and/or the location of the data to be processed. Once one or more clusters are selected, map-reduce management module 130 converts the MR job written in an original language into an MR job written in a map-reduce language that is compatible with the map-reduce framework of the selected computer clusters. Map-reduce service machine 106 sends the MR job in the appropriate MR framework language to the selected computer clusters.
- Map-reduce service machine 106 sends the MR job in the appropriate MR framework language to the selected computer clusters.
- map-reduce service machine 106 determines that MR job A is to be performed on computer cluster 101 .
- Computer cluster 101 may run the Infinispan MR framework.
- Map-reduce service machine 106 converts the MR job A written in a general MR language into an MR job written for the Infinispan framework and sends the converted MR job to computer cluster 101 to be performed.
- Each computer cluster includes multiple nodes, such as node 140 A-C of computer cluster 101 .
- Each node may execute all or part of the converted MR job received from map-reduce service machine 106 .
- Each node may have memory hardware and may also communicate with a database (e.g., database 107 ) and/or local storage (not shown).
- Each cluster may operate a different MR framework as illustrated by map-reduce framework 104 and 105 .
- Map-reduce service machine 106 receives a result of the MR job, which may be in the MR language of the MR framework executed on the cluster, and converts the result written in the framework-specific language into results written in the general MR language.
- the client machine 102 A-D, map-reduce service machine 106 , database 107 , computer cluster 101 , and computer cluster 103 may be coupled via network 108 that communicates any of the standard protocols for the exchange of information. Some or all of client machines 102 A-D, map-reduce service machine 106 , database 107 , computer cluster 101 , and computer cluster 103 may run on a Local Area Network (LAN) and may be incorporated into the same physical or logical system, or different physical or logical systems.
- LAN Local Area Network
- client machines 102 A-D, map-reduce service machine 106 , database 107 , computer cluster 101 , and computer cluster 103 may reside on different LANs that may be coupled together via the Internet but separated by firewalls, routers, and/or other network devices.
- client machine 102 A-D, map-reduce service machine 106 , database 107 , computer cluster 101 , and computer cluster 103 may reside on a server, or different servers, coupled to other devices via a public network (e.g., the Internet) or a private network (e.g., LAN).
- the network 108 may be a public network, a private network, or a combination thereof.
- Network 108 may include a wireless infrastructure.
- the wireless infrastructure may be provided by one or multiple wireless communications systems, such as a wireless fidelity (Wi-Fi) hotspot connected with the network 108 and/or a wireless carrier system that may be implemented using various data processing equipment, communication towers, etc.
- Wi-Fi wireless fidelity
- a wireless carrier system that may be implemented using various data processing equipment, communication towers, etc.
- various other network configurations may be used including, for example, hosted configurations, distributed configurations, centralized configurations, etc.
- each node of a computer cluster may be connected to another node of the same cluster or to other nodes of different clusters via network 108 in the same manner as described above.
- the computer cluster 101 and computer cluster 103 may comprise a network attached storage file system that includes any number of mass storage devices, such as magnetic or optical storage based disks 170 A-B, solid-state drives (SSDs) or hard drives, coupled to computer cluster 101 and computer cluster 103 via the network 108 .
- Computer cluster 101 and computer cluster 103 , and each node of the aforementioned clusters, can further implement various network-accessible server-based functionality (not shown) or include other data processing equipment.
- Each computer cluster such as computer cluster 101 and computer cluster 103 , may contain one or more nodes.
- computer cluster 101 includes nodes 140 A, 140 B, and 140 C.
- Computer cluster 103 includes nodes 140 D, 140 E, and 140 F.
- Each node of computer cluster 101 and computer cluster 103 may include, but is not limited to, any data processing device, such as a desktop computer, a laptop computer, a mainframe computer, a personal digital assistant, a server computer, a hand-held device or any other device configured to process data.
- Each node of computer cluster 101 and computer cluster 103 may have its own physical or virtual memory.
- memory 145 A, 145 B, 145 C, 145 D, 145 E, and 145 F correspond to node 140 A, 140 B, 140 C, 140 D, 140 E, and 140 F, respectively.
- Memory may include, but is not limited to, main memory such as, read-only memory (ROM), flash memory, dynamic random access memory (DRAM) (e.g., synchronous DRAM (SDRAM) or DRAM (RDRAM), etc.), and static memory (e.g., flash memory, static random access memory (SRAM), etc.).
- main memory such as, read-only memory (ROM), flash memory, dynamic random access memory (DRAM) (e.g., synchronous DRAM (SDRAM) or DRAM (RDRAM), etc.), and static memory (e.g., flash memory, static random access memory (SRAM), etc.).
- DRAM dynamic random access memory
- SDRAM synchronous DRAM
- RDRAM DRAM
- SRAM
- Each node of computer cluster 101 and computer cluster 103 may execute all or part of a map-reduce job.
- the execution of all or part of one or more map-reduce jobs is illustrated by map-reduce job 143 A, 143 B, 143 C, 143 D, 143 E, and 143 F running on their respective nodes. It may be appreciated by one skilled in the art that a single map-reduce job may run on one or more nodes of one or more clusters in parallel.
- Each computer cluster such as computer cluster 101 and computer cluster 103 , may run the same or different map-reduce frameworks.
- FIG. 1 illustrates computer cluster 101 operating map-reduce framework 104 and computer cluster 103 operating map-reduce framework 105 .
- map-reduce framework 104 and map-reduce framework 105 may be considered different map-reduce frameworks, unless stated otherwise.
- each map-reduce framework uses a different map-reduce language.
- Each node of each cluster is configured to run a specific map-reduce framework. For example, node 140 A, 140 B and 140 C are configured to run map-reduce framework 104 , while node 140 D, 140 E, and 140 F are configured to run map-reduce framework 105 .
- Each MR framework is implemented with a programming language specific to the MR framework.
- Each framework implements a variety of different functions specific to each framework and each framework executes similar functions in a different manner.
- Different frameworks include frameworks such as, Hadoop, Hazelcast, MongoDB, Infinispan, and Spark.
- Computer cluster 101 and computer cluster 103 may organize data in database 107 .
- database 107 may store data on storage devices 107 A and 107 B (e.g., storage disks). Data in database 107 may be located in data files 171 A-B and organized using volumes.
- a volume is a single accessible storage area of database 107 , which may be resident on a single partition of a hard disk (e.g., disks 170 A-B) of the database 107 .
- a volume may be a representation of a logical location, rather than a physical location, of a storage area in database 107 .
- physical hard disk-1 may have two partitions, partition-1 and partition-2.
- a volume label “C:” may be assigned to partition-1 and a volume label “D:” may be assigned to partition-2.
- Hard disk-1 is a physical disk and “C:” and “D:” are volumes representing logical locations on physical hard disk-1.
- the database 107 may store data as files 171 A-B and may include directories, also referred to as folders, which are virtual containers within the database 107 , in which groups of computer files 171 A-B and possibly other directories may be kept and organized. Related files 171 A-B may be stored in the same directory.
- a sub-directory, also referred to as a sub-folder, is a directory contained inside another directory. The top-most directory is referred to as a root or top-level directory within the database 107 . Together, the directories form a hierarchy, or tree structure of one or more levels in the database 107 .
- the client machines 102 A-D may host various applications, including, for example, web applications, desktop applications, browser applications, etc.
- an application is a map-reduce interface application (not shown).
- the map-reduce interface application may allow a user of a client machine to send a map-reduce job to be processed and may receive a result of a map-reduce job.
- the map-reduce interface application may allow the client machine to interact with map-reduce service machine 106 .
- the map-reduce interface application may allow a user to submit a map-reduce job written in a general map-reduce language to map-reduce service machine 106 .
- Map-reduce service machine 106 receives map-reduce jobs submitted by client machines 102 A-D. Map-reduce service machine 106 may also receive information from computer cluster 101 , computer cluster 103 , and database 107 . The information may include an interim and final result of the map-reduce job.
- the map-reduce service machine 106 may be a server or a controller device. Map-reduce service machine 106 may include, but is not limited to, any data processing device, such as a desktop computer, a laptop computer, a mainframe computer, a personal digital assistant, a server computer, a hand-held device or any other device configured to process data.
- Map-reduce service machine 106 may contain map-reduce management module 130 .
- Map-reduce management module 130 may receive one or more MR jobs from the client machines 102 A-D.
- MR management module 130 may select one or more computer clusters on which each MR job is to be executed, based on the load on a cluster or a node of a cluster, the availability of a cluster or a node of a cluster, the location of the data, and a characteristic of the cluster or a node of the cluster.
- the MR manager module 130 may monitor the progress of the MR job being executed on the selected clusters and may determine, based on the above described cluster selection rules, that the MR job should be migrated to a different cluster.
- Map-reduce management module 130 may convert a map-reduce job written in a general MR language into a specific MR language corresponding to the MR framework running on selected computer clusters.
- the Hadoop MR framework may execute MR jobs written in the Hadoop language.
- the Infinispan MR framework may execute MR jobs written in an Infinispan language.
- a map-reduce job may be written in the software language, Java, for both the Hadoop and Infinispan frameworks, but in each case is programmed to use the Hadoop Java API or the Infinispan Java API, respectively.
- An MR job written for a Hadoop framework is incompatible with an Infinispan framework and vice versa.
- a map-reduce framework language such as the Hadoop language or the Infinispan language, may refer to a software language that is programmed to use the corresponding framework API.
- a general map-reduce language may be used to implement a map-reduce job.
- the general map-reduce language may be implemented using any programming language.
- An interpreter or the general MR language is implemented in the selected language.
- the general MR language is a library implemented in the selected language.
- the general MR language may be written in Java, C++, Python, etc.
- the general MR language may be described as modeled in view of the Java syntax, unless otherwise noted. It should be appreciated that the general MR language is not limited to Java, but may be any programming language. Functions written in the general MR language may be mapped to the functions written in the one or more framework languages.
- a map function, map( ), written in the general MR language may be mapped to the map function, map( ), in Hadoop, Infinispan, and Spark, etc.
- the map function, map( ), written in general MR language may be mapped to the Spark map function written in Python.
- the general MR language may map functions written in the general MR language to all the functions required to execute an MR job to each of the corresponding functions of the different MR frameworks.
- a function specific to a particular MR framework may have a corresponding function in a general MR language.
- the mapping may be stored on map-reduce service machine 106 or on separate database, such as database 107 .
- the general MR language may be written in a specific framework language in which case the same mapping principles as described above apply. If the general MR language is a specific framework language or a universal language, each function of the general MR language may be mapped to one or more functions of another language, and the mapping may further comprise one or more rules of defining values of parameters of the target language functions based on parameters of the general language functions.
- Map-reduce management module 130 may translate the result of an MR job executed on selected clusters into the general MR language. During and after the execution of an MR job, the selected clusters may send to the MR service machine 106 the result. The result may be in the framework language running in the selected clusters. For example, the result of an MR job for a Hadoop cluster may be sent to MR reduce service machine 106 described in the Hadoop language. The MR management module 130 may translate the result, for example described in the Hadoop language, into the general MR language. A mapping technique, as described above, may be implemented for the conversion of the MR job result to the general MR language. Map-reduce management module may be discussed in more detail in regards to FIGS. 2-5 .
- an MR job includes multiple functions. It should be appreciated that an MR job may describe a complete execution all the functions and includes an initial input and final output. Alternatively, an MR job may indicate one or more functions or steps in executing an MR job. For example, an MR job may refer to the map function or the reduce function.
- FIG. 2 is a block diagram illustrating an example of a map-reduce management module.
- Map-reduce management module 130 includes conversion module 210 and job manager module 220 .
- Map-reduce management module 130 may be implemented on a map-reduce service machine 106 , as illustrated in FIG. 1 .
- Map-reduce management module 130 may also be implemented on a client machine, such as client machine 102 A-D. Parts of map-reduce management module 130 may be implemented on client machine 102 A-D, while other parts of map-reduce management module 130 may be implemented on map-reduce service machine 106 .
- Conversion module 210 includes map-reduce language module 212 that converts statements written in the general MR language to statements written in specific MR languages, as illustrated by framework language 211 A and framework language 211 B. It should be noted that map-reduce language module 212 may convert the general MR language into more than two MR framework languages. Map-reduce language module 212 also may convert each language (e.g., framework language 211 A and framework language 211 B) into the general MR language. It should be noted that a language corresponds to the specific MR language for a particular MR framework.
- a map-reduce job written in a general MR language may be received by map-reduce management module 130 .
- Job manager module 220 selects one or more clusters (e.g., computer clusters 101 and 103 ) on which to run the map-reduce job. In selecting the one or more clusters, job manager module 220 may determine if one or more clusters are available to perform the map-reduce job. If the one or more clusters are not available, job manager module 220 may select a different cluster on which to run the MR job.
- availability refers to map-reduce management module's ability to communicate with the cluster. In another example, availability refers to the ability of the selected cluster to perform the map-reduce job.
- availability refers to the number of nodes of the cluster able to perform a map-reduce job compared to the total number of nodes in a cluster.
- Availability may be measured as a percentage with the number of nodes of a cluster able to perform a map-reduce job divided by the total number of nodes of the cluster. For example, if a cluster includes 10 nodes and 4 have hardware failures and 6 are able to perform the map-reduce job, then the availability is 60%.
- a user or administrator may specify an availability threshold which when exceeded, the job manager module 220 may determine that the cluster is available for purposes of processing a map-reduce job.
- An availability threshold may be set at a percentage, measured as the number of nodes in a cluster able to perform a map-reduce job over the total number of nodes in the cluster. In the previous example, if the availability threshold were set at 50%, and availability is 60%, job-manager module may determine the cluster is available. If the job manager module 220 is not able to communicate with the cluster, then the cluster is said to be unavailable. In one example, a cluster may not be available if the cluster is off-line or not available perform the MR job. Additionally, job manager module 220 may determine the availability of clusters even though the clusters operate different MR frameworks. For example, job manager module 220 may determine that a cluster running Hadoop is available, while a cluster running Infinispan is not available.
- nodes of a cluster may be available in the same manner as computer clusters. It should also be noted that the term “resource” may be used to refer to a computer cluster, a computer node, and any computer hardware or software associated with a computer cluster or node.
- job manager module 220 may determine the load of the selected clusters.
- the load of a cluster may be an indication of the degree or percentage to which the resources of a cluster are being used or scheduled to be used.
- load may be central processing unit (CPU) usage which is the sum of the number of current processes and processes waiting to be run (i.e., queued processes) for a time period over the total number of processes a CPU is capable of running for the time period.
- CPU central processing unit
- load may be one or more of CPU, network, or memory usage which is the amount of data traffic on the one or more of the CPU, network, or memory of a node or cluster for a given time period divided by the amount of data traffic the one or more of the CPU, network, or memory may handle for the given time period.
- Load may be measured as a percentage as defined above.
- Load may be calculated for a node, a cluster, or a group of nodes of a cluster.
- Job manager module 220 may send a query using a system call to the operating system of a node or cluster in order to obtain the load of the node, cluster, or group of nodes in the cluster.
- the results of the query may be sent to a client machine, such as client machine 102 A-D.
- job manager module 220 may select a different cluster.
- a developer or administrator may determine the threshold load level.
- the threshold load level may be set at the lowest load detected by job manager module 220 .
- job manager module 220 may look at the use of resources associated with the cluster and determine the speed an MR job may be completed on a particular cluster.
- Job manager module 220 may determine the difference between the loads of computer clusters operating different frameworks. For example, a computer cluster running Infinispan may have a 20% load, while a computer cluster running Hadoop may have a 70% load.
- the threshold load level may be any arbitrary value determined by a developer or administrator.
- an administrator may determine that if the load of the selected clusters exceeds 60%, job-manager module 220 should select another cluster to run the MR job.
- the load of each computer cluster running different frameworks may be measured prior to selecting a cluster on which to run the job.
- the threshold load level may be set at the load of the least loaded cluster for which load has been determined. For example, in the above example job manager module may select the Infinispan cluster because its load of 20% is less than the load of Hadoop cluster of 70%.
- the threshold load level may be set at 20%, and may be reset if a load for another cluster is determined to be lower than 20%.
- job manager module 220 may determine if the data to be processed by the map-reduce job is available to the selected clusters. If the data to be processed by the map-reduce job is not available to the selected clusters, job manager module 220 may cause the data to be moved in order to make the data available to the selected clusters. The data may be moved from storage device 170 A and 170 B to memory 145 A, 145 B, or 145 C, and vice versa. The data may be moved between any of database 107 , disk 170 A-B, Memory 145 A-F, or local disk memory of node 140 A-F.
- job manager module 220 may query each cluster of the plurality of clusters for an indication of a characteristic of each cluster.
- Each cluster may run a different software framework.
- the characteristics include the storage type (e.g., disk-based storage or memory-based storage).
- Data in memory-based storage typically has a faster access time than data on disk-based storage.
- An MR job that uses data located on memory-based storage is typically faster than an MR job run on data located on disk-based storage.
- Memory-based storage may be provided by memory 145 A-F and described in conjunction with FIG. 1 .
- Disk-based storage may be provided by storage devices 170 A-B and described in conjunction with FIG. 1 .
- Disk-based storage may also be hard-disk storage associated locally with each node 140 A-F.
- Different MR frameworks may access data in different ways. One difference may be the location of the data on which the MR job is to process.
- An MR job may process data located on memory-based storage or disk-based storage.
- Job manager module 220 may query each cluster using a system call requesting the characteristic of a targeted cluster.
- Job manager module 220 may select one or more clusters to run the map-reduce job based on the characteristic. As described above, the job manager module 220 may cause the data to be moved from one location to another location in order to execute an MR job on a particular framework executing on a computer cluster.
- the characteristics include the capacity of at least one of the CPU, network, or memory of a node or cluster.
- Capacity of the CPU and the network is the amount of data the CPU or network can handle over a time period.
- Memory capacity is the amount of memory storage of a node or cluster which may be measured in bits.
- a characteristic may be disk access speed for a cluster which is the amount of data that may be accessed on disk storage by a cluster or node, which may be measured in bits per second.
- Job manager module 220 may query each cluster using a system call requesting the characteristic of a targeted cluster.
- Job manager module 220 may select one or more clusters to run the map-reduce job based on the characteristic. For example, two clusters may be both running the Hadoop framework.
- Job manager module 220 may query each cluster for one or more indications of CPU capacity, network capacity, or memory capacity, compare the indications, and select a cluster based on the comparison.
- job manager module 220 may identify the specific map-reduce language that is associated with the selected clusters by identifying the type of a software framework being run on the selected clusters. The identified map-reduce language corresponds to the software framework being run on the selected clusters. In one example, job-manager module 220 sends a system call to the selected clusters to query the selected clusters on the MR framework operating on the cluster. In another example, map-reduce management module 130 keeps a record of the MR frameworks operating on each cluster, and periodically updates the record when the MR framework of a cluster changes. Job manager module 220 may identify a type of software framework being run on the selected clusters and communicate the identified type to conversion module 210 so that the conversion module 210 may convert the MR job into the framework-specific MR language.
- Map-reduce management module 130 also includes conversion module 210 that converts the map-reduce job written in the original map-reduce language into the map-reduce job written in a language supported by the selected clusters.
- the original map-reduce language is the language in which the MR job is received, and may be provided by a general map-reduce language.
- the general MR language may be a language that describes the functions supported by multiple frameworks but is not specific to any MR framework.
- Map-reduce language module 212 of conversion module 210 may convert the received MR job written in a general MR language to a framework-specific language that corresponds to the MR framework installed on the selected clusters.
- the map-reduce language module may receive the result of a map-reduce job, which is typically in the MR language of the executing clusters, and convert the result into a general MR language. Once the result is in the general MR language, the result may be converted to any framework specific language.
- Map-reduce language module 212 may convert a general MR language into various MR languages (i.e., framework-specific languages) and convert any number of MR languages into a general MR language, as illustrated by framework language 211 A and 211 B.
- FIG. 3 is a flow diagram illustrating an example method for scheduling and converting a map-reduce job, according to an implementation of the disclosure.
- Method 300 may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (such as instructions run on a processing device), firmware, or a combination thereof.
- processing logic may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (such as instructions run on a processing device), firmware, or a combination thereof.
- method 300 is performed by system 100 of FIG. 1 .
- method 300 is performed by map-reduce management module 130 of FIGS. 1 and 2 .
- Method 300 begins at block 302 where the processing logic receives a map-reduce job written in a first map-reduce language.
- the first map-reduce language may be a general MR language.
- the MR job may be received from any of the client machines 102 A-D at map-reduce service machine 106 .
- the map-reduce job is to be performed in parallel on a plurality of nodes of a plurality of clusters. Additional details of block 302 are further described in regards to FIGS. 1 and 2 .
- Method 300 continues at block 304 where the processing logic selects one or more clusters to run the map-reduce job.
- the processing logic may determine an availability of the selected clusters to perform the map-reduce job. In one example, a cluster or node is available when it is able to process the MR job. When a resource is off-line it may be said to be unavailable.
- the processing logic may also determine the load of different clusters, each running a different MR framework.
- the processing logic may also determine if the data on which the MR job is to be run is available to the cluster or node. Additionally, the processing logic may determine a characteristic of the cluster, such as whether the selected cluster uses memory-based storage or disk-based storage. Processing logic may base the selection of the one or more clusters to run the map-reduce job and any one or more of the above mentioned features. Additional details of block 304 are further described in regards to FIGS. 1 , 2 , and 4 .
- Method 300 continues to block 306 where the processing logic identifies a second map-reduce language associated with the selected clusters.
- the second map-reduce language may be a framework-specific language that corresponds to a software framework running on the selected clusters.
- the software framework of the selected clusters may be different from the software framework running on the other clusters of the plurality of clusters. For example, a network of clusters may have certain clusters running the Hadoop framework while other clusters run the Infinispan framework.
- the processing logic may identify the map-reduce language of the selected clusters by sending a system call to the cluster or by referring to a table of frameworks run by clusters in a network. Additional details of block 306 are further described in regards to FIGS. 1 and 2 .
- Method 300 continues to block 308 where the processing logic converts the first-map-reduce language of the map-reduce job into the second map-reduce language.
- the processing logic may map the MR functions described in a general MR language (e.g., first MR language) and convert those functions to equivalent functions in the second MR language.
- the second MR language may be compatible with the MR framework operating on the selected clusters. Additional details of block 308 are described in regards to FIGS. 1 and 2 .
- Method 300 continues to block 310 where the processing logic causes the map-reduce job in the second map-reduce language to be run on the plurality of nodes of the selected clusters.
- the processing logic may send the MR job to the selected clusters and the MR framework executes the MR job.
- map-reduce service machine 106 may assign the work of the MR job to nodes in a computer cluster.
- Method 300 continues to block 312 where the processing logic receives a result of the map-reduce job run on the one or more nodes of the selected clusters.
- the result may be in the in the MR language of the cluster executing the MR job.
- the result may be an output of the MR job.
- Method 300 continues to block 314 where the processing logic converts the result written in a second map-reduce language to results written in the first map-reduce language.
- the processing logic converts the result written in the specific MR language of the framework running on the selected clusters into results written in the general MR language.
- Processing logic may convert the general MR language to another framework-specific language. Such a conversion may help migrate a job from one MR framework to another MR framework. Additional details of block 312 are further described in regards to FIGS. 1 and 2 .
- FIG. 4 is a flow diagram illustrating an example method for selecting a cluster to run a map-reduce job, according to an implementation of the disclosure.
- Method 400 may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (such as instructions run on a processing device), firmware, or a combination thereof.
- method 300 is performed by system 100 of FIG. 1 .
- method 400 is performed by map-reduce management module 130 of FIGS. 1 and 2 .
- Method 400 begins at block 402 where the selecting, by the processing logic, the one or more clusters to run the map-reduce job is performed responsive to determining an availability of the selected clusters to perform the map reduce job.
- a cluster may be available if an MR job is able to be run or completed on the cluster. If the one or more clusters are not available, the processing logic may select a different cluster. The processing logic may check if a different cluster is also available. The processing logic may scan some or all the clusters to determine which clusters are available. Additional details of block 402 are further described in respect to FIG. 2 .
- Method 400 continues in block 404 , where the selecting, by the processing logic, of the one or more clusters to run the map-reduce job is performed responsive to determining that a load on the selected cluster does not exceed a threshold load level.
- Processing logic may select a different cluster of the plurality of clusters on which to perform the map-reduce job if the load exceeds a threshold load level.
- the different cluster may run a different software framework than the selected clusters.
- the load of a cluster is an indication of the degree to which the resources of a cluster are in use.
- the processing logic may determine the load of different clusters running different MR frameworks. In one example, the processing logic selects the cluster with the lightest load, regardless of MR framework.
- the threshold load level may be determined using the lowest load of plurality of clusters, as determined by the processing logic. If a cluster is detected with a lower load, then that load becomes the new threshold load level. In another example, a threshold load level may be defined by a developer or administrator, and the determined load compared to the threshold load level. Additional details of block 404 are further discussed in regards to FIG. 2 .
- Method 400 continues in block 406 where the processing logic causes data to be processed by the map-reduce job to be available to the selected clusters.
- the processing logic may request the data to be moved to make the data available to the selected clusters if the data to be processed by the map-reduce job is not available to the selected clusters.
- the processing logic may determine if the data is available to the selected cluster by making a system call to the cluster or to individual nodes of the selected cluster. Additional details of block 406 are further described in regards to FIG. 2 .
- Method 400 continues in block 408 where the processing logic queries each cluster of the plurality of clusters for an indication of a characteristic of each cluster.
- the processing logic selects the one or more clusters to run the MR job based on the characteristic. Characteristics include memory-based storage and disk-based storage. As noted above, different frameworks process data for an MR job from different locations. The processing logic may query a cluster using a system call to determine where the data in question is located, disk-based or memory-based. The processing logic may select a cluster based any of the above characteristics. Additional details of block 408 and block 410 are discussed in regards to FIG. 2 .
- FIG. 5 illustrates a block diagram of an example computer system that may implement systems and methods described herein.
- the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, or the Internet.
- the machine may operate in the capacity of a server or a client device in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
- the machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
- PC personal computer
- PDA Personal Digital Assistant
- STB set-top box
- WPA Personal Digital Assistant
- a cellular telephone a web appliance
- server a server
- network router switch or bridge
- the computer system 500 includes a processing device 502 , a main memory 504 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) (such as synchronous DRAM (SDRAM) or DRAM (RDRAM), etc.), a static memory 506 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage device 518 , which communicate with each other via a bus 530 .
- main memory 504 e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) (such as synchronous DRAM (SDRAM) or DRAM (RDRAM), etc.
- DRAM dynamic random access memory
- SDRAM synchronous DRAM
- RDRAM DRAM
- static memory 506 e.g., flash memory, static random access memory (SRAM), etc.
- SRAM static random access memory
- Processing device 502 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processing device may be complex instruction set computing (CISC) microprocessor, reduced instruction set computer (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or processor implementing other instruction sets, or processors implementing a combination of instruction sets. Processing device 502 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The processing device 502 is configured to execute the processing logic 526 for performing the operations and steps discussed herein.
- CISC complex instruction set computing
- RISC reduced instruction set computer
- VLIW very long instruction word
- ASIC application specific integrated circuit
- FPGA field programmable gate array
- DSP digital signal processor
- network processor or the like.
- the processing device 502 is configured to execute the processing logic 526 for performing the operations and steps
- the computer system 500 may further include a network interface device 508 communicably coupled to a network 120 .
- the computer system 500 also may include a video display unit 510 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 512 (e.g., a keyboard), a cursor control device 514 (e.g., a mouse), and a signal generation device 516 (e.g., a speaker).
- a video display unit 510 e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)
- an alphanumeric input device 512 e.g., a keyboard
- a cursor control device 514 e.g., a mouse
- a signal generation device 516 e.g., a speaker
- the data storage device 518 may include a machine-accessible storage medium 524 on which is stored software 526 embodying any one or more of the methodologies of functions described herein.
- the software 526 may also reside, completely or at least partially, within the main memory 504 as instructions 526 and/or within the processing device 502 as processing logic 526 during execution thereof by the computer system 500 ; the main memory 504 and the processing device 502 also constituting machine-accessible storage media.
- the machine-readable storage medium 524 may also be used to store instructions 526 to implement the map-reduce management module 130 to implement any one or more of the methodologies of functions described herein in a computer system, such as the system described with respect to FIG. 1 , and/or a software library containing methods that call the above applications.
- machine-accessible storage medium 524 is shown in an example implementation to be a single medium, the term “machine-accessible storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions.
- the term “machine-accessible storage medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instruction for execution by the machine and that cause the machine to perform any one or more of the methodologies of the disclosure.
- the term “machine-accessible storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media.
- the disclosure also relates to an apparatus for performing the operations herein.
- This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer.
- a computer program may be stored in a machine readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
- the disclosure may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the disclosure.
- a machine-readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer).
- a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium (e.g., read only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media, optical storage media, flash memory devices, etc.), etc.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
A method for map-reduce job virtualization is disclosed. The method includes receiving a map-reduce job written in a first map-reduce language. The map-reduce job is to be performed in parallel on a plurality of nodes of a plurality of clusters. The method also includes selecting one or more clusters to run the map-reduce job. The method further includes identifying a second map-reduce language associated with the selected clusters. The method also includes converting the first map-reduce language of the map-reduce job into the second map-reduce language. The method further causes the map-reduce job in the second map-reduce language to be run on the plurality of nodes of the selected clusters.
Description
- This disclosure is related generally to processing large data sets, and more particularly, to methods of performing map-reduce jobs.
- Map-reduce is a programming model for processing large data sets. The map-reduce programming model comprises a map procedure that performs filtering and sorting and a reduce procedure that perform a summary operation. Typically, a map-reduce job is performed on clusters of computers, such as clusters of storage servers in a distributed file system. For example, a file system may have clusters of storage servers, such that each cluster includes a master node and one or more worker nodes. During the “map” phase, a master node may receive a job request to perform an operation using a file or data located in the memory. The master node may divide the job into smaller sub-jobs, and may distribute the sub-jobs to the worker nodes. The worker nodes may process the sub-jobs in parallel and may pass the results back to the master node. During the “reduce” phase, the master node may collect the results of the sub-jobs and combine the results by performing a summary operation to form the output for the job request.
- The disclosure may be understood more fully from the detailed description given below and from the accompanying drawings of various implementations of the disclosure. The drawings, however, should not be taken to limit the disclosure to the specific implementations, but are for explanation and understanding only.
-
FIG. 1 is a block diagram of an example system architecture, in accordance with various implementations; -
FIG. 2 is a block diagram illustrating an example of a map-reduce management module; -
FIG. 3 is a flow diagram illustrating an example method for scheduling and converting a map-reduce job, according to an implementation of the disclosure; -
FIG. 4 is a flow diagram illustrating an example method for selecting a cluster to run a map-reduce job, according to an implementation of the disclosure; and -
FIG. 5 illustrates a block diagram of an example computer system that may implement systems and methods described herein. - Systems and methods for map-reduce virtualization are described. A map-reduce job may be performed by different map-reduce frameworks. For example, each cluster of computers may run different map-reduce frameworks such as, Hadoop, Hazelcast, MongoDB, Infinispan, Spark, etc. Each framework may support a map-reduce job written specifically for the corresponding framework. For example, Infinispan may process map-reduce jobs written for an Infinispan framework, while Hadoop may process map-reduce jobs written for a Hadoop framework. However, a cluster running Infinispan cannot process a map-reduce job written for a cluster running Hadoop and vice versa. Since different clusters of servers may execute different map-reduce frameworks, clusters running different frameworks may be incompatible. It may be desirable to migrate a map-reduce job to a different map-reduce framework in order to obtain a benefit of the framework or to standardize a map-reduce framework across a network. Since map-reduce jobs written for different frameworks may be incompatible, migrating existing map-reduce jobs across clusters running different frameworks may be untenable. An administrator must write different map-reduce jobs, each for a different map-reduce framework, in order to execute a map-reduce job on computer clusters hosting different map-reduce frameworks.
- In one example, a map-reduce service machine receives a map-reduce job written in a first map-reduce language from a client machine. A map-reduce management module running on the map-reduce service machine identifies one or more clusters to run the map-reduce job, by evaluating the availability of resources of the clusters, the load of the clusters, the availability of the data on the clusters, and characteristics of the clusters (e.g., disk-based storage, memory-based storage). The map-reduce management module may also convert the map-reduce job into another map-reduce language that corresponds to the map-reduce framework running on the selected clusters, as the original language of the map-reduce job may be incompatible with the framework running on the selected clusters. Additionally, the result of the map-reduce job may be represented in the language supported by the framework running on the selected clusters. The map-reduce management module may convert the result into the original map-reduce language.
-
FIG. 1 is a block diagram of an example system architecture implementing the systems and methods described herein. Thesystem architecture 100 may include one ormore client machines 102A-D coupled to a map-reduceservice machine 106 via anetwork 108. Map-reduceservice machine 106 is coupled to computer cluster 101, computer cluster 103, anddatabase 107 vianetwork 108. A computer cluster, such as computer cluster 101 and computer cluster 103, may comprise a set of interconnected computers or nodes that may be configured to perform a common task so that the computer cluster may be viewed as a single computer system. The nodes of a cluster may be connected to each other through a network, such asnetwork 108, with each node (e.g.,node 140A-F) running its own instance of an operating system. - A developer may write a separate map-reduce job for each cluster running a different map-reduce framework. In one example, one or more client devices (e.g., 102A-D) submit a map-reduce (MR) job that is received by map-reduce
service machine 106. Map-reduceservice machine 106 may receive an MR job written in any language of a supported set of languages, including a language that is specifically designated as a general map-reduce language. The general MR language may be a single universal language that describes the functions that may be implemented by each of the multiple map-reduce frameworks. Alternatively, the general MR language may be an MR language that corresponds to a specific MR framework. After receiving an MR job, map-reducemanagement module 130 selects one or more computer clusters (e.g., computer cluster 101 or computer cluster 103) on which to run the MR job. The selection may be performed based on the load of each cluster, availability of each cluster, characteristics of each cluster, the framework of each cluster, and/or the location of the data to be processed. Once one or more clusters are selected, map-reducemanagement module 130 converts the MR job written in an original language into an MR job written in a map-reduce language that is compatible with the map-reduce framework of the selected computer clusters. Map-reduceservice machine 106 sends the MR job in the appropriate MR framework language to the selected computer clusters. For example, map-reduceservice machine 106 determines that MR job A is to be performed on computer cluster 101. Computer cluster 101 may run the Infinispan MR framework. Map-reduceservice machine 106 converts the MR job A written in a general MR language into an MR job written for the Infinispan framework and sends the converted MR job to computer cluster 101 to be performed. Each computer cluster includes multiple nodes, such asnode 140A-C of computer cluster 101. Each node may execute all or part of the converted MR job received from map-reduceservice machine 106. Each node may have memory hardware and may also communicate with a database (e.g., database 107) and/or local storage (not shown). Each cluster may operate a different MR framework as illustrated by map-reduceframework service machine 106 receives a result of the MR job, which may be in the MR language of the MR framework executed on the cluster, and converts the result written in the framework-specific language into results written in the general MR language. - The
client machine 102A-D, map-reduceservice machine 106,database 107, computer cluster 101, and computer cluster 103 may be coupled vianetwork 108 that communicates any of the standard protocols for the exchange of information. Some or all ofclient machines 102A-D, map-reduceservice machine 106,database 107, computer cluster 101, and computer cluster 103 may run on a Local Area Network (LAN) and may be incorporated into the same physical or logical system, or different physical or logical systems. Alternatively, some or all ofclient machines 102A-D, map-reduceservice machine 106,database 107, computer cluster 101, and computer cluster 103 may reside on different LANs that may be coupled together via the Internet but separated by firewalls, routers, and/or other network devices. In yet another configuration, some or all ofclient machine 102A-D, map-reduceservice machine 106,database 107, computer cluster 101, and computer cluster 103 may reside on a server, or different servers, coupled to other devices via a public network (e.g., the Internet) or a private network (e.g., LAN). Thenetwork 108 may be a public network, a private network, or a combination thereof. Network 108 may include a wireless infrastructure. The wireless infrastructure may be provided by one or multiple wireless communications systems, such as a wireless fidelity (Wi-Fi) hotspot connected with thenetwork 108 and/or a wireless carrier system that may be implemented using various data processing equipment, communication towers, etc. It should be noted that various other network configurations may be used including, for example, hosted configurations, distributed configurations, centralized configurations, etc. It also should be noted that each node of a computer cluster may be connected to another node of the same cluster or to other nodes of different clusters vianetwork 108 in the same manner as described above. - The computer cluster 101 and computer cluster 103 may comprise a network attached storage file system that includes any number of mass storage devices, such as magnetic or optical storage based
disks 170A-B, solid-state drives (SSDs) or hard drives, coupled to computer cluster 101 and computer cluster 103 via thenetwork 108. Computer cluster 101 and computer cluster 103, and each node of the aforementioned clusters, can further implement various network-accessible server-based functionality (not shown) or include other data processing equipment. - Each computer cluster, such as computer cluster 101 and computer cluster 103, may contain one or more nodes. For example, computer cluster 101 includes
nodes nodes - Each node of computer cluster 101 and computer cluster 103 may have its own physical or virtual memory. For example,
memory 145A, 145B, 145C, 145D, 145E, and 145F correspond tonode - Each node of computer cluster 101 and computer cluster 103 may execute all or part of a map-reduce job. The execution of all or part of one or more map-reduce jobs is illustrated by map-reduce
job - Each computer cluster, such as computer cluster 101 and computer cluster 103, may run the same or different map-reduce frameworks.
FIG. 1 illustrates computer cluster 101 operating map-reduceframework 104 and computer cluster 103 operating map-reduceframework 105. For the sake of illustration, map-reduce framework 104 and map-reduce framework 105 may be considered different map-reduce frameworks, unless stated otherwise. As stated above, each map-reduce framework uses a different map-reduce language. Each node of each cluster is configured to run a specific map-reduce framework. For example,node reduce framework 104, whilenode reduce framework 105. Each MR framework is implemented with a programming language specific to the MR framework. Each framework implements a variety of different functions specific to each framework and each framework executes similar functions in a different manner. Different frameworks include frameworks such as, Hadoop, Hazelcast, MongoDB, Infinispan, and Spark. - Computer cluster 101 and computer cluster 103 may organize data in
database 107. For example,database 107 may store data on storage devices 107A and 107B (e.g., storage disks). Data indatabase 107 may be located in data files 171A-B and organized using volumes. A volume is a single accessible storage area ofdatabase 107, which may be resident on a single partition of a hard disk (e.g.,disks 170A-B) of thedatabase 107. A volume may be a representation of a logical location, rather than a physical location, of a storage area indatabase 107. For example, physical hard disk-1 may have two partitions, partition-1 and partition-2. A volume label “C:” may be assigned to partition-1 and a volume label “D:” may be assigned to partition-2. Hard disk-1 is a physical disk and “C:” and “D:” are volumes representing logical locations on physical hard disk-1. - The
database 107 may store data asfiles 171A-B and may include directories, also referred to as folders, which are virtual containers within thedatabase 107, in which groups ofcomputer files 171A-B and possibly other directories may be kept and organized.Related files 171A-B may be stored in the same directory. A sub-directory, also referred to as a sub-folder, is a directory contained inside another directory. The top-most directory is referred to as a root or top-level directory within thedatabase 107. Together, the directories form a hierarchy, or tree structure of one or more levels in thedatabase 107. - The
client machines 102A-D may host various applications, including, for example, web applications, desktop applications, browser applications, etc. In one implementation, an application is a map-reduce interface application (not shown). The map-reduce interface application may allow a user of a client machine to send a map-reduce job to be processed and may receive a result of a map-reduce job. The map-reduce interface application may allow the client machine to interact with map-reduce service machine 106. The map-reduce interface application may allow a user to submit a map-reduce job written in a general map-reduce language to map-reduce service machine 106. - Map-
reduce service machine 106 receives map-reduce jobs submitted byclient machines 102A-D. Map-reduce service machine 106 may also receive information from computer cluster 101, computer cluster 103, anddatabase 107. The information may include an interim and final result of the map-reduce job. The map-reduce service machine 106 may be a server or a controller device. Map-reduce service machine 106 may include, but is not limited to, any data processing device, such as a desktop computer, a laptop computer, a mainframe computer, a personal digital assistant, a server computer, a hand-held device or any other device configured to process data. - Map-
reduce service machine 106 may contain map-reduce management module 130. Map-reduce management module 130 may receive one or more MR jobs from theclient machines 102A-D.MR management module 130 may select one or more computer clusters on which each MR job is to be executed, based on the load on a cluster or a node of a cluster, the availability of a cluster or a node of a cluster, the location of the data, and a characteristic of the cluster or a node of the cluster. Once the MR job is sent to one or more clusters, theMR manager module 130 may monitor the progress of the MR job being executed on the selected clusters and may determine, based on the above described cluster selection rules, that the MR job should be migrated to a different cluster. - Map-
reduce management module 130 may convert a map-reduce job written in a general MR language into a specific MR language corresponding to the MR framework running on selected computer clusters. For example, the Hadoop MR framework may execute MR jobs written in the Hadoop language. The Infinispan MR framework may execute MR jobs written in an Infinispan language. It should be noted that in the preceding example, a map-reduce job may be written in the software language, Java, for both the Hadoop and Infinispan frameworks, but in each case is programmed to use the Hadoop Java API or the Infinispan Java API, respectively. An MR job written for a Hadoop framework is incompatible with an Infinispan framework and vice versa. A map-reduce framework language, such as the Hadoop language or the Infinispan language, may refer to a software language that is programmed to use the corresponding framework API. - In one example, a general map-reduce language may be used to implement a map-reduce job. The general map-reduce language may be implemented using any programming language. An interpreter or the general MR language is implemented in the selected language. Alternatively, the general MR language is a library implemented in the selected language. For example, the general MR language may be written in Java, C++, Python, etc. For purposes of illustration, the general MR language may be described as modeled in view of the Java syntax, unless otherwise noted. It should be appreciated that the general MR language is not limited to Java, but may be any programming language. Functions written in the general MR language may be mapped to the functions written in the one or more framework languages. For example, a map function, map( ), written in the general MR language may be mapped to the map function, map( ), in Hadoop, Infinispan, and Spark, etc. The map function, map( ), written in general MR language, may be mapped to the Spark map function written in Python. The general MR language may map functions written in the general MR language to all the functions required to execute an MR job to each of the corresponding functions of the different MR frameworks. A function specific to a particular MR framework may have a corresponding function in a general MR language. The mapping may be stored on map-
reduce service machine 106 or on separate database, such asdatabase 107. Alternatively, it should be noted that the general MR language may be written in a specific framework language in which case the same mapping principles as described above apply. If the general MR language is a specific framework language or a universal language, each function of the general MR language may be mapped to one or more functions of another language, and the mapping may further comprise one or more rules of defining values of parameters of the target language functions based on parameters of the general language functions. - Map-
reduce management module 130 may translate the result of an MR job executed on selected clusters into the general MR language. During and after the execution of an MR job, the selected clusters may send to theMR service machine 106 the result. The result may be in the framework language running in the selected clusters. For example, the result of an MR job for a Hadoop cluster may be sent to MR reduceservice machine 106 described in the Hadoop language. TheMR management module 130 may translate the result, for example described in the Hadoop language, into the general MR language. A mapping technique, as described above, may be implemented for the conversion of the MR job result to the general MR language. Map-reduce management module may be discussed in more detail in regards toFIGS. 2-5 . - It should be noted that an MR job includes multiple functions. It should be appreciated that an MR job may describe a complete execution all the functions and includes an initial input and final output. Alternatively, an MR job may indicate one or more functions or steps in executing an MR job. For example, an MR job may refer to the map function or the reduce function.
-
FIG. 2 is a block diagram illustrating an example of a map-reduce management module. Map-reduce management module 130 includesconversion module 210 andjob manager module 220. Map-reduce management module 130 may be implemented on a map-reduce service machine 106, as illustrated inFIG. 1 . Map-reduce management module 130 may also be implemented on a client machine, such asclient machine 102A-D. Parts of map-reduce management module 130 may be implemented onclient machine 102A-D, while other parts of map-reduce management module 130 may be implemented on map-reduce service machine 106. -
Conversion module 210 includes map-reduce language module 212 that converts statements written in the general MR language to statements written in specific MR languages, as illustrated byframework language 211A andframework language 211B. It should be noted that map-reduce language module 212 may convert the general MR language into more than two MR framework languages. Map-reduce language module 212 also may convert each language (e.g.,framework language 211A andframework language 211B) into the general MR language. It should be noted that a language corresponds to the specific MR language for a particular MR framework. - In one example, a map-reduce job written in a general MR language may be received by map-
reduce management module 130.Job manager module 220 selects one or more clusters (e.g., computer clusters 101 and 103) on which to run the map-reduce job. In selecting the one or more clusters,job manager module 220 may determine if one or more clusters are available to perform the map-reduce job. If the one or more clusters are not available,job manager module 220 may select a different cluster on which to run the MR job. In one example, availability refers to map-reduce management module's ability to communicate with the cluster. In another example, availability refers to the ability of the selected cluster to perform the map-reduce job. In another example, availability refers to the number of nodes of the cluster able to perform a map-reduce job compared to the total number of nodes in a cluster. Availability may be measured as a percentage with the number of nodes of a cluster able to perform a map-reduce job divided by the total number of nodes of the cluster. For example, if a cluster includes 10 nodes and 4 have hardware failures and 6 are able to perform the map-reduce job, then the availability is 60%. A user or administrator may specify an availability threshold which when exceeded, thejob manager module 220 may determine that the cluster is available for purposes of processing a map-reduce job. An availability threshold may be set at a percentage, measured as the number of nodes in a cluster able to perform a map-reduce job over the total number of nodes in the cluster. In the previous example, if the availability threshold were set at 50%, and availability is 60%, job-manager module may determine the cluster is available. If thejob manager module 220 is not able to communicate with the cluster, then the cluster is said to be unavailable. In one example, a cluster may not be available if the cluster is off-line or not available perform the MR job. Additionally,job manager module 220 may determine the availability of clusters even though the clusters operate different MR frameworks. For example,job manager module 220 may determine that a cluster running Hadoop is available, while a cluster running Infinispan is not available. It should be noted that individual nodes of a cluster may be available in the same manner as computer clusters. It should also be noted that the term “resource” may be used to refer to a computer cluster, a computer node, and any computer hardware or software associated with a computer cluster or node. - In one example, in selecting the one or more clusters,
job manager module 220 may determine the load of the selected clusters. The load of a cluster may be an indication of the degree or percentage to which the resources of a cluster are being used or scheduled to be used. In one example, load may be central processing unit (CPU) usage which is the sum of the number of current processes and processes waiting to be run (i.e., queued processes) for a time period over the total number of processes a CPU is capable of running for the time period. In another example, load may be one or more of CPU, network, or memory usage which is the amount of data traffic on the one or more of the CPU, network, or memory of a node or cluster for a given time period divided by the amount of data traffic the one or more of the CPU, network, or memory may handle for the given time period. Load may be measured as a percentage as defined above. Load may be calculated for a node, a cluster, or a group of nodes of a cluster.Job manager module 220 may send a query using a system call to the operating system of a node or cluster in order to obtain the load of the node, cluster, or group of nodes in the cluster. The results of the query may be sent to a client machine, such asclient machine 102A-D. If the load on a particular cluster exceeds a threshold load level,job manager module 220 may select a different cluster. A developer or administrator may determine the threshold load level. Alternatively, the threshold load level may be set at the lowest load detected byjob manager module 220. In determining the load,job manager module 220 may look at the use of resources associated with the cluster and determine the speed an MR job may be completed on a particular cluster.Job manager module 220 may determine the difference between the loads of computer clusters operating different frameworks. For example, a computer cluster running Infinispan may have a 20% load, while a computer cluster running Hadoop may have a 70% load. In one example, the threshold load level may be any arbitrary value determined by a developer or administrator. For example, an administrator may determine that if the load of the selected clusters exceeds 60%, job-manager module 220 should select another cluster to run the MR job. The load of each computer cluster running different frameworks may be measured prior to selecting a cluster on which to run the job. In another example, the threshold load level may be set at the load of the least loaded cluster for which load has been determined. For example, in the above example job manager module may select the Infinispan cluster because its load of 20% is less than the load of Hadoop cluster of 70%. The threshold load level may be set at 20%, and may be reset if a load for another cluster is determined to be lower than 20%. - In one example, in selecting the one or more clusters,
job manager module 220 may determine if the data to be processed by the map-reduce job is available to the selected clusters. If the data to be processed by the map-reduce job is not available to the selected clusters,job manager module 220 may cause the data to be moved in order to make the data available to the selected clusters. The data may be moved fromstorage device database 107,disk 170A-B, Memory 145A-F, or local disk memory ofnode 140A-F. - In another example, in selecting the one or more clusters,
job manager module 220 may query each cluster of the plurality of clusters for an indication of a characteristic of each cluster. Each cluster may run a different software framework. The characteristics include the storage type (e.g., disk-based storage or memory-based storage). Data in memory-based storage typically has a faster access time than data on disk-based storage. An MR job that uses data located on memory-based storage is typically faster than an MR job run on data located on disk-based storage. Memory-based storage may be provided by memory 145A-F and described in conjunction withFIG. 1 . Disk-based storage may be provided bystorage devices 170A-B and described in conjunction withFIG. 1 . Disk-based storage may also be hard-disk storage associated locally with eachnode 140A-F. Different MR frameworks may access data in different ways. One difference may be the location of the data on which the MR job is to process. An MR job may process data located on memory-based storage or disk-based storage.Job manager module 220 may query each cluster using a system call requesting the characteristic of a targeted cluster.Job manager module 220 may select one or more clusters to run the map-reduce job based on the characteristic. As described above, thejob manager module 220 may cause the data to be moved from one location to another location in order to execute an MR job on a particular framework executing on a computer cluster. - In another example, the characteristics include the capacity of at least one of the CPU, network, or memory of a node or cluster. Capacity of the CPU and the network is the amount of data the CPU or network can handle over a time period. Memory capacity is the amount of memory storage of a node or cluster which may be measured in bits. Additionally, a characteristic may be disk access speed for a cluster which is the amount of data that may be accessed on disk storage by a cluster or node, which may be measured in bits per second.
Job manager module 220 may query each cluster using a system call requesting the characteristic of a targeted cluster.Job manager module 220 may select one or more clusters to run the map-reduce job based on the characteristic. For example, two clusters may be both running the Hadoop framework. However, one cluster may be using old hardware while the other may be using state-of-the-art hardware. An MR job run on state-of-the-art hardware may be faster than on old hardware.Job manager module 220, may query each cluster for one or more indications of CPU capacity, network capacity, or memory capacity, compare the indications, and select a cluster based on the comparison. - In another example,
job manager module 220 may identify the specific map-reduce language that is associated with the selected clusters by identifying the type of a software framework being run on the selected clusters. The identified map-reduce language corresponds to the software framework being run on the selected clusters. In one example, job-manager module 220 sends a system call to the selected clusters to query the selected clusters on the MR framework operating on the cluster. In another example, map-reduce management module 130 keeps a record of the MR frameworks operating on each cluster, and periodically updates the record when the MR framework of a cluster changes.Job manager module 220 may identify a type of software framework being run on the selected clusters and communicate the identified type toconversion module 210 so that theconversion module 210 may convert the MR job into the framework-specific MR language. - Map-
reduce management module 130 also includesconversion module 210 that converts the map-reduce job written in the original map-reduce language into the map-reduce job written in a language supported by the selected clusters. As stated above, the original map-reduce language is the language in which the MR job is received, and may be provided by a general map-reduce language. The general MR language may be a language that describes the functions supported by multiple frameworks but is not specific to any MR framework. Map-reduce language module 212 ofconversion module 210 may convert the received MR job written in a general MR language to a framework-specific language that corresponds to the MR framework installed on the selected clusters. Conversely, the map-reduce language module may receive the result of a map-reduce job, which is typically in the MR language of the executing clusters, and convert the result into a general MR language. Once the result is in the general MR language, the result may be converted to any framework specific language. Map-reduce language module 212 may convert a general MR language into various MR languages (i.e., framework-specific languages) and convert any number of MR languages into a general MR language, as illustrated byframework language -
FIG. 3 is a flow diagram illustrating an example method for scheduling and converting a map-reduce job, according to an implementation of the disclosure.Method 300 may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (such as instructions run on a processing device), firmware, or a combination thereof. In one implementation,method 300 is performed bysystem 100 ofFIG. 1 . In another implementation,method 300 is performed by map-reduce management module 130 ofFIGS. 1 and 2 . -
Method 300 begins atblock 302 where the processing logic receives a map-reduce job written in a first map-reduce language. The first map-reduce language may be a general MR language. The MR job may be received from any of theclient machines 102A-D at map-reduce service machine 106. The map-reduce job is to be performed in parallel on a plurality of nodes of a plurality of clusters. Additional details ofblock 302 are further described in regards toFIGS. 1 and 2 . -
Method 300 continues atblock 304 where the processing logic selects one or more clusters to run the map-reduce job. The processing logic may determine an availability of the selected clusters to perform the map-reduce job. In one example, a cluster or node is available when it is able to process the MR job. When a resource is off-line it may be said to be unavailable. The processing logic may also determine the load of different clusters, each running a different MR framework. The processing logic may also determine if the data on which the MR job is to be run is available to the cluster or node. Additionally, the processing logic may determine a characteristic of the cluster, such as whether the selected cluster uses memory-based storage or disk-based storage. Processing logic may base the selection of the one or more clusters to run the map-reduce job and any one or more of the above mentioned features. Additional details ofblock 304 are further described in regards toFIGS. 1 , 2, and 4. -
Method 300 continues to block 306 where the processing logic identifies a second map-reduce language associated with the selected clusters. The second map-reduce language may be a framework-specific language that corresponds to a software framework running on the selected clusters. The software framework of the selected clusters may be different from the software framework running on the other clusters of the plurality of clusters. For example, a network of clusters may have certain clusters running the Hadoop framework while other clusters run the Infinispan framework. The processing logic may identify the map-reduce language of the selected clusters by sending a system call to the cluster or by referring to a table of frameworks run by clusters in a network. Additional details ofblock 306 are further described in regards toFIGS. 1 and 2 . -
Method 300 continues to block 308 where the processing logic converts the first-map-reduce language of the map-reduce job into the second map-reduce language. The processing logic may map the MR functions described in a general MR language (e.g., first MR language) and convert those functions to equivalent functions in the second MR language. The second MR language may be compatible with the MR framework operating on the selected clusters. Additional details ofblock 308 are described in regards toFIGS. 1 and 2 . -
Method 300 continues to block 310 where the processing logic causes the map-reduce job in the second map-reduce language to be run on the plurality of nodes of the selected clusters. In one example, the processing logic may send the MR job to the selected clusters and the MR framework executes the MR job. In another example, map-reduce service machine 106 may assign the work of the MR job to nodes in a computer cluster. -
Method 300 continues to block 312 where the processing logic receives a result of the map-reduce job run on the one or more nodes of the selected clusters. The result may be in the in the MR language of the cluster executing the MR job. The result may be an output of the MR job.Method 300 continues to block 314 where the processing logic converts the result written in a second map-reduce language to results written in the first map-reduce language. In one example, the processing logic converts the result written in the specific MR language of the framework running on the selected clusters into results written in the general MR language. Processing logic may convert the general MR language to another framework-specific language. Such a conversion may help migrate a job from one MR framework to another MR framework. Additional details ofblock 312 are further described in regards toFIGS. 1 and 2 . -
FIG. 4 is a flow diagram illustrating an example method for selecting a cluster to run a map-reduce job, according to an implementation of the disclosure.Method 400 may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (such as instructions run on a processing device), firmware, or a combination thereof. In one implementation,method 300 is performed bysystem 100 ofFIG. 1 . In another implementation,method 400 is performed by map-reduce management module 130 ofFIGS. 1 and 2 . -
Method 400 begins at block 402 where the selecting, by the processing logic, the one or more clusters to run the map-reduce job is performed responsive to determining an availability of the selected clusters to perform the map reduce job. A cluster may be available if an MR job is able to be run or completed on the cluster. If the one or more clusters are not available, the processing logic may select a different cluster. The processing logic may check if a different cluster is also available. The processing logic may scan some or all the clusters to determine which clusters are available. Additional details of block 402 are further described in respect toFIG. 2 . -
Method 400 continues inblock 404, where the selecting, by the processing logic, of the one or more clusters to run the map-reduce job is performed responsive to determining that a load on the selected cluster does not exceed a threshold load level. Processing logic may select a different cluster of the plurality of clusters on which to perform the map-reduce job if the load exceeds a threshold load level. The different cluster may run a different software framework than the selected clusters. In one example, the load of a cluster is an indication of the degree to which the resources of a cluster are in use. The processing logic may determine the load of different clusters running different MR frameworks. In one example, the processing logic selects the cluster with the lightest load, regardless of MR framework. In such as case, the threshold load level may be determined using the lowest load of plurality of clusters, as determined by the processing logic. If a cluster is detected with a lower load, then that load becomes the new threshold load level. In another example, a threshold load level may be defined by a developer or administrator, and the determined load compared to the threshold load level. Additional details ofblock 404 are further discussed in regards toFIG. 2 . -
Method 400 continues inblock 406 where the processing logic causes data to be processed by the map-reduce job to be available to the selected clusters. The processing logic may request the data to be moved to make the data available to the selected clusters if the data to be processed by the map-reduce job is not available to the selected clusters. The processing logic may determine if the data is available to the selected cluster by making a system call to the cluster or to individual nodes of the selected cluster. Additional details ofblock 406 are further described in regards toFIG. 2 . -
Method 400 continues inblock 408 where the processing logic queries each cluster of the plurality of clusters for an indication of a characteristic of each cluster. Inblock 410, the processing logic selects the one or more clusters to run the MR job based on the characteristic. Characteristics include memory-based storage and disk-based storage. As noted above, different frameworks process data for an MR job from different locations. The processing logic may query a cluster using a system call to determine where the data in question is located, disk-based or memory-based. The processing logic may select a cluster based any of the above characteristics. Additional details ofblock 408 and block 410 are discussed in regards toFIG. 2 . -
FIG. 5 illustrates a block diagram of an example computer system that may implement systems and methods described herein. In alternative implementations, the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, or the Internet. The machine may operate in the capacity of a server or a client device in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein. - The
computer system 500 includes aprocessing device 502, a main memory 504 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) (such as synchronous DRAM (SDRAM) or DRAM (RDRAM), etc.), a static memory 506 (e.g., flash memory, static random access memory (SRAM), etc.), and adata storage device 518, which communicate with each other via abus 530. -
Processing device 502 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processing device may be complex instruction set computing (CISC) microprocessor, reduced instruction set computer (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or processor implementing other instruction sets, or processors implementing a combination of instruction sets.Processing device 502 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. Theprocessing device 502 is configured to execute theprocessing logic 526 for performing the operations and steps discussed herein. - The
computer system 500 may further include anetwork interface device 508 communicably coupled to anetwork 120. Thecomputer system 500 also may include a video display unit 510 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 512 (e.g., a keyboard), a cursor control device 514 (e.g., a mouse), and a signal generation device 516 (e.g., a speaker). - The
data storage device 518 may include a machine-accessible storage medium 524 on which is storedsoftware 526 embodying any one or more of the methodologies of functions described herein. Thesoftware 526 may also reside, completely or at least partially, within themain memory 504 asinstructions 526 and/or within theprocessing device 502 asprocessing logic 526 during execution thereof by thecomputer system 500; themain memory 504 and theprocessing device 502 also constituting machine-accessible storage media. - The machine-
readable storage medium 524 may also be used to storeinstructions 526 to implement the map-reduce management module 130 to implement any one or more of the methodologies of functions described herein in a computer system, such as the system described with respect toFIG. 1 , and/or a software library containing methods that call the above applications. - While the machine-
accessible storage medium 524 is shown in an example implementation to be a single medium, the term “machine-accessible storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “machine-accessible storage medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instruction for execution by the machine and that cause the machine to perform any one or more of the methodologies of the disclosure. The term “machine-accessible storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media. - In the foregoing description, numerous details are set forth. It will be apparent, however, that the disclosure may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the disclosure.
- Some portions of the detailed descriptions which follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
- It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “receiving”, “identifying”, “converting”, “causing”, “determining”, “selecting”, “requesting”, “querying”, or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
- The disclosure also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a machine readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
- The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear as set forth in the description below. In addition, the disclosure is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the disclosure as described herein.
- The disclosure may be provided as a computer program product, or software, that may include a machine-readable medium having stored thereon instructions, which may be used to program a computer system (or other electronic devices) to perform a process according to the disclosure. A machine-readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable (e.g., computer-readable) medium includes a machine (e.g., a computer) readable storage medium (e.g., read only memory (“ROM”), random access memory (“RAM”), magnetic disk storage media, optical storage media, flash memory devices, etc.), etc.
- Whereas many alterations and modifications of the disclosure will no doubt become apparent to a person of ordinary skill in the art after having read the foregoing description, it is to be understood that any particular example shown and described by way of illustration is in no way intended to be considered limiting. Therefore, references to details of various examples are not intended to limit the scope of the claims, which in themselves recite only those features regarded as the disclosure.
Claims (20)
1. A method comprising:
receiving a map-reduce job written in a first map-reduce language, wherein the map-reduce job is to be performed in parallel on a plurality of nodes of a plurality of clusters;
selecting one or more clusters to run the map-reduce job;
identifying a second map-reduce language associated with the selected clusters;
converting the first map-reduce language of the map-reduce job into the second map-reduce language; and
causing the map-reduce job in the second map-reduce language to be run on the plurality of nodes of the selected clusters.
2. The method of claim 1 , further comprising:
receiving a result of the map-reduce job run on the one or more nodes of the selected clusters, wherein the result is in the second map-reduce language; and
converting the result from the second map-reduce language to the first map-reduce language.
3. The method of claim 1 , wherein the second map-reduce language is a framework-specific language that corresponds to a software framework running on the selected clusters.
4. The method of claim 3 , wherein the software framework running on the selected clusters is different from software frameworks running on other clusters of the plurality of clusters.
5. The method of claim 1 , wherein identifying the second map-reduce language associated with the selected clusters further comprises:
identifying a software framework being run on the selected clusters, wherein the second map-reduce language corresponds to the identified software framework.
6. The method of claim 1 , wherein selecting the one or more clusters to run the map-reduce job is performed responsive to determining an availability of the selected clusters to perform the map-reduce job.
7. The method of claim 1 , wherein selecting the one or more clusters to run the map-reduce job is performed responsive to determining that a load on the selected clusters does not exceed a threshold load level.
8. The method of claim 1 , wherein selecting the one or more clusters to run the map-reduce job further comprises:
causing data to be processed by the map-reduce job to be available to the selected clusters.
9. The method of claim 1 , wherein selecting the one or more clusters to run the map-reduce job further comprises:
querying each cluster of the plurality of clusters for an indication of a characteristic of each cluster; and
selecting the one or more clusters to run the map-reduce job based on the characteristic.
10. The method of claim 7 , wherein the characteristic comprises at least one of disk-based storage or memory-based storage.
11. A system comprising:
a memory to store instructions for a map-reduce management module;
a processing device, coupled with the memory, to execute the instructions; and
the map-reduce management module, executed by the processing device, to:
receive a map-reduce job written in a first map-reduce language, wherein the map-reduce job is to be performed in parallel on a plurality of nodes of a plurality of clusters;
select one or more clusters to run the map-reduce job;
identify a second map-reduce language associated with the selected clusters;
convert the first map-reduce language of the map-reduce job into the second map-reduce language; and
cause the map-reduce job in the second map-reduce language to be run on the plurality of nodes of the selected clusters.
12. The system of claim 11 , wherein the map-reduce management module, executed by the processing device, further to:
receive a result of the map-reduce job run on the one or more nodes of the selected clusters, wherein the result is in the second map-reduce language; and
convert the result from the second map-reduce language to the first map-reduce language.
13. The system of claim 11 , wherein identifying the second map-reduce language associated with the selected clusters, the map-reduce management module executed by the processing device, further to:
identify a software framework being run on the selected clusters, wherein the second map-reduce language corresponds to the identified software framework.
14. The system of claim 11 , wherein selecting the one or more clusters to run the map-reduce job is performed responsive to determining that a load on the selected clusters does not exceed a threshold load level.
15. The system of claim 11 , wherein selecting the one or more clusters to run the map-reduce job, the map-reduce management module, executed by the processing device, further to:
causing data to be processed by the map-reduce job to be available to the selected clusters.
16. A non-transitory computer readable storage medium including instructions that, when executed by a processing device, cause the processing device to perform a method comprising:
receiving a map-reduce job written in a first map-reduce language, wherein the map-reduce job is to be performed in parallel on a plurality of nodes of a plurality of clusters;
selecting one or more clusters to run the map-reduce job;
identifying a second map-reduce language associated with the selected clusters;
converting the first map-reduce language of the map-reduce job into the second map-reduce language; and
causing the map-reduce job in the second map-reduce language to be run on the plurality of nodes of the selected clusters.
17. The non-transitory computer readable storage medium of claim 16 , the method further comprising:
receiving a result of the map-reduce job run on the one or more nodes of the selected clusters, wherein the result is in the second map-reduce language; and
converting the result from the second map-reduce language to the first map-reduce language.
18. The non-transitory computer readable storage medium of claim 16 , wherein identifying the second map-reduce language associated with the selected clusters, the method further comprising:
identifying a software framework being run on the selected clusters, wherein the second map-reduce language corresponds to the identified.
19. The non-transitory computer readable storage medium of claim 16 , wherein selecting the one or more clusters to run the map-reduce job is performed responsive to determining that a load on the selected clusters does not exceed a threshold load level.
20. The non-transitory computer readable storage medium of claim 16 , wherein selecting the one or more clusters to run the map-reduce job, the method further comprising:
causing data to be processed by the map-reduce job to be available to the selected clusters.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/504,237 US9910888B2 (en) | 2014-10-01 | 2014-10-01 | Map-reduce job virtualization |
US15/875,518 US10635664B2 (en) | 2014-10-01 | 2018-01-19 | Map-reduce job virtualization |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/504,237 US9910888B2 (en) | 2014-10-01 | 2014-10-01 | Map-reduce job virtualization |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/875,518 Continuation US10635664B2 (en) | 2014-10-01 | 2018-01-19 | Map-reduce job virtualization |
Publications (2)
Publication Number | Publication Date |
---|---|
US20160098472A1 true US20160098472A1 (en) | 2016-04-07 |
US9910888B2 US9910888B2 (en) | 2018-03-06 |
Family
ID=55632960
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/504,237 Active 2035-11-21 US9910888B2 (en) | 2014-10-01 | 2014-10-01 | Map-reduce job virtualization |
US15/875,518 Active 2035-01-09 US10635664B2 (en) | 2014-10-01 | 2018-01-19 | Map-reduce job virtualization |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/875,518 Active 2035-01-09 US10635664B2 (en) | 2014-10-01 | 2018-01-19 | Map-reduce job virtualization |
Country Status (1)
Country | Link |
---|---|
US (2) | US9910888B2 (en) |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170244650A1 (en) * | 2016-02-18 | 2017-08-24 | Electronics And Telecommunications Research Institute | Mapreduce apparatus, and mapreduce control apparatus and method |
US10268714B2 (en) * | 2015-10-30 | 2019-04-23 | International Business Machines Corporation | Data processing in distributed computing |
US10277668B1 (en) | 2015-04-06 | 2019-04-30 | EMC IP Holding Company LLC | Beacon-based distributed data processing platform |
US10331380B1 (en) * | 2015-04-06 | 2019-06-25 | EMC IP Holding Company LLC | Scalable distributed in-memory computation utilizing batch mode extensions |
US10348810B1 (en) * | 2015-04-06 | 2019-07-09 | EMC IP Holding Company LLC | Scalable distributed computations utilizing multiple distinct clouds |
US20190222633A1 (en) * | 2018-01-12 | 2019-07-18 | Workday, Inc. | Distributed partitioned map reduce using a data fabric |
US10366111B1 (en) * | 2015-04-06 | 2019-07-30 | EMC IP Holding Company LLC | Scalable distributed computations utilizing multiple distinct computational frameworks |
US10374968B1 (en) | 2016-12-30 | 2019-08-06 | EMC IP Holding Company LLC | Data-driven automation mechanism for analytics workload distribution |
US20190250958A1 (en) * | 2018-02-14 | 2019-08-15 | Capital One Services, Llc | Remotely managing execution of jobs in a cluster computing framework |
US10404787B1 (en) * | 2015-04-06 | 2019-09-03 | EMC IP Holding Company LLC | Scalable distributed data streaming computations across multiple data processing clusters |
US10425350B1 (en) | 2015-04-06 | 2019-09-24 | EMC IP Holding Company LLC | Distributed catalog service for data processing platform |
US10496926B2 (en) | 2015-04-06 | 2019-12-03 | EMC IP Holding Company LLC | Analytics platform for scalable distributed computations |
US10505863B1 (en) * | 2015-04-06 | 2019-12-10 | EMC IP Holding Company LLC | Multi-framework distributed computation |
CN110569122A (en) * | 2018-06-05 | 2019-12-13 | 三星电子株式会社 | Multiprocessor system, multi-core processing device, and method of operating the same |
US10509684B2 (en) | 2015-04-06 | 2019-12-17 | EMC IP Holding Company LLC | Blockchain integration for scalable distributed computations |
US10511659B1 (en) * | 2015-04-06 | 2019-12-17 | EMC IP Holding Company LLC | Global benchmarking and statistical analysis at scale |
US10515097B2 (en) * | 2015-04-06 | 2019-12-24 | EMC IP Holding Company LLC | Analytics platform for scalable distributed computations |
US10528875B1 (en) | 2015-04-06 | 2020-01-07 | EMC IP Holding Company LLC | Methods and apparatus implementing data model for disease monitoring, characterization and investigation |
US10541938B1 (en) | 2015-04-06 | 2020-01-21 | EMC IP Holding Company LLC | Integration of distributed data processing platform with one or more distinct supporting platforms |
US10541936B1 (en) * | 2015-04-06 | 2020-01-21 | EMC IP Holding Company LLC | Method and system for distributed analysis |
US10656861B1 (en) * | 2015-12-29 | 2020-05-19 | EMC IP Holding Company LLC | Scalable distributed in-memory computation |
US10706970B1 (en) | 2015-04-06 | 2020-07-07 | EMC IP Holding Company LLC | Distributed data analytics |
CN111506399A (en) * | 2020-03-05 | 2020-08-07 | 百度在线网络技术(北京)有限公司 | Task migration method and device, electronic equipment and storage medium |
US10776404B2 (en) | 2015-04-06 | 2020-09-15 | EMC IP Holding Company LLC | Scalable distributed computations utilizing multiple distinct computational frameworks |
US10791063B1 (en) | 2015-04-06 | 2020-09-29 | EMC IP Holding Company LLC | Scalable edge computing using devices with limited resources |
US10812341B1 (en) | 2015-04-06 | 2020-10-20 | EMC IP Holding Company LLC | Scalable recursive computation across distributed data processing nodes |
US10860622B1 (en) | 2015-04-06 | 2020-12-08 | EMC IP Holding Company LLC | Scalable recursive computation for pattern identification across distributed data processing nodes |
US11042549B2 (en) * | 2019-04-11 | 2021-06-22 | Sas Institute Inc. | Database server embedded process and code accelerator |
US11061736B2 (en) | 2016-08-18 | 2021-07-13 | International Business Machines Corporation | Multiple parallel reducer types in a single map-reduce job |
CN115336236A (en) * | 2020-03-31 | 2022-11-11 | 阿里巴巴集团控股有限公司 | Avoiding network congestion through ring-based trunking communications |
US11663205B2 (en) * | 2017-05-04 | 2023-05-30 | Salesforce, Inc. | Technologies for asynchronous querying |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10102029B2 (en) * | 2015-06-30 | 2018-10-16 | International Business Machines Corporation | Extending a map-reduce framework to improve efficiency of multi-cycle map-reduce jobs |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140201114A1 (en) * | 2011-08-15 | 2014-07-17 | Nec Corporation | Device of managing distributed processing and method of managing distributed processing |
US20140279857A1 (en) * | 2012-04-17 | 2014-09-18 | salesforce.com,inc | Mechanism for facilitating dynamic integration of disparate database architectures for efficient management of resources in an on-demand services enviroment |
US20150277990A1 (en) * | 2014-03-27 | 2015-10-01 | Nec Laboratories America, Inc. | System and Methods for Collaborative Query Processing for Large Scale Data Processing with Software Defined Networking |
US20150347101A1 (en) * | 2014-06-02 | 2015-12-03 | International Business Machines Corporation | R-language integration with a declarative machine learning language |
US20160092548A1 (en) * | 2014-09-26 | 2016-03-31 | Oracle International Corporation | System and method for consistent reads between tasks in a massively parallel or distributed database environment |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9053067B2 (en) | 2011-09-30 | 2015-06-09 | International Business Machines Corporation | Distributed data scalable adaptive map-reduce framework |
KR101352699B1 (en) | 2011-11-30 | 2014-01-17 | 삼성에스디에스 주식회사 | Method and Apparatus for Provisioning Parallel Processing-Based Virtual Cluster Computing System |
JP5936118B2 (en) | 2012-04-16 | 2016-06-15 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | Code conversion method, program and system |
US8972986B2 (en) | 2012-05-25 | 2015-03-03 | International Business Machines Corporation | Locality-aware resource allocation for cloud computing |
US10579634B2 (en) | 2012-08-30 | 2020-03-03 | Citus Data Bilgi Islemleri Ticaret A.S. | Apparatus and method for operating a distributed database with foreign tables |
KR101516055B1 (en) | 2012-11-30 | 2015-05-04 | 주식회사 엘지씨엔에스 | Map-reduce workflow processing device and method, and storage media storing the same |
US9031925B2 (en) | 2012-12-13 | 2015-05-12 | Sap Se | Hadoop access via hadoop interface services based on function conversion |
US9727355B2 (en) * | 2013-08-23 | 2017-08-08 | Vmware, Inc. | Virtual Hadoop manager |
CN106062738B (en) * | 2013-11-12 | 2019-07-16 | 皮沃塔尔软件公司 | Manage job state |
US10360050B2 (en) * | 2014-01-17 | 2019-07-23 | International Business Machines Corporation | Simulation of high performance computing (HPC) application environment using virtual nodes |
WO2015150342A1 (en) * | 2014-03-30 | 2015-10-08 | Universiteit Gent | Program execution on heterogeneous platform |
-
2014
- 2014-10-01 US US14/504,237 patent/US9910888B2/en active Active
-
2018
- 2018-01-19 US US15/875,518 patent/US10635664B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140201114A1 (en) * | 2011-08-15 | 2014-07-17 | Nec Corporation | Device of managing distributed processing and method of managing distributed processing |
US20140279857A1 (en) * | 2012-04-17 | 2014-09-18 | salesforce.com,inc | Mechanism for facilitating dynamic integration of disparate database architectures for efficient management of resources in an on-demand services enviroment |
US20150277990A1 (en) * | 2014-03-27 | 2015-10-01 | Nec Laboratories America, Inc. | System and Methods for Collaborative Query Processing for Large Scale Data Processing with Software Defined Networking |
US20150347101A1 (en) * | 2014-06-02 | 2015-12-03 | International Business Machines Corporation | R-language integration with a declarative machine learning language |
US20160092548A1 (en) * | 2014-09-26 | 2016-03-31 | Oracle International Corporation | System and method for consistent reads between tasks in a massively parallel or distributed database environment |
Non-Patent Citations (2)
Title |
---|
"MapReduce Across Distributed Clusters for Data-intensive Applications," Wang, Lizhe et al, 26th IEEE International Parallel and Distributed Processing Symposium, 2012 * |
Luo et al, "A Hierarchical Framework for Cross-Domain MapReduce Execution," ECMLS, June 8, 2011. * |
Cited By (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10706970B1 (en) | 2015-04-06 | 2020-07-07 | EMC IP Holding Company LLC | Distributed data analytics |
US11749412B2 (en) | 2015-04-06 | 2023-09-05 | EMC IP Holding Company LLC | Distributed data analytics |
US10277668B1 (en) | 2015-04-06 | 2019-04-30 | EMC IP Holding Company LLC | Beacon-based distributed data processing platform |
US10311363B1 (en) | 2015-04-06 | 2019-06-04 | EMC IP Holding Company LLC | Reasoning on data model for disease monitoring, characterization and investigation |
US10331380B1 (en) * | 2015-04-06 | 2019-06-25 | EMC IP Holding Company LLC | Scalable distributed in-memory computation utilizing batch mode extensions |
US10348810B1 (en) * | 2015-04-06 | 2019-07-09 | EMC IP Holding Company LLC | Scalable distributed computations utilizing multiple distinct clouds |
US11854707B2 (en) | 2015-04-06 | 2023-12-26 | EMC IP Holding Company LLC | Distributed data analytics |
US10366111B1 (en) * | 2015-04-06 | 2019-07-30 | EMC IP Holding Company LLC | Scalable distributed computations utilizing multiple distinct computational frameworks |
US10999353B2 (en) | 2015-04-06 | 2021-05-04 | EMC IP Holding Company LLC | Beacon-based distributed data processing platform |
US10984889B1 (en) | 2015-04-06 | 2021-04-20 | EMC IP Holding Company LLC | Method and apparatus for providing global view information to a client |
US10404787B1 (en) * | 2015-04-06 | 2019-09-03 | EMC IP Holding Company LLC | Scalable distributed data streaming computations across multiple data processing clusters |
US10425350B1 (en) | 2015-04-06 | 2019-09-24 | EMC IP Holding Company LLC | Distributed catalog service for data processing platform |
US10496926B2 (en) | 2015-04-06 | 2019-12-03 | EMC IP Holding Company LLC | Analytics platform for scalable distributed computations |
US10505863B1 (en) * | 2015-04-06 | 2019-12-10 | EMC IP Holding Company LLC | Multi-framework distributed computation |
US10541936B1 (en) * | 2015-04-06 | 2020-01-21 | EMC IP Holding Company LLC | Method and system for distributed analysis |
US10509684B2 (en) | 2015-04-06 | 2019-12-17 | EMC IP Holding Company LLC | Blockchain integration for scalable distributed computations |
US10511659B1 (en) * | 2015-04-06 | 2019-12-17 | EMC IP Holding Company LLC | Global benchmarking and statistical analysis at scale |
US10515097B2 (en) * | 2015-04-06 | 2019-12-24 | EMC IP Holding Company LLC | Analytics platform for scalable distributed computations |
US10944688B2 (en) | 2015-04-06 | 2021-03-09 | EMC IP Holding Company LLC | Distributed catalog service for data processing platform |
US10528875B1 (en) | 2015-04-06 | 2020-01-07 | EMC IP Holding Company LLC | Methods and apparatus implementing data model for disease monitoring, characterization and investigation |
US10860622B1 (en) | 2015-04-06 | 2020-12-08 | EMC IP Holding Company LLC | Scalable recursive computation for pattern identification across distributed data processing nodes |
US10541938B1 (en) | 2015-04-06 | 2020-01-21 | EMC IP Holding Company LLC | Integration of distributed data processing platform with one or more distinct supporting platforms |
US10812341B1 (en) | 2015-04-06 | 2020-10-20 | EMC IP Holding Company LLC | Scalable recursive computation across distributed data processing nodes |
US10791063B1 (en) | 2015-04-06 | 2020-09-29 | EMC IP Holding Company LLC | Scalable edge computing using devices with limited resources |
US10986168B2 (en) | 2015-04-06 | 2021-04-20 | EMC IP Holding Company LLC | Distributed catalog service for multi-cluster data processing platform |
US10776404B2 (en) | 2015-04-06 | 2020-09-15 | EMC IP Holding Company LLC | Scalable distributed computations utilizing multiple distinct computational frameworks |
US10268714B2 (en) * | 2015-10-30 | 2019-04-23 | International Business Machines Corporation | Data processing in distributed computing |
US10656861B1 (en) * | 2015-12-29 | 2020-05-19 | EMC IP Holding Company LLC | Scalable distributed in-memory computation |
US10530707B2 (en) * | 2016-02-18 | 2020-01-07 | Electronics And Telecommunications Research Institute | Mapreduce apparatus, and mapreduce control apparatus and method |
US20170244650A1 (en) * | 2016-02-18 | 2017-08-24 | Electronics And Telecommunications Research Institute | Mapreduce apparatus, and mapreduce control apparatus and method |
US11061736B2 (en) | 2016-08-18 | 2021-07-13 | International Business Machines Corporation | Multiple parallel reducer types in a single map-reduce job |
US10374968B1 (en) | 2016-12-30 | 2019-08-06 | EMC IP Holding Company LLC | Data-driven automation mechanism for analytics workload distribution |
US11663205B2 (en) * | 2017-05-04 | 2023-05-30 | Salesforce, Inc. | Technologies for asynchronous querying |
US11870840B2 (en) * | 2018-01-12 | 2024-01-09 | Workday, Inc. | Distributed partitioned map reduce using a data fabric |
US20190222633A1 (en) * | 2018-01-12 | 2019-07-18 | Workday, Inc. | Distributed partitioned map reduce using a data fabric |
US20190250958A1 (en) * | 2018-02-14 | 2019-08-15 | Capital One Services, Llc | Remotely managing execution of jobs in a cluster computing framework |
US11847502B2 (en) | 2018-02-14 | 2023-12-19 | Capital One Services, Llc | Remotely managing execution of jobs in a cluster computing framework |
US10514958B2 (en) | 2018-02-14 | 2019-12-24 | Capital One Services, Llc | Remotely managing execution of jobs in a cluster computing framework |
US12020065B2 (en) * | 2018-06-05 | 2024-06-25 | Samsung Electronics Co., Ltd. | Hierarchical processor selection |
CN110569122A (en) * | 2018-06-05 | 2019-12-13 | 三星电子株式会社 | Multiprocessor system, multi-core processing device, and method of operating the same |
US20210200584A1 (en) * | 2018-06-05 | 2021-07-01 | Samsung Electronics Co., Ltd. | Multi-processor system, multi-core processing device, and method of operating the same |
US11042549B2 (en) * | 2019-04-11 | 2021-06-22 | Sas Institute Inc. | Database server embedded process and code accelerator |
EP3905040A4 (en) * | 2020-03-05 | 2022-03-09 | Baidu Online Network Technology (Beijing) Co., Ltd. | Task migration method and apparatus, and electronic device and storage medium |
JP2022532739A (en) * | 2020-03-05 | 2022-07-19 | バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド | Task migration methods, equipment, electronic devices and storage media |
WO2021174791A1 (en) * | 2020-03-05 | 2021-09-10 | 百度在线网络技术(北京)有限公司 | Task migration method and apparatus, and electronic device and storage medium |
CN111506399A (en) * | 2020-03-05 | 2020-08-07 | 百度在线网络技术(北京)有限公司 | Task migration method and device, electronic equipment and storage medium |
US11822957B2 (en) | 2020-03-05 | 2023-11-21 | Baidu Online Network Technology (Beijing) Co., Ltd. | Task migration method, apparatus, electronic device and storage medium |
CN115336236A (en) * | 2020-03-31 | 2022-11-11 | 阿里巴巴集团控股有限公司 | Avoiding network congestion through ring-based trunking communications |
Also Published As
Publication number | Publication date |
---|---|
US9910888B2 (en) | 2018-03-06 |
US20180144025A1 (en) | 2018-05-24 |
US10635664B2 (en) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10635664B2 (en) | Map-reduce job virtualization | |
US10788989B2 (en) | Non-uniform memory access (NUMA) resource assignment and re-evaluation | |
EP3667500B1 (en) | Using a container orchestration service for dynamic routing | |
US10657061B1 (en) | Resource distribution using attributes of versioned hash rings | |
US10257115B2 (en) | Cloud-based service resource provisioning based on network characteristics | |
US11275622B2 (en) | Utilizing accelerators to accelerate data analytic workloads in disaggregated systems | |
US20180365074A1 (en) | Thread pool management | |
CN108431796B (en) | Distributed resource management system and method | |
US20220329651A1 (en) | Apparatus for container orchestration in geographically distributed multi-cloud environment and method using the same | |
US10356150B1 (en) | Automated repartitioning of streaming data | |
WO2018108001A1 (en) | System and method to handle events using historical data in serverless systems | |
US10489177B2 (en) | Resource reconciliation in a virtualized computer system | |
US20140282540A1 (en) | Performant host selection for virtualization centers | |
US20120254155A1 (en) | Duplicate search optimization | |
US10027596B1 (en) | Hierarchical mapping of applications, services and resources for enhanced orchestration in converged infrastructure | |
Katyal et al. | Application of selective algorithm for effective resource provisioning in cloud computing environment | |
US20140059094A1 (en) | Making use of a file path to determine file locality for applications | |
CN109614227A (en) | Task resource concocting method, device, electronic equipment and computer-readable medium | |
US11269691B2 (en) | Load distribution for integration scenarios | |
GB2564863A (en) | Containerized application platform | |
US10915704B2 (en) | Intelligent reporting platform | |
CN108228272B (en) | WEB container generation processing method, equipment and server | |
US10594620B1 (en) | Bit vector analysis for resource placement in a distributed system | |
CN109005071B (en) | Decision deployment method and scheduling equipment | |
Guo et al. | The improved job scheduling algorithm of Hadoop platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: RED HAT, INC., NORTH CAROLINA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:APPLETON, SHAUN DAVID;REEL/FRAME:033866/0413 Effective date: 20141001 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |