WO2011074699A1 - 分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法 - Google Patents

分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法 Download PDF

Info

Publication number
WO2011074699A1
WO2011074699A1 PCT/JP2010/073061 JP2010073061W WO2011074699A1 WO 2011074699 A1 WO2011074699 A1 WO 2011074699A1 JP 2010073061 W JP2010073061 W JP 2010073061W WO 2011074699 A1 WO2011074699 A1 WO 2011074699A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
processing
load
server
complete data
Prior art date
Application number
PCT/JP2010/073061
Other languages
English (en)
French (fr)
Inventor
慎二 中台
Original Assignee
日本電気株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Priority to US13/516,648 priority Critical patent/US20120259983A1/en
Priority to JP2011546196A priority patent/JP5929196B2/ja
Publication of WO2011074699A1 publication Critical patent/WO2011074699A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers

Definitions

  • the present invention relates to a distributed processing management server, a distributed system, a distributed processing management program, and a distributed processing management method.
  • Non-Patent Documents 1 to 3 disclose distributed systems that determine to which calculation server data stored in a plurality of computers is transmitted and processed. The system sequentially determines the nearest available calculation server from servers storing individual data, and determines overall communication.
  • Patent Document 1 discloses a system that moves a relay server so that the data transfer time is minimized when transferring data stored in one computer to one client 300.
  • Patent Document 2 discloses a system that performs divided transfer according to the line speed and load status of each transfer path when transferring a file from a file transfer source machine to a file transfer destination machine.
  • Patent Document 3 discloses a system in which a single job distribution apparatus divides data necessary for job execution and transmits the data to a plurality of calculation servers arranged in each of a plurality of network segments.
  • Patent Document 4 discloses a technique for creating a communication graph indicating the distance between processors and creating a communication schedule based on the graph. Jeffrey Dean and Sanjay Ghemawat, “MapReduce: Simplified Data Processing on Large Clusters”, Proceedings of the Sixth Symposium on OS4. Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung, “The Google File System, 10 Years of the Nineteenth Aperture” Keisuke Nishida, technology that supports Google, p. 74, p136-p163, April 25, 2008 JP-A-8-202726 JP2001-320439A JP 2006-236123 A JP-A-9-330304
  • An object of the present invention is to provide a distributed processing management server, a distributed system, a distributed processing management program, and a distributed processing management method that solve the above problems.
  • the distributed processing management server stores, for each of an identifier j of a plurality of processing servers, and one or more (m) complete data sets i, data that belongs to the complete data set ( (n, m or n is a plurality) data server identifiers (data server list i), and the communication load for each unit data amount between each processing server and each data server (inter-server communication load) And a complete data unit including a communication load (complete data unit amount acquisition load cij) in which each processing server receives the unit data amount of each complete data set from the data server in the data server list of each complete data set.
  • Load calculation means for calculating the amount processing load (c′ij), and a zero or more amount (communication amount fij) at which each processing server receives each complete data set, each complete data unit amount processing load and each communication
  • Processing allocation means for determining a predetermined sum of values including a product of the quantities (complete data processing load fijc′ij) to be a minimum and outputting the determination information.
  • a distributed processing management program stored in a computer-readable recording medium according to an embodiment of the present invention is stored in the computer for each of an identifier j of a plurality of processing servers and one or more (m) complete data sets i.
  • the identifier (data server list i) of one or more (n, m or n is plural) data servers that store data belonging to the complete data set is acquired, and between each acquired processing server and each data server Based on the communication load for each unit data amount (inter-server communication load), each processing server receives the unit data amount of each complete data set from the data servers in the data server list of each complete data set ( Load calculation processing for calculating a complete data unit amount processing load (c′ij) including a complete data unit amount acquisition load cij), and each processing server receives each complete data set Is determined such that a predetermined sum of values including the product of each complete data unit amount processing load and each communication amount (complete data processing load fijc'ij) is minimized, A process allocation process for outputting decision information is executed.
  • the distributed processing management method stores at least one identifier j of a plurality of processing servers and one or more (m pieces) of complete data sets i for storing data belonging to the complete data set ( (n, m or n is a plurality) data server identifiers (data server list i), and the communication load for each unit data amount between each processing server and each data server (inter-server communication load) And a complete data unit including a communication load (complete data unit amount acquisition load cij) in which each processing server receives the unit data amount of each complete data set from the data server in the data server list of each complete data set.
  • the amount processing load (c′ij) is calculated, and each processing server receives each complete data set from 0 or more (communication amount fij), and the product of each complete data unit amount processing load and each communication amount (complete data).
  • the determination information is output so that the predetermined sum of the values including the processing load fijc′ij) is minimized.
  • the present invention can realize data transmission / reception between appropriate servers as a whole when a plurality of data storage servers and a plurality of processable servers are provided.
  • FIG. 1A is a configuration diagram of a distributed system 340 according to the first embodiment.
  • FIG. 1B shows a configuration example of the distributed system 340.
  • FIG. 2A illustrates an inefficient communication example of the distributed system 340.
  • FIG. 2B shows an example of efficient communication of the distributed system 340.
  • FIG. 3 shows configurations of the client 300, the distributed processing management server 310, the processing server 320, and the data server 330.
  • FIG. 4 illustrates a user program input to the client 300.
  • FIG. 5A shows an example of a data set and data elements.
  • FIG. 5B shows a distributed form of the data set.
  • FIG. 6A illustrates information stored in the data location storage unit 3120.
  • FIG. 6B illustrates information stored in the server state storage unit 3110.
  • FIG. 6C illustrates the configuration of the decision information.
  • FIG. 6D illustrates a general configuration of the communication load matrix C.
  • FIG. 6E illustrates the communication load matrix C in the first embodiment.
  • FIG. 7A shows a combination of the amount of data stored in the data server 330 and the division processing described in the present embodiment (1/2).
  • FIG. 7B shows a combination of the amount of data stored in the data server 330 and the division processing described in this embodiment (2/2).
  • FIG. 8 is an overall operation flowchart of the distributed system 340.
  • FIG. 9 is an operation flowchart of the client 300 in step 801.
  • FIG. 10 is an operation flowchart of the distributed processing management server 310 in step 802.
  • FIG. 11 is an operation flowchart of the distributed processing management server 310 in step 803.
  • FIG. 9 is an operation flowchart of the client 300 in step 801.
  • FIG. 10 is an operation flowchart of the distributed processing management server 310 in step 802.
  • FIG. 11 is an operation flowchart
  • FIG. 12 is an operation flowchart of the distributed processing management server 310 in step 805.
  • FIG. 13 illustrates a user program input to the client 300 according to the third embodiment.
  • FIG. 14 illustrates another user program input to the client 300 according to the third embodiment.
  • FIG. 15 is an operation flowchart of the distributed processing management server 310 in steps 802 and 803 according to the third embodiment.
  • FIG. 16 exemplifies a set of data server lists when associated is specified in association with the appearance order of data elements.
  • FIG. 17 is an operation flowchart of the distributed processing management server 310 in step 803 according to the fourth embodiment.
  • FIG. 18A shows a configuration of a distributed system 340 used in a specific example such as the first embodiment.
  • FIG. 18B shows information stored in the server state storage unit 3110 included in the distributed processing management server 310.
  • FIG. 18C shows information stored in the data location storage unit 3120 included in the distributed processing management server 310.
  • FIG. 18D shows a user program input to the client 300.
  • FIG. 18E shows a communication load matrix C.
  • FIG. 18F shows the flow rate matrix F.
  • FIG. 18G shows data transmission / reception determined based on the flow rate matrix F of FIG. 18F.
  • FIG. 19A shows a user program input in the specific example of the second embodiment.
  • FIG. 19B shows information stored in the data location storage unit 3120 in the first example of the second embodiment.
  • FIG. 19C shows a communication load matrix C.
  • FIG. 19D shows the flow rate matrix F.
  • FIG. 19A shows a user program input in the specific example of the second embodiment.
  • FIG. 19B shows information stored in the data location storage unit 3120 in the first example of the second embodiment.
  • FIG. 19C shows a communication
  • FIG. 19E shows data transmission / reception determined based on the flow rate matrix F of FIG. 19D.
  • FIG. 19F is an example of an operation flowchart for creating the flow rate matrix F by the process allocation unit 314.
  • FIG. 19G shows a matrix conversion process in objective function minimization.
  • FIG. 19H shows information stored in the data location storage unit 3120 in the second example of the second embodiment.
  • FIG. 19I shows the communication load matrix C.
  • FIG. 19J shows the flow rate matrix F shown.
  • FIG. 19K shows data transmission / reception determined based on the flow rate matrix F of FIG. 19J.
  • FIG. 20A shows information stored in the data location storage unit 3120 of the first example of the third embodiment.
  • FIG. 20B shows the configuration of the distributed system 340 of the first example.
  • FIG. 20C shows a communication load matrix C.
  • FIG. 20D shows a flow rate load matrix F.
  • FIG. 20E shows information stored in the data location storage unit 3120 of the second example of the third embodiment.
  • FIG. 20F shows the configuration of the distributed system 340 of the second example.
  • FIG. 20G is an operation flowchart for acquiring a data server list by the load calculation unit 313.
  • FIG. 20H shows a work table for the first data set (MyDataSet1) used in the processing of FIG. 20G.
  • FIG. 20I shows a work table for the second data set (MyDataSet2) used in the processing of FIG. 20G.
  • FIG. 20J shows an output list created by the process of FIG. 20G.
  • FIG. 20K shows the communication load matrix C.
  • FIG. 20L shows the flow rate load matrix F.
  • FIG. 21A shows a configuration of a distributed system 340 as a specific example of the fourth embodiment.
  • FIG. 21B shows information stored in the data location storage unit 3120.
  • FIG. 21C shows an example of restoration of encoded partial data.
  • FIG. 21D shows the communication load matrix C.
  • FIG. 21E shows the flow rate matrix F.
  • FIG. 22A shows a stem configuration of a specific example of the first example of the fifth embodiment.
  • FIG. 22B shows a communication load matrix C.
  • FIG. 22C shows the flow rate matrix F.
  • FIG. 22D shows the inter-server bandwidth measured by the inter-server load acquisition unit 318 and the like.
  • FIG. 22E shows a communication load matrix C.
  • FIG. 22F shows the flow rate matrix F.
  • FIG. 23 shows a distributed system 340 that includes a plurality of output servers 350 in addition to the distributed processing management server 310, the plurality of data servers 330, and the plurality of processing servers 320.
  • FIG. 24 shows an embodiment of the
  • DESCRIPTION OF SYMBOLS 300 Client 301 Structure program storage part 302 Processing program storage part 303 Process request part 304 Process requirement storage part 310 Distributed processing management server 313 Load calculation part 314 Process allocation part 315 Memory 316 Work area 317 Distributed processing management program 318 Inter-server load acquisition part 320 processing server 321 P data storage unit 322 P server management unit 323 program library 330 data server 331 D data storage unit 332 D server management unit 340 distributed system 350 output server 3110 server state storage unit 3111 P server ID 3112 Load information 3113 Configuration information 3120 Data location storage unit 3121 Data set name 3122 Distributed form 3123 Partial data description 3124 Local file name 3125 D server ID 3126 Data volume 3127 Partial data name
  • FIG. 1A is a configuration diagram of a distributed system 340 according to the first embodiment.
  • the distributed system 340 includes a distributed processing management server 310, a plurality of processing servers 320, and a plurality of data servers 330 connected by a network 350.
  • the distributed system 340 may include the client 300 and other servers not shown.
  • the distributed processing management server 310 is also called a distributed processing management device
  • the processing server 320 is also called a processing device
  • the data server 330 is also called a data device
  • the client 300 is also called a terminal device.
  • Each data server 330 stores data to be processed.
  • Each processing server 320 has processing capability to receive data from the data server 330, execute a processing program, and process the data.
  • the client 300 requests the distributed processing management server 310 to start data processing.
  • the distributed processing management server 310 determines how much data the processing server 320 receives from which data server 330 and outputs the determination information. Each data server 330 and processing server 320 performs data transmission / reception based on the determination information.
  • the processing server 320 processes the received data.
  • the distributed processing management server 310, the processing server 320, the data server 330, and the client 300 may be dedicated devices or general-purpose computers.
  • One apparatus or computer (computer or the like) may have a plurality of functions of the distributed processing management server 310, the processing server 320, the data server 330, and the client 300 (distributed processing management server 310 or the like). . In many cases, one computer or the like functions as both the processing server 320 and the data server 330.
  • FIG. 1B, 2A, and 2B show examples of the configuration of the distributed system 340.
  • the processing server 320 and the data server 330 are described as computers.
  • the network 350 is described as a data transmission / reception path via a switch.
  • the distributed processing management server 310 is not specified.
  • the distributed system 340 includes, for example, computers 113 to 115 and switches 104 and 107 to 109 that connect them. Computers and switches are accommodated in racks 110 to 112, which are further accommodated in data centers 101 to 102, and the data centers are connected by inter-base communication 103.
  • FIG. 1B illustrates a distributed system 340 in which switches and computers are connected in a star shape.
  • 2A and 2B illustrate a distributed system 340 configured with cascaded switches.
  • 2A and 2B show examples of data transmission / reception between the data server 330 and the processing server 320, respectively.
  • the computers 205 and 206 function as the data server 330
  • the computers 207 and 208 function as the processing server 320.
  • the computer 220 functions as the distributed processing management server 310.
  • 2A and 2B among the computers connected by the switches 202 to 204, other than 207 and 208 are executing other processes and cannot be used.
  • computers 205 and 206 store processing target data 209 and 210, respectively.
  • Available computers 207 and 208 include processing programs 211 and 212.
  • the processing target data 209 is transmitted through the data transmission / reception path 213 and processed by the available computer 208.
  • the processing target data 210 is transmitted through the data transmission / reception path 214 and processed by the available computer 207.
  • the processing target data 209 is transmitted through the data transmission / reception path 234 and processed by the available computer 207.
  • the processing target data 210 is transmitted through the data transmission / reception path 233 and processed by the available computer 208.
  • the communication between the switches is performed three times, whereas in the data transmission / reception in FIG. 2B, the communication is performed once.
  • FIG. 2B has a lower communication load and is more efficient than the data transmission / reception in FIG. 2A.
  • a system that sequentially determines the computer that performs data transmission / reception based on the structural distance for each processing target data may perform inefficient transmission / reception as illustrated in FIG. 2A.
  • the distributed system 340 of this embodiment increases the possibility of performing efficient data transmission / reception shown in FIG. 2B in the situation illustrated in FIGS. 2A and 2B.
  • the configuration of the computer or the like is, for example, a combination of a plurality of configurations of the distributed processing management server 310 or the like.
  • the computer or the like may share common components without overlapping.
  • the configuration of the server is, for example, the sum of the configurations of the distributed processing management server 310 and the processing server 320.
  • the P data storage unit 321 and the D data storage unit 331 may be a common storage unit.
  • the processing server 320 includes a P data storage unit 321, a P server management unit 322, and a program library 323.
  • the P data storage unit 321 stores data uniquely identified in the distributed system 340. The logical configuration of this data will be described later.
  • the P server management unit 322 executes the processing requested by the client 300 for the data stored in the P data storage unit 321.
  • the P server management unit 322 executes the processing program stored in the program library 323 and executes the processing.
  • Data to be processed is received from the data server 330 designated from the distributed management server 310 and stored in the P data storage unit 321.
  • the processing server 320 is the same computer as the data server 330, the data to be processed may be stored in the P data storage unit 321 in advance before the client 300 requests the processing.
  • the processing program is received from the client 300 when the client 300 requests processing, and stored in the program library 323.
  • the processing program may be received from the data server 330 or the distributed processing management server 310, or may be stored in advance in the program library 323 from before the processing request of the client 300.
  • the data server 330 includes a D data storage unit 331 and a D server management unit 332.
  • the D data storage unit 331 stores data uniquely identified in the distributed system 340.
  • the data may be data output by the data server 330 or data being output, data received from another server, or data read from a storage medium or the like.
  • the D server management unit 332 transmits the data stored in the D data storage unit 331 from the distributed processing management server 310 to the designated processing server 320.
  • the data transmission request is received from the processing server 320 or the distributed processing management server 310.
  • the client 300 includes a structure program storage unit 301, a processing program storage unit 302, a processing request unit 303, and a processing requirement storage unit 304.
  • the structure program storage unit 301 stores processing information for data and data structure information obtained by the processing. The user of the client 300 designates such information.
  • the structure program storage unit 301 stores information on the structure in which the same processing is performed on each specified set of data, information on the storage destination of the data set obtained by performing the same processing, or another data set. Stores structural information that is received by a subsequent process.
  • the structure information is information that defines a structure in which, for example, a process designated for a designated input data set is executed in the previous stage and output data of the previous stage process is aggregated in the subsequent stage.
  • the processing program storage unit 302 stores a processing program that describes what kind of processing is to be performed on a specified data set and data elements included therein. For example, the processing program stored here is distributed to the processing server 320 and the processing is performed.
  • the processing requirement storage unit 304 stores a request regarding the amount of the processing server 320 to be used when the processing is executed by the distributed system 340.
  • the amount of the processing server 320 may be specified by the number of units, or may be specified by a processing capability conversion value based on the number of CPUs (Central Processing Unit).
  • the processing requirement storage unit 304 may store a request regarding the type of the processing server 320.
  • the type of the processing server 320 may be a type related to an OS (Operating System), a CPU, a memory, and a peripheral device, or may be a quantitative index related to them such as a memory amount.
  • Information stored in the structure program storage unit 301, the processing program storage unit 302, and the processing requirement storage unit 304 is given to the client 300 as a user program or a system parameter.
  • FIG. 4 illustrates a user program input to the client 300.
  • the user program is composed of (a) a structure program and (b) a processing program.
  • the structure program and the processing program may be directly described by the user, or may be generated by a compiler or the like as a result of compiling the application program described by the user.
  • the structure program describes a data name to be processed, a processing program name, and processing requirements.
  • the processing target data name is described, for example, as an argument of the set_data clause.
  • the processing target program name is described, for example, as an argument of the set_map clause or the set_reduce clause.
  • the processing requirement is described, for example, as an argument of the set_config clause.
  • the structure program in FIG. 4 describes, for example, that a processing program called MyMap is applied to a data set called MyDataSet and a processing program called MyReduce is applied to the output result.
  • FIG. 4C shows a structure of the user program. This structure diagram is added for the purpose of facilitating understanding of the specification and is not included in the user program. This is also true for user programs described in the following figures.
  • the processing program describes the data processing procedure.
  • the processing program in FIG. 4 specifically describes processing procedures such as MyMap and MyReduce in a program language.
  • the distributed processing management server 310 includes a data location storage unit 3120, a server state storage unit 3110, a load calculation unit 313, an inter-server load acquisition unit 318, a process allocation unit 314, and a memory 315.
  • the data location storage unit 3120 stores one or more identifiers of the data server 330 storing data belonging to the data set for the name of the data set uniquely identified in the distributed system 340.
  • a data set is a set of one or more data elements.
  • a data set may be defined as a set of data element identifiers, a set of data element group identifiers, a set of data satisfying common conditions, or may be defined as the union or intersection of these sets.
  • a data element is a unit of input or output of one processing program. As shown in the structure program of FIG. 4, the data set may be explicitly specified by an identification name in the structure program, or may be specified by a relationship with other processing such as an output result of the specified processing program. .
  • FIG. 5A shows an example of a data set and data elements. This figure illustrates the correspondence in the distributed file system.
  • the data element is each distributed file.
  • the data set is a set of distributed files, and is specified by, for example, a distributed file directory name, enumeration of a plurality of distributed file names, or a common condition specification for the file name.
  • the data set may be an enumeration of a plurality of distributed file directory names.
  • the unit received as an argument by the processing program is a row or record
  • the data element is each row or record in the distributed file.
  • the data set is, for example, a distributed file.
  • the data set may be a table in a relational database, and the data element may be each row of the table.
  • the data set may be a container such as Map or Vector of a program such as C ++ or Java (registered trademark), and the data element may be a container element.
  • the data set may be a matrix, and the data element may be a row, a column, or a matrix element.
  • the relationship between this data set and elements is defined by the contents of the processing program. This relationship may be described in the structure program.
  • the data set to be processed is determined by specifying the data set or registering a plurality of data elements, and the correspondence with the data server 330 storing the data set is stored in the data location. Stored in the unit 3120.
  • Each data set may be divided into a plurality of subsets (partial data) and distributed to a plurality of data servers 330 (FIG. 5B (a)).
  • servers 501 to 552 are data servers 330.
  • Certain distributed data may be multiplexed and arranged on two or more data servers 330 (FIG. 5B (b)).
  • the processing server 320 may input a data element from any one of the multiplexed distributed data in order to process the multiplexed data element.
  • Certain distributed data may be encoded and arranged in n (three or more) data servers 330 (FIG. 5B (c)).
  • the encoding is performed using a known Erasure code or a Quorum method.
  • the processing server 320 may input the data element from the minimum number k of the encoded distributed data obtained (k is smaller than n).
  • FIG. 6A illustrates information stored in the data location storage unit 3120.
  • the data location storage unit 3120 stores a plurality of rows for each data set name 3121 or partial data name 3127.
  • the row of the data set includes a description to that effect (distributed form 3122) and a partial data description 3123 for each partial data belonging to the data set.
  • the partial data description 3123 includes a set of a local file name 3124, a D server ID 3125, and a data amount 3126.
  • the D server ID 3125 is an identifier of the data server 330 that stores the partial data. The identifier may be a unique name in the distributed system 340 or an IP address.
  • the local file name 3124 is a unique file name in the data server 330 in which the partial data is stored.
  • the data amount 3126 is the number of gigabytes (GB) indicating the size of the partial data.
  • the row corresponding to the data set includes a description of the distributed arrangement (distributed form 3122), and the partial data A partial data name 3127 (SubSet1, SubSet2, etc.) is stored.
  • the data location storage unit 3120 stores the row corresponding to the partial data name 3127 (for example, the sixth and seventh rows in FIG. 6A).
  • partial data for example, SubSet1
  • the row of the partial data includes a description to that effect (distributed form 3122) and a partial data description 3123 for each multiplexed data of the partial data. Is included.
  • the partial data description 3123 includes an identifier (D server ID 3125) of the data server 330 that stores the multiplexed data of the partial data, a unique file name (local file name 3124) in the data server 330, and a data size (data amount). 3126) is stored.
  • the row of the partial data includes a description to that effect (distributed form 3122) and a partial data description 3123 for each encoded data of the partial data.
  • the partial data description 3123 includes an identifier (D server ID 3125) of the data server 330 that stores the encoded data of the partial data, a unique file name (local file name 3124) in the data server 330, and a data size (data amount).
  • the distribution form 3122 also includes a description that partial data can be restored by obtaining arbitrary k pieces of data among n pieces of encoded data.
  • the data set (for example, MyDataSet2) may be multiplexed without being divided into partial data.
  • the partial data description 3123 of the row of the data set exists in correspondence with the multiplexed data of the data set.
  • the partial data description 3123 includes an identifier (D server ID 3125) of the data server 330 storing the multiplexed data, a unique file name (local file name 3124) and a data size (data amount 3126) in the data server 330.
  • the data set (for example, MyDataSet3) may be encoded without being divided into partial data.
  • the data set (for example, MyDataSet4) may not be divided into partial data, redundant, or encoded.
  • the data location storage unit 3120 may not include the description of the distributed form 3122.
  • the distributed processing management server 310 or the like switches processing described below based on the description of the distributed form 3122.
  • the data to be processed is stored in the D data storage unit 331 before the client 300 requests data processing. Data to be processed may be given to the data server 330 by the client 300 or another server when the client 300 requests data processing.
  • FIG. 3 shows a case where the distributed processing management server 310 exists in a specific computer or the like.
  • the server status storage unit 3110 and the data location storage unit 3120 are technologies such as a distributed hash table. May be stored in distributed devices.
  • FIG. 6B illustrates information stored in the server state storage unit 3110.
  • the server state storage unit 3110 stores a P server ID 3111, load information 3112, and configuration information 3113 for each processing server 320 operated in the distributed system 340.
  • the P server ID 3111 is an identifier of the processing server 320.
  • the load information 3112 includes information related to the processing load of the processing server 320, such as a CPU usage rate and an input / output busy rate.
  • the configuration information 3113 includes configuration information and setting status information of the processing server 320, for example, OS and hardware specifications. Even if the information stored in the server status storage unit 3110 or the data location storage unit 3120 is updated by the status notification from the processing server 320 or the data server 330, the response information obtained by the distributed processing management server 310 inquiring the status May be updated by The process allocation unit 314 receives a data processing request from the process request unit 303 of the client 300. The process allocation unit 314 selects a process server 320 to be used for the process, determines which process server 320 should acquire and process a data set from which data server 330, and outputs determination information. FIG. 6C illustrates the configuration of the decision information. The determination information illustrated in FIG.
  • the decision information specifies which data server 330 the received processing server 320 should receive from which data server 330.
  • the determination information includes received data specifying information.
  • the received data specifying information is information for specifying which data in the data set is a reception target.
  • the received data specifying information is a set of data identifiers and a section designation (start position, transfer amount) in the local file of the data server 330. is there.
  • the received data specifying information indirectly defines the data transfer amount.
  • Each processing server 320 that has received the decision information requests data transmission from the data server 330 specified by the information.
  • the determination information may be transmitted to each data server 330 by the process allocation unit 314.
  • the determination information specifies which data set to which processing server 320 should be transmitted.
  • the data processing request received from the client 300 by the processing allocation unit 314 includes a data set name 3121 to be processed, a processing program name indicating processing contents, a structure program describing the relationship between the processing program and the data set, and a processing program entity. Is included. If the distributed processing management server 310 or the processing server 320 already has a processing program, the data processing request may not include the substance of the processing program.
  • the data processing request may not include the structural program.
  • the data processing request may include restrictions and quantities as processing requirements of the processing server 320 used for the processing.
  • the constraints are the OS and hardware specifications of the processing server 320 to be selected.
  • the quantity is the number of servers to be used, the number of CPU cores, or the like.
  • the process allocation unit 314 activates the load calculation unit 313.
  • the load calculation unit 313 refers to the data location storage unit 3120 to obtain a list of data servers 330 storing data belonging to the complete data set, for example, a set of identifiers of the data server 330 (data server list). .
  • the complete data set is a set of data elements necessary for the processing server 320 to execute processing.
  • the complete data set is determined from the structure program description (set_data clause) and the like.
  • the structure program shown in FIG. 4A indicates that the complete data set of the MyMap process is a set of data elements of MyDataSet.
  • each data server list is an identifier (D server ID 3125) of one data server 330 that stores each partial data, and is a list having one element.
  • the first complete data set of MyDataSet1 that is, the server list of partial data (d1, j1, s1) is a list with j1 as the number of elements.
  • the server list of the second complete data set of MyDataSet1, that is, partial data (d2, j2, s2) is a list with j2 as the number of elements. Therefore, the load calculation unit 313 acquires j1 and j2 as a set of data server lists. It should be noted that the processing targeted for the data set of another distributed form 3122 will be described in a subsequent embodiment.
  • the load calculation unit 313 refers to the server state storage unit 3110, selects a processing server 320 that can be used for data processing, and acquires its identifier set.
  • the load calculation unit 313 may refer to the load information 3112 to determine whether or not the processing server 320 can be used for data processing. For example, the load calculation unit 313 may determine that the processing server 320 is not available if it is being used in another calculation process (the CPU usage rate is equal to or greater than a predetermined threshold). Further, the load calculation unit 313 may refer to the configuration information 3113 and determine that the processing server 320 that does not satisfy the processing requirements included in the data processing request received from the client 300 cannot be used. For example, when the data processing request specifies a specific CPU type or OS type and the configuration condition 3113 of a certain processing server 320 includes another CPU type or OS type, the load calculation unit 313 displays the processing server 320. May not be available.
  • the server state storage unit 3110 may include priorities not shown in the configuration information 3113.
  • the priority stored in the server status storage unit 3110 is, for example, the priority of processing (other processing) other than data processing requested by the processing server 320 from the client 300.
  • the priority is stored during execution of other processes. Even when the processing server 320 is executing another process and the CPU usage rate is high, the load calculation unit 313 determines that the processing server 320 has a lower priority than the priority included in the data processing request. 320 may be acquired as available. The same unit transmits a processing stop request during execution to the processing server 320 acquired in this way.
  • the priority included in the data processing request is acquired from a program or the like input to the client 300.
  • the structure program includes priority designation in the Set_config clause.
  • the load calculation unit 313 stores, in the memory 315, the communication load matrix C having the complete data unit acquisition load cij as an element based on the load related to communication between each processing server 320 and the data server 330 (inter-server communication load) acquired as described above.
  • the server-to-server communication load is information that expresses the degree of avoidance of communication between two servers (repellency) as a value per unit communication data amount.
  • the inter-server communication load is, for example, a communication time per unit communication amount or a buffer amount (retention data amount) on the communication path.
  • the communication time may be the time required for one packet to be transmitted or the time required for transferring a certain amount of data (the reciprocal of the bandwidth of the link layer, the reciprocal of the available bandwidth at that time, etc.).
  • the load may be an actually measured value or an estimated value.
  • the inter-server load acquisition unit 318 is stored in a storage device or the like (not shown) of the distributed processing management server 310, and the average of communication performance data between two servers or between racks that accommodate the servers Calculate statistics.
  • the same unit stores the calculated value as a communication load between servers in the work area 316 or the like.
  • the load calculation unit 313 refers to the work area 316 and obtains the communication load between servers.
  • the inter-server load acquisition unit 318 may calculate a predicted value of the inter-server communication load from the above-described performance data using a time series prediction technique. Further, the same unit may assign a finite degree coordinate to each server, obtain a delay value estimated from the Euclidean distance between the coordinates, and use it as the communication load between servers. The same unit may obtain a delay value estimated from the matching length from the head of the IP address assigned to each server, and may use it as the communication load between servers. Furthermore, the communication load between servers may be a payment amount to a communication company generated per unit communication amount.
  • an inter-server communication matrix between each processing server 320 and the data server 330 is given to the load calculation unit 313 as a system parameter or the like by an administrator of the distributed system 340 or the like.
  • the inter-server load acquisition unit 318 becomes unnecessary.
  • the communication load matrix C is a matrix with the complete data unit acquisition load cij as elements, in which the processing servers 320 acquired above are arranged in columns and the data server list is arranged in rows.
  • the complete data unit acquisition load cij is a communication load for the processing server j to obtain a unit communication amount of the complete data set i.
  • the communication load matrix C may include a value (complete data unit processing load c′ij) obtained by adding the processing capability index value of the processing server j to cij.
  • FIG. 6D illustrates the communication load matrix C.
  • the complete data unit acquisition load cij is obtained only from the data server i storing the partial data i. Load. That is, the complete data unit acquisition load cij is the inter-server communication load between the data server i and the processing server j.
  • FIG. 6E illustrates the communication load matrix C in the present embodiment.
  • the process assignment unit 314 calculates a flow rate matrix F that minimizes the objective function.
  • the flow rate matrix F is a communication amount (flow rate) matrix having rows and columns corresponding to the obtained communication load matrix C.
  • the objective function has a communication load matrix C as a constant and a flow rate matrix F as a variable.
  • the objective function is a sum (Sum) function if the objective is to minimize the total communication load applied to the entire distributed system 340, and the objective function is maximum (Max) if the objective is to minimize the longest execution time of data processing. It becomes a function.
  • the objective function to be minimized by the process allocation unit 314 and the constraint equation used at the time of the minimization are described in the distributed system 340 as to how data is distributed to each data server 330 and a method of processing the data. Depends on.
  • the objective function and the constraint expression are given to the distributed processing management server 310 by the system administrator or the like as system parameters or the like according to the distributed system 340.
  • the data amount of each data server 330 is measured by a binary amount such as megabytes (MB) or the number of blocks divided in advance into a predetermined amount. As illustrated in FIG. 7A, the amount of data stored in each data server 330 may be the same as the case where it differs for each data server 330. In addition, data stored in one data server 330 may or may not be divided by different processing servers 320 and processed.
  • the load calculation unit 313 uses an objective function and a constraint equation according to the case shown in FIG. 7A.
  • the amount of the target data set distributed to the data server 330 is uniform (701) and a case where the amount is not uniform (702).
  • non-uniformity (702) there are a case where the data server 330 holding the data is associated with a plurality of processing servers 320 (704), and a case where only one processing server 320 is associated (703). is there.
  • the case of corresponding to a plurality of processing servers 320 is, for example, a case where data is divided and the plurality of processing servers 320 process a part thereof.
  • segmentation in the case of uniform is processed by including in the case of nonuniformity (704), for example. Further, as shown in FIG.
  • the distributed processing management server 310 treats the same data server 330 as a plurality of different servers in the processing even when it is not uniform (705), and when it is uniform (706). Including.
  • an objective function and a constraint equation are shown for these three models.
  • the second and subsequent embodiments use one of the three models described above, but other models may be adopted depending on the target distributed system 340.
  • the symbols used in the formula are as follows.
  • VD is a set of data servers 330
  • VN is a set of available processing servers 320.
  • cij is a complete data unit acquisition load.
  • cij is an inter-server communication load between i, which is an element of VD, and j, which is an element of VN, and is an element of communication load matrix C.
  • fij is an element of the flow rate matrix F, and is a communication amount between i, which is an element of VD, and j, which is an element of VN.
  • di is the amount of data stored in all servers i belonging to the VD.
  • is added for the specified set, and Max is the maximum value for the specified set.
  • Min represents minimization, and s. t. Represents a constraint.
  • the objective function minimizing formula for the model 701 in FIG. 7A takes the objective function of Formula 1 or Formula 2, and the constraint formulas are Formula 3 and Formula 4. min.
  • the amount of communication between servers is calculated.
  • the same part calculates the amount of communication between servers so as to minimize the maximum value of the number obtained by adding the product over all the data servers 330 in each processing server 320.
  • the communication amount takes a value of 0 or 1 depending on whether or not to transmit, and the sum of the communication amount over all the processing servers 320 is 1 for any data server 330.
  • the process allocation unit 314 multiplies the communication load from each data server i in Expression 1 and Expression 2 by the data amount di in each data server i.
  • the process allocation unit 314 uses the objective function of Expression 1 or Expression 2 and the constraint expressions of Expression 7 and Expression 8. s. t. fij ⁇ 0 ( ⁇ i ⁇ VD, ⁇ j ⁇ VN). . . (7) s. t.
  • the processing allocation unit 314 restricts that the total amount of traffic from the data server i matches the data amount in the server i with respect to the flow rate that was transferred from the data server i in Expression 3 (0 or 1). Is calculated as a continuous value.
  • the objective function can be minimized by using linear programming or nonlinear programming, Hungarian method for bipartite graph matching, negative closed-loop method for minimum cost flow problem, flow increase method or preflow push method for maximum flow problem, etc. realizable.
  • the process allocation unit 314 is implemented to execute any one of the above-described solutions.
  • the processing allocation unit 314 selects the processing server 320 to be used for data processing (the communication amount fij is not 0), and the determination information as illustrated in FIG. 6C based on the flow rate matrix F Is generated. Subsequently, the process allocation unit 314 transmits the determination information to the P server management unit 322 of the processing server 320 to be used.
  • the processing allocation unit 314 may distribute the processing program received from the client 300 at the same time, for example.
  • Each unit in the client 300, the distributed processing management server 310, the processing server 320, and the data server 330 may be realized as a dedicated hardware device, or realized by a CPU such as the client 300 that is also a computer executing a program. May be.
  • the processing allocation unit 314 and the load calculation unit 313 of the distributed management server 310 may be realized as a dedicated hardware device. These may be realized by the CPU of the distributed processing management server 310 that is also a computer executing the distributed processing management program 317 loaded in the memory 315.
  • the above-described model, constraint equation, and objective function specification may be described in a structure program or the like and given from the client 300 to the distributed processing management server 310, or given to the distributed processing management server 310 as a startup parameter or the like. May be. Further, the distributed processing management server 310 may determine the model with reference to the data location storage unit 3120 and the like. The distributed processing management server 310 may be mounted so as to correspond to all models, constraint equations, and objective functions, or may be mounted only to correspond to a specific model or the like. Next, the operation of the distributed system 340 will be described with reference to a flowchart. FIG. 8 is an overall operation flowchart of the distributed system 340.
  • the client 300 interprets the program and transmits a data processing request to the distributed processing management server 310 (step 801).
  • the distributed processing management server 310 acquires a set of the data server 330 storing the partial data of the processing target data set and the available processing server 320 (step 802).
  • the distributed processing management server 310 creates a communication load matrix C based on the acquired inter-server communication load between each processing server 320 and each data server 330 (step 803).
  • the distributed processing management server 310 receives the communication load matrix C and determines the amount of communication between each processing server 320 and each data server 330 so as to minimize a predetermined objective function under predetermined constraints (step). 804).
  • the distributed processing management server 310 causes each processing server 320 and each data server 330 to perform data transmission / reception according to the determination, and causes each processing server 320 to process the received data (step 805).
  • FIG. 9 is an operation flowchart of the client 300 in step 801.
  • the processing request unit 303 of the client 300 extracts the input / output relationship between the processing target data set and the processing program from the structure program, and stores the extracted information in the structure program storage unit 301 (step 901).
  • the same unit stores the contents of the processing program, interface information, etc. in the processing program storage unit 302 (step 902).
  • the same unit extracts the server resource amount or server resource type necessary for data processing from the structure program or setting information given in advance, and stores the extracted information in the processing requirement storage unit 304 (step 903).
  • the processing request unit 303 stores the data belonging to the data set in the D data storage unit 331 of the data server 330 selected on the basis of a predetermined standard such as a communication bandwidth and a storage capacity. (Step 904).
  • the same unit generates a data processing request with reference to the structural program storage unit 301, the processing program storage unit 302, and the processing requirement storage unit 304, and transmits the data processing request to the processing allocation unit 314 of the distributed processing management server 310 (step 905).
  • FIG. 10 is an operation flowchart of the distributed processing management server 310 in step 802.
  • the load calculation unit 313 refers to the data location storage unit 3120, and acquires a set of data servers 330 that stores each partial data of the processing target data set specified by the data processing request received from the client 300 (Step 1001). ).
  • the set of data servers 330 means a set of identifiers of the data server 330.
  • the same unit acquires a set of available processing servers 320 that satisfy the processing requirements specified in the data processing request with reference to the server state storage unit 3110 (step 1002).
  • FIG. 11 is an operation flowchart of the distributed processing management server 310 in step 803.
  • the load calculation unit 313 of the distributed processing management server 310 calculates the inter-server communication load between each acquired data server 330 and each processing server 320 via the inter-server load acquisition unit 318 and creates a communication load matrix C. (Step 1103). In step 804, the load calculation unit 313 minimizes the objective function based on the communication load matrix C. This minimization is performed using linear programming or Hungarian method. Specific examples of operations using the Hungarian method will be described later with reference to FIGS. 19F and 19G.
  • FIG. 12 is an operation flowchart of the distributed processing management server 310 in step 805.
  • the process allocation unit 314 of the distributed process management server 310 calculates the sum of the total traffic received by the process server j for the process server j in the acquired process server 320 set (step 1201) (step 1202). If the value is not 0 (NO in step 1203), the process allocation unit 314 sends the process program to the process server j. Further, the same unit instructs the processing server j to “submit a data acquisition request to the data server i whose communication volume with itself is not 0 and execute data processing” (step 1204). For example, the process assignment unit 314 creates the decision information illustrated in FIG. 6C and transmits it to the process server j.
  • the processing allocation unit 314 may impose a certain constraint d′ j on the total amount of traffic for the processing server j, as indicated by Equation 9A. s. t. ⁇ i ⁇ VD fij ⁇ d′ j ( ⁇ j ⁇ VN). . . (9A) However, the process allocation unit 314 sets d′ j so as to satisfy Expression 9B. ⁇ i ⁇ VD di ⁇ ⁇ j ⁇ VN d′ j. . . (9B)
  • the first effect of the distributed system 340 of the present embodiment is that, when a plurality of data servers 330 and a plurality of processing servers 320 are provided, data transmission / reception between appropriate servers as a whole can be realized.
  • the reason is that the distributed processing management server 310 determines the data server 330 and the processing server 320 that perform transmission / reception from the entire arbitrary combination of the data servers 330 and the processing servers 320. In other words, the distributed processing management server 310 pays attention to the individual data server 330 and the processing server 320 and does not sequentially determine data transmission / reception between the servers.
  • Data transmission / reception of the distributed system 340 reduces delays in calculation processing due to insufficient network bandwidth and adverse effects on systems sharing other networks.
  • the second effect of the present distributed system 340 is the size of communication delay between servers, the bandwidth narrowness, the frequency of failure, the low priority compared to other systems sharing the same communication path, etc. The communication load of various viewpoints can be reduced.
  • the reason is that the distributed processing management server 310 determines appropriate data transmission / reception between servers by a method that does not depend on the nature of the load.
  • the load calculation unit 313 can input an actual value or estimated value of transmission time, a communication band, a priority, or the like as the communication load between servers.
  • the third effect of the present distributed system 340 is that it is possible to select whether to reduce the total amount of communication load or reduce the communication load of the route with the largest communication load according to the needs of the user.
  • the process allocation unit 314 of the distributed processing management server 310 can minimize an objective function selected from a plurality of expressions such as Expression 1 and Expression 2.
  • the fourth effect of the distributed system 340 is that even if other processing is being executed by the processing server 320, if the priority of the requested data processing is high, the other processing is interrupted and the processing server close to the data is obtained. 320 can be processed. As a result, the distributed system 340 can implement appropriate data transmission / reception between servers as a whole of high priority processing.
  • the reason is that the priority of the processing being executed by the processing server 320 is stored in the server state storage unit 3110 and includes the priority of the new data processing requested for the data processing request. If the latter priority is high, This is because data is transmitted to the processing server 320 regardless of the load.
  • the distributed processing management server 310 performs processing allocation determination that also has the effect of leveling the amount of data processed by each processing server 320.
  • the processing allocation unit 314 uses the processing capability information of the processing server 320 stored in the server state storage unit 3110.
  • the processing capacity information is the number of CPU clocks, the number of cores, or a quantified index similar to them.
  • As a method used by the processing allocation unit 314 of this embodiment there are a method of including a processing capability index in a constraint equation and a method of including it in an objective function.
  • the process allocation unit 314 of the present embodiment may be realized using either method.
  • the process allocation unit 314 refers to the load information 3112 and the configuration information 3113 of the server state storage unit 3110, and calculates the available processing capacity ratio pj of each available processing server j acquired by the load calculation unit 313. .
  • Expression 10B using the maximum allowable value d′ j of the data amount processed in the processing server j is given to the process allocation unit 314.
  • the process allocation unit 314 calculates d′ j based on, for example, Expression 10A.
  • the positive coefficient ⁇ (> 0) is a value that defines the degree to which an error from the allocation according to the processing capability ratio is allowed in consideration of the communication load between servers, and is a processing allocation unit as a system parameter or the like. 314.
  • d′ j (1 + ⁇ ) pj ⁇ i ⁇ VD di ( ⁇ j ⁇ VN). . (10A) s. t. ⁇ i ⁇ VD fij ⁇ d′ j ( ⁇ j ⁇ VN). . . .
  • the processing allocation unit 314 distributes the total data amount of all the data servers 330 by the processing capacity ratio of the processing server 320, and the total amount of data transmission / reception amount of each processing server 320 receives only a data amount comparable to this. Restrict to something that is not. When it is not necessary to strictly perform the capacity ratio allocation, the system administrator or the like gives a large ⁇ value to the process allocation unit 314. In this case, the process allocation unit 314 minimizes the objective function by allowing the existence of the processing server 320 that receives a data amount that is somewhat larger than the capacity ratio.
  • each processing server 320 performs a uniform amount of data processing.
  • the load calculation unit 313 creates the communication load matrix C in the objective function shown in Equation 1, Equation 2, Equation 5, and Equation 6 using the complete data unit amount processing load c′ij as an element. To do.
  • the complete data unit amount processing load c′ij is a value obtained by adding the server processing load to the complete data unit amount processing load cij, and is given by Expression 11.
  • is a processing time per unit data amount.
  • each data processing is described in a structure program or specified in a system parameter of the distributed processing management server 310 to process the data. This is given to the allocation unit 314.
  • the server processing load is a value obtained by normalizing ⁇ with respect to the processing capability pj of each server. c′ij ⁇ cij + ⁇ / pj ( ⁇ i ⁇ VD, ⁇ j ⁇ VN). . (11) That is, as the amount of communication from the data server i to the processing server j increases, a load proportional to the reciprocal of the processing capacity of the processing server j is added to the value of the objective function simultaneously with the addition of cij.
  • This method is particularly useful when the maximum value of the total complete data processing load per processing server 320 is minimized, such as when the objective function is Equation 2.
  • the processing allocation unit 314 reduces the time of the processing server 320 having the largest sum of the reception time of the total amount of data received by the processing server j and the processing time after reception. Determine data transmission / reception between servers.
  • An additional effect of the present distributed system 340 is that the objective function can be minimized in consideration of not only the communication load at which the processing server 320 receives data but also the processing capability of the processing server 320. As a result, for example, leveling at the completion time of both data reception and processing of each processing server 320 can be performed.
  • FIG. 13 illustrates a user program input to the client 300 of this embodiment.
  • the structure program of FIG. 13 describes that a direct product of two data sets, MyDataSet1 and MyDataSet2 (specified by the cartesian specification in the set_data clause) is processed.
  • This structure program describes that a processing program called MyMap is first executed and a processing program called MyReduce is applied to the output result.
  • FIG. 13C is a diagram expressing this structure.
  • Data consisting of a direct product of two data sets MyDataSet1 and MyDataSet2 is combination data consisting of data elements 11 and 12 included in the former and data elements 21 and 22 included in the latter.
  • four sets of data are input to MyMap.
  • the distributed system 340 of this embodiment can be used for any process that requires a direct product operation between sets.
  • each data set may take any of the distributed forms 3122 such as a simple distributed arrangement, a redundant distributed arrangement, an encoded distributed arrangement (see FIGS. 5B and 6A), and the like. good.
  • the data server list is a list of data servers 330 that store any partial data of each data set.
  • the set of data lists is all combinations of the list of the data server 330 storing any partial data of each data set.
  • the set of data server lists is a set of lists of data servers 330 obtained by direct product of sets of data servers 330 storing partial data of a plurality of processing target data sets.
  • the complete data unit amount acquisition load cij in the present embodiment is a communication load for the processing server j to acquire each unit data amount (for example, one data element) from each data server 330 belonging to the server list i. Therefore, cij is the sum of communication loads between servers between the processing server j and the data servers 330 belonging to the server list i.
  • FIG. 15 is an operation flowchart of the distributed processing management server 310 in steps 802 and 803 (FIG. 8) according to the third embodiment. That is, in this embodiment, this figure replaces FIG. 10 and FIG.
  • the load calculation unit 313 acquires a set of data servers 330 storing partial data of the data set from the partial data description 3123 of the data location storage unit 3120.
  • the same unit obtains a direct product of a set of these N data servers 330 and sets each element of the direct product as a data server list (step 1501).
  • the same unit acquires a set of available processing servers 320 that satisfy the processing requirements of the data processing request with reference to the server state storage unit 3110 (step 1502).
  • the same unit executes the following processing for the combination of each data server list i (step 1503) acquired in the above step and each server j (step 1504) in the processing server 320 set.
  • the same part calculates the communication load between servers by a method shown in a fourth embodiment described later.
  • the same unit sets a communication load matrix C that uses the sum ⁇ bij for k of the obtained inter-server communication load list ⁇ bkj ⁇ i for k as a complete data unit amount acquisition load cij between the data server list i and the processing server j.
  • Generate step 1506. If the sum of the data amount of each data set is not uniform, the load calculation unit 313 sets the sum weighted by the data element size ratio for each data set as the complete data unit amount acquisition load cij.
  • the weight may be weighted by the data amount ratio of the data set instead of weighting by the size ratio of the data elements.
  • the process allocation unit 314 performs minimization of the objective function and the like (after step 804 in FIG. 8) using the communication load matrix C generated here.
  • the user program input by the distributed system 340 of the present embodiment is not limited to a program that processes a direct product of a plurality of data sets. For example, the user program selects, from each of a plurality of data sets, data elements associated with each other in the same order, having the same identifier, and the like, and processes a set composed of the selected data elements. It may include a processing program.
  • Such a user program is, for example, a program that processes data element sets (in this case, pairs) in the same order of two data sets, MyDataSet1 and MyDataSet2.
  • FIG. 14 is an example of such a program.
  • the structure program in such a user program describes, for example, that a related data element set of two specified data sets is a processing target (specified by an associated specification in the set_data clause).
  • a set of element sets obtained from a plurality of data sets specified by the structure program is a complete data set. Therefore, the data server list is a list of data servers 330 that store any partial data of each data set.
  • the set of data server lists is different from the case of the user program of FIG.
  • the load calculation unit 313 divides each of a plurality of data sets to be processed into partial data having a size proportional to the data amount, and sets the partial data of the same rank.
  • a set of lists of the data server 330 storing the set is acquired.
  • a set of acquired lists is a set of data server lists.
  • FIG. 16 exemplifies a set of data server lists when associated is specified in association with the appearance order of data elements.
  • MyDataSet1 having a data amount of 8 GB is composed of 6 GB partial data 11 stored on the data server n1 and 2 GB partial data 12 stored on the data server n2.
  • MyDataSet2 having a data amount of 4 GB is composed of a 2 GB partial data 21 stored on the data server n3 and a 2 GB partial data 22 stored on the data server n4.
  • the same part is divided into three parts: (first half 4 GB of partial data 11, partial data 21), (second half 2 GB of partial data 11, first half 1 GB of partial data 22), and (partial data 12, second half 1 GB of partial data 22).
  • Get a pair of partial data The same unit obtains a set of (n1, n3), (n1, n4), and (n2, n4) as a set of data server lists storing these partial data pairs.
  • the subsequent processing is the same as in FIG.
  • An additional effect of the distributed system 340 of the present embodiment is that a predetermined sum of network loads is reduced even when the processing server 320 inputs and processes a plurality of data element sets belonging to each of a plurality of data sets.
  • a fourth embodiment will be described with reference to the drawings.
  • the distributed system 340 of this embodiment handles multiplexed or encoded data.
  • the program example input to the client 300 of this embodiment may be any of those shown in FIG. 4, FIG. 13, or FIG.
  • an example of a user program to be input is as shown in FIG.
  • the processing target data set specified by the set_data clause is MyDataSet5 illustrated in FIG. 6A.
  • the data set to be processed is stored in a different data server 330 for each partial data.
  • the same data is duplicated and stored in a plurality of data servers 330 (for example, data servers jd1, jd2). Multiplexing is not limited to duplexing.
  • the data servers jd1 and jd2 in FIG. 6A correspond to, for example, the servers 511 and 512 in FIG. 5B.
  • Data server 330 in which partial data (such as SubSet2 in FIG.
  • the data servers je1 to jen in FIG. 6A correspond to the servers 531 to 551 in FIG. 5B, for example.
  • the partial data (SubSet2 or the like) is divided into a certain redundant number n, and the partial data can be restored when a certain minimum acquisition number k (k ⁇ n) or more is acquired.
  • the load calculation unit 313 may be realized so that partial data distributed by Quorum is handled in the same manner as encoded partial data. Quorum is a method for reading and writing distributed data with consistency.
  • the copy number n, the read constant and the write constant k are stored in the distributed form 3122 and given to the load calculation unit 313.
  • the load calculation unit 313 handles the copy number by replacing the redundancy number and the read constant and the write constant with the minimum acquisition number.
  • each partial data is a complete data set.
  • the complete data unit acquisition load cij is an arbitrary one of n data servers i1 to data servers in (data server list) that stores the multiplexed data of the partial data i. It becomes the load which receives the unit traffic from. Therefore, the load calculation unit 313 sets the complete data unit acquisition load cij to be the smallest among the communication loads between servers between each of the data server i1 to the data server in and the processing server j.
  • the complete data unit acquisition load cij is n data servers i1 to data servers in (data server list) for storing redundant data of the partial data i.
  • FIG. 17 is an operation flowchart of the distributed processing management server 310 in step 803 (FIG. 8) according to the fourth embodiment. In other words, this figure replaces FIG. 11 in the present embodiment. In addition, this figure is a flowchart in case each partial data is made redundant by Erasure encoding or Quorum. When k is replaced with 1, this figure becomes a flowchart corresponding to the multiplexed partial data.
  • the same unit extracts k values from the smaller one of the inter-server communication load list ⁇ bmj ⁇ i and adds them, and adds the added value to element cij (partial data i and processing server j of i row j column).
  • a communication load matrix C as a complete data unit amount acquisition load) is generated (step 1705).
  • the same unit stores in the work area 316 which server has been selected from the inter-server communication load list ⁇ bmj ⁇ i (step 1706).
  • the process allocation unit 314 performs minimization of the objective function and the like (after step 804 in FIG. 8) using the communication load matrix C generated here.
  • each of a plurality of pieces of data constituting the partial data i that is multiplexed or encoded is further multiplexed or encoded.
  • the partial data i may be multiplexed or encoded in multiple stages. Any combination of multiplexing or encoding schemes at each stage is free. The number of stages is not limited to two. In such a case, the row corresponding to the partial data name 3127 (for example, SubSet1) in FIG.
  • the load calculation unit 313 that refers to such a data location storage unit 3120 acquires a data server list having a nested structure for the partial data i. Further, the same part performs the inter-server communication load addition in step 1705 in the deepest order for each of the nested data server lists, and finally creates a communication load matrix C.
  • the processing server 320 To restore a certain set of k chunks (recoverable set).
  • the load calculation unit 313 takes “k values from the smaller ones of ⁇ bmj ⁇ i and adds them, and sets the added value as an element cij of i rows and j columns”. I can't. Instead, the same unit sets the minimum decodable communication load ij as cij.
  • the minimum decodable communication load ij is the minimum value among the added values of the elements of ⁇ bmj ⁇ i regarding the data server mi that stores each chunk belonging to each recoverable set i of the partial data i.
  • bmj is a load considering the data amount of the fragment m. Further, which chunk constitutes each specific k set is described in the attribute information of each chunk at the time of being chunked.
  • the load calculation unit 313 identifies chunks belonging to each recoverable set with reference to the information.
  • the load calculation unit 313, uses two recoverable sets Vm ⁇ n1, n2, n4 , P1, p2 ⁇ and ⁇ n1, n2, n3, p1, p2 ⁇ are retrieved from the chunk attribute information.
  • the same section sets ⁇ m ⁇ Vm ⁇ bmj ⁇ i related to Vm having the smallest ⁇ m ⁇ Vm ⁇ bmj ⁇ i as cij, out of the two recoverable sets Vm.
  • specific k pieces are arbitrary k pieces, even if either value is set to cij, the result is the same.
  • each processing server j receives data of the same ratio wj determined for each processing server 320 from all the data servers 330.
  • the program example input to the client 300 of this embodiment may be any of those shown in FIG. 4, FIG. 13, or FIG.
  • the program in FIG. 4 describes that a processing program called MyReduce is applied to a data set output by a processing program called MyMap.
  • MyReduce for example, the data elements of the output data set of the MyMap process are input, and the data elements are grouped into data elements having a predetermined condition or given by a structure program or the like, and a plurality of coherent data sets are generated. It is processing.
  • processing is, for example, processing called Shuffle or GroupBy.
  • the MyMap process is a process of inputting a set of Web pages, extracting words from each page, and outputting the number of occurrences in the page as an output data set together with the extracted words.
  • the MyReduce process is a process of inputting the output data set, checking the number of occurrences of all words in all pages, and adding the results of the same word over all pages.
  • the processing server 320 of the MyReduce processing that performs a certain ratio of Shuffle or GroupBy processing of all words acquires a certain ratio of data from all the processing servers 320 of the MyMap processing in the previous stage. There is a case.
  • the distributed processing management server 310 of this embodiment is used when determining the processing server 320 for the subsequent processing in such a case.
  • the distributed processing management server 310 according to the present embodiment can be realized so that the output data set of the MyMap process is handled in the same way as the input data set in the first to fourth embodiments. That is, the distributed processing management server 310 of the present embodiment is configured to function by regarding the processing server 320 for the upstream processing, that is, the processing server 320 for storing the output data set of the upstream processing, as the data server 330 for the downstream processing. obtain.
  • the distributed processing management server 310 of this embodiment estimates the data amount of the output data set of the MyMap process from the expected value of the ratio of the input data set of the MyMap process and the input / output data amount ratio of the MyMap process. You can ask for it.
  • the distributed processing management server 310 can determine the processing server 320 for the MyReduce process before the completion of the MyMap process by obtaining the estimated value.
  • the distributed processing management server 310 according to the present embodiment receives the request for determination of the Reduce processing execution server, and similarly to the distributed processing management server 310 according to the first to fourth embodiments, the objective function of Formula 1 or Formula 2 is used. Is minimized (step 804 in FIG. 8).
  • the distributed processing management server 310 minimizes the objective function by adding the constraints of Expressions 12 and 13.
  • di is the data amount of the data server i.
  • this value is, for example, the output data amount of the MyMap process or a predicted value thereof.
  • wj represents the ratio of processing server j.
  • ⁇ j ⁇ VN wj 1, wj ⁇ 0 ( ⁇ j ⁇ VN). . . (13)
  • minimization of the objective function with fij as a variable becomes minimization of the objective function with wj as a variable as in Expression 14 and Expression 15.
  • the process allocation unit 314 may be realized so as to obtain wj by minimizing Expression 14 or 15, and calculate fij therefrom. min. ⁇ j ⁇ VN ( ⁇ i ⁇ VD dicij) wj. . . (14) min. Maxj ⁇ VN ( ⁇ i ⁇ VD dicij) wj. . . (15) Except for the points described above (step 804 in FIG.
  • the distributed system 340 of this embodiment operates in the same manner as in the first to fourth embodiments (FIG. 8 and the like).
  • the process allocation unit 314 uses the calculated result to determine how much data amount is to be processed by which processing server 320. Further, the same part determines a processing server j whose traffic is not 0 from wj or fij, and determines how much data the processing server j acquires from each data server i.
  • Each processing server 320 of the distributed system 340 may have a certain amount of load in advance.
  • the distributed processing management server 310 according to the present embodiment may be realized so as to minimize Equation 2 by reflecting the load. In this case, the process allocation unit 314 minimizes Expression 16 as an objective function instead of Expression 2.
  • the processing server j having the maximum total value of the addition value obtained by adding the load ⁇ j of the processing server j to the complete data processing load fijc'ij (fijcij when the server processing load is not considered) is the minimum addition. Determine fij to take a value.
  • the load ⁇ j is a value set in advance when some communication load or processing load is indispensable to use the processing server j.
  • the load ⁇ j may be given to the process allocation unit 314 as a system parameter or the like.
  • the process allocation unit 314 may receive the load ⁇ j from the process server j.
  • the processing server 320 When the processing server 320 performs data aggregation such as Shuffle processing, the constraints of Expression 12 and Expression 13 are applied, and the objective function of Expression 16 is a function having wj as a variable as shown in Expression 17.
  • the process allocation unit 314 is realized so as to obtain wj by minimizing Expression 17 and calculate fij therefrom. min. Maxj ⁇ VN ⁇ i ⁇ VD cijfij + ⁇ j. . . (16) min. Maxj ⁇ VN ( ⁇ i ⁇ VD dicij) wj + ⁇ j. . .
  • An additional first effect of the distributed system 340 of the present embodiment is that the communication load can be reduced under the condition that the data of each data server 330 is distributed to the plurality of processing servers 320 at a fixed rate. The reason is that the objective function is minimized by adding the ratio information to the constraint condition.
  • An additional second effect of the distributed system 340 according to the present embodiment is that when processing (reception data) is allocated to the processing server 320, even if the processing server 320 has some load in advance, the load Processing can be assigned in consideration of the above. As a result, the distributed system 340 can reduce variations at the time of completion of processing in each processing server 320.
  • the reason why such an effect can be obtained is that the objective function can be minimized by including the load that the processing server 320 currently bears in the objective function, in particular, the maximum load can be minimized.
  • the distributed system 340 according to the present embodiment is also effective in reducing the communication load when the output result of the pre-stage process is transferred to the processing server 320 of the post-stage process when receiving the output result of the pre-stage process and performing the post-stage process. It is.
  • the distributed processing management server 310 according to the present embodiment can function by regarding the processing server 320 for the upstream processing, that is, the processing server 320 for storing the output data set of the upstream processing, as the data server 330 for the downstream processing. is there.
  • FIG. 18A shows a configuration of a distributed system 340 used in this specific example.
  • the operation of the distributed system 340 according to each embodiment described above will be described with reference to FIG.
  • the distributed system 340 includes servers n1 to n6 connected by switches 01 to 03.
  • the servers n1 to n6 function as both the processing server 320 and the data server 330 depending on the situation.
  • Servers n2, n5, and n6 each store partial data d1, d2, and d3 of a certain data set.
  • any of the servers n1 to n6 functions as the distributed processing management server 310.
  • FIG. 18B shows information stored in the server state storage unit 3110 included in the distributed processing management server 310.
  • the load information 3112 stores the CPU usage rate. When the server is executing another calculation process, the CPU usage rate of the server increases.
  • the load calculation unit 313 of the distributed processing management server 310 compares the CPU usage rate of each server with a predetermined threshold (such as 50% or less) to determine whether each server can be used. In this example, it is determined that the servers n1 to n5 can be used.
  • FIG. 18C shows information stored in the data location storage unit 3120 included in the distributed processing management server 310.
  • FIG. 18D shows a user program input to the client 300.
  • This user program describes that the data set MyDataSet should be processed by a processing program called MyMap.
  • MyMap When the user program is input, the client 300 interprets the structure program and the processing program, and transmits a data processing request to the distributed processing management server 310.
  • the server state storage unit 3110 is in the state illustrated in FIG. 18B and the data location storage unit 3120 is in the state illustrated in FIG.
  • the load calculation unit 313 of the distributed processing management server 310 refers to the data location storage unit 3120 in FIG. 18C to obtain ⁇ n2, n5, n6 ⁇ as a set of data servers 330.
  • the same unit obtains ⁇ n1, n2, n3, n4 ⁇ as a set of processing servers 320 from the server state storage unit 3110 in FIG. 18B.
  • the same unit sets the communication load between servers for each of all combinations in which elements are selected one by one from each of these two sets of servers ( ⁇ n2, n5, n6 ⁇ , ⁇ n1, n2, n3, n4 ⁇ ). Based on this, a communication load matrix C is created.
  • FIG. 18E shows the created communication load matrix C.
  • the load between servers is the number of switches existing on the communication path between servers.
  • the number of switches between servers is given in advance to the load calculation unit 313 as a system parameter.
  • the inter-server load acquisition unit 318 may acquire configuration information using a configuration management protocol and give the configuration information to the load calculation unit 313.
  • the distributed system 340 is a system in which the network connection is known from the server IP address
  • the inter-server load acquisition unit 318 acquires the IP address from the server identifier such as n2 and obtains the inter-server communication load. good.
  • FIG. 18E shows a communication load matrix C when the communication load between servers is assumed to be 0 within the same server, 5 between servers within the same switch, and 10 between switches.
  • the process allocation unit 314 initializes the usage matrix F based on the communication load matrix C of FIG. 18E and minimizes the objective function of Expression 1 under the constraints of Expression 3 and Expression 4.
  • FIG. 18F shows a flow rate matrix F obtained as a result of the objective function minimization.
  • the processing allocation unit 314 transmits the processing program obtained from the client 300 to n1 to n3, and further transmits determination information to the processing servers n1, n2, and n3, and the data Instruct reception and processing execution.
  • the processing server n1 that has received the decision information acquires and processes the data d2 from the data server n5.
  • the processing server n2 processes the data d1 on the data server n2 (same server).
  • the processing server n3 acquires and processes the data d3 on the data server n6.
  • FIG. 18G shows data transmission / reception determined based on the flow rate matrix F of FIG. 18F.
  • the data sets to be processed are distributed in a plurality of data servers 330 with different data amounts. Data of one data server 330 is divided, and the data is transferred to a plurality of processing servers 320 for processing.
  • two examples will be described to show the difference in the objective function and the difference between the method for adding the load equalization condition to the constraint equation and the method for including it in the objective function.
  • the first example reduces the total network load (Equation 1), and the second example reduces the network load (Equation 2) of the slowest processing. Further, the first example includes a load equalization condition in the constraint equation. The second example includes load equalization conditions in the objective function. Regarding the communication load matrix, the first example uses a delay inferred from the topology of a switch or a server, and the second example uses a measured available bandwidth.
  • the configuration shown in FIG. 18A is also used in the specific example of the second embodiment. However, the data amount of the data d1 to d3 is not the same.
  • FIG. 19A shows a user program input in the specific example of the second embodiment.
  • the structure program of the program includes designation of processing requirements (set_config clause).
  • the server state storage unit 3110 in the specific example of the second embodiment is the same as FIG. 18B.
  • the configuration information 3113 corresponding to each processing server 320 includes the same number of CPU cores and the same number of CPU clocks.
  • FIG. 19B shows information stored in the data location storage unit 3120 in the first example of the second embodiment. The information indicates that the data amounts of the partial data d1, d2, and d3 are 6 GB, 5 GB, and 5 GB, respectively.
  • ⁇ N1, n2, n3, n4 ⁇ is obtained as a set.
  • the same unit obtains ⁇ n2, n5, n6 ⁇ as a set of data servers 330 with reference to the data location storage unit 3120 in FIG. 19B.
  • the same unit obtains a communication load matrix C from these two sets and the inter-server communication load between the servers.
  • FIG. 19C shows a communication load matrix C of the first example.
  • the processing allocation unit 314 obtains the data amount of partial data belonging to the processing target data set stored by each data server 330 from the data storage unit 312 of FIG. 19B.
  • the same unit obtains the relative value of the performance of each processing server 320 from the server state storage unit 3110.
  • the same unit obtains a processing capacity ratio of 1: 1: 1: 1: 1 from the number of CPU cores and the number of CPU clocks of each processing server 320.
  • the objective function of Equation 1 is minimized.
  • the data amount of each data server 330 is 6 GB, 5 GB, and 5 GB, respectively. Since the performance relative values of the respective processing servers 320 are the same, the processing servers n1 to n4 all process 4 GB data.
  • the same part obtains the flow rate matrix F of FIG. 19D.
  • the sum of products (complete data processing load) of the flow rate of the flow rate matrix F in FIG. 19D and the complete data unit amount processing load is 85.
  • the sum may be 150.
  • the load calculation unit 313 uses the number of servers specified in the processing requirements as a candidate for the available processing server 320, the MyMap processing is executed on all the processing servers n1 to n4. Accordingly, the process allocation unit 314 transmits the process program obtained from the client 300 to the process servers n1 to n4.
  • the same unit transmits decision information to each of the processing servers n1 to n4 to instruct data reception and processing execution.
  • the processing server n1 that has received the decision information receives and processes 2 GB of data d1 from the data server n2 and 2 GB of data d2 from the data server n5.
  • the processing server n2 processes 4 GB of data d1 on the same server.
  • the processing server n3 receives 1 GB of data d2 from the data server n5 and 3 GB of data d3 from the data server n6 and processes them.
  • the processing server n4 receives and processes 2 GB of data d3 from the data server n6 and 2 GB of data d2 from the data server n5.
  • FIG. 19E shows data transmission / reception determined based on the flow rate matrix F of FIG. 19D.
  • FIG. 19F is an example of an operation flowchart for creating the flow rate matrix F by the process allocation unit 314.
  • the figure illustrates a flowchart using the Hungarian method in a bipartite graph.
  • FIG. 19G shows a matrix conversion process in objective function minimization. The operation flowchart for objective function minimization is presented only here, and is omitted in the following examples. Therefore, FIG.
  • 19F takes as an example a case where, in addition to the above-described conditions and settings, the amount of data stored in each data server 330 is different, and the amount of received data is limited in the processing server 320.
  • the process allocation unit 314 subtracts the value of each column of that row by the minimum value of that row, and performs the same processing for each column (step 1801).
  • the matrix 01 is obtained from the matrix 00 (communication load matrix C) in FIG. 19G.
  • the same part generates a bipartite graph consisting of zero elements in the matrix 01 (step 1802) and obtains a bipartite graph 11.
  • the same part traces the processing vertex on the bipartite graph from the remaining vertex of the data amount, sequentially traces the data vertex of the path having the flow already assigned from the processing vertex (Step 1804), and obtains the flow 12. . Since a flow cannot be allocated from this state (No in step 1805), the same part adds an edge 13 through which data can flow to the bipartite graph, and modifies the matrix 01 to allow more load (step). 1806). As a result, the same part obtains a matrix 02.
  • the same section again generates a bipartite graph from the matrix 02 (step 1802), and searches for a route from a data vertex having a remaining data amount to a processing vertex to which a flow can be allocated (step 1804).
  • the edge from the processing vertex to the data vertex belongs to the edge belonging to the already assigned flow.
  • the alternative path 14 of the search result reaches from the data vertex d1 to the processing vertex n4 via the processing vertex n1 and the data vertex d2.
  • the same unit obtains the data amount remaining at the data vertex on the alternative path 14, the data amount that can be allocated at the processing vertex, and the minimum value of the already allocated flow amount.
  • FIG. 19H shows information stored in the data location storage unit 3120 in the second example of the second embodiment. The information indicates that the data amounts of the partial data d1, d2, and d3 are 7 MB, 9 MB, and 8 MB, respectively.
  • the load calculation unit 313 refers to the server state storage unit 3110 in FIG.
  • the inter-server load acquisition unit 318 measures the available bandwidth of the inter-server communication path, obtains the inter-server communication load (2 / minimum bandwidth between the servers ij (Gbps)) based on the measured value, and gives the load to the load calculation unit 313. . It is assumed that the measured values are 200 Mbps between the switches 01-02, 100 Mbps between the switches 02-03, and 1 Gbps between servers in the switch in FIG. 19K (and FIG. 18A).
  • the process allocation unit 314 uses the communication load matrix C to minimize the objective function of Equation 2 under the constraints of Equations 7 and 8. As a result of this minimization, the same part obtains a flow rate matrix F shown in FIG. 19J.
  • the same unit transmits decision information to each of the processing servers n1 to n4, and instructs data reception and processing execution.
  • the processing server n1 that has received the decision information receives and processes 4.9 MB of data d2 from the data server n5.
  • the processing server n2 processes 7 MB of data d1 stored therein, and further receives and processes 0.9 MB of data d2 from the data server n5.
  • the processing server n3 receives 2.9 MB of data d2 from the data server n5 and processes it.
  • the processing server n4 receives and processes 0.3 MB of data d2 from the data server n5 and 8 MB of data d3 from the data server n6.
  • the specific example of the third embodiment shows an example in which a plurality of data sets are input and processed.
  • the distributed system 340 of the first example processes a Cartesian product set of a plurality of data sets (cartesian designation).
  • each data set is distributed and held in a plurality of data servers 330 with the same data amount.
  • the distributed system 340 of the second example processes a set of data elements associated with a plurality of data sets (associated designation).
  • the system distributes each data set to a plurality of data servers 330 with different data amounts.
  • the number of data elements included in each data set is the same, and the data amount (data element size, etc.) is different.
  • the user program input by the distributed system 340 of the first example is the user program shown in FIG.
  • This program describes that a processing program called MyMap is applied to each element included in the Cartesian product set of two data sets, MyDataSet1 and MyDataSet2.
  • the program also describes MyReduce processing but ignores it in this example.
  • FIG. 20A shows information stored in the data location storage unit 3120 of the first example. That is, MyDataSet1 is stored separately in a local file d1 of the data server n2 and a local file d2 of the data server n5.
  • FIG. 20B shows the configuration of the distributed system 340 of the first example.
  • the distributed system 340 includes servers n1 to n6 connected by switches.
  • the servers n1 to n6 function as both the processing server 320 and the data server 330 depending on the situation.
  • any of the servers n1 to n6 functions as the client 300 and the distributed processing management server 310.
  • the distributed processing management server 310 receives a data processing request from the client 300.
  • the load calculation unit 313 of the distributed processing management server 310 lists the local files (d1, d2) and (D1, D2) that configure MyDataSet1 and MyDataSet2 from the data location storage unit 3120 in FIG. 20A.
  • the same unit lists ⁇ (d1, D1), (d1, D2), (d2, D1), (d2, D2) ⁇ as a set of local file pairs that store the Cartesian data set of MyDataSet1 and MyDataSet2.
  • the same unit obtains a set of data server lists ⁇ (n2, n4), (n2, n5), (n6, n4), (n6, n5) ⁇ from the local file pair with reference to the data location storage unit 3120 To do.
  • the same unit refers to the server state storage unit 3110 to obtain ⁇ n1, n2, n3, n4 ⁇ as a set of available processing servers 320.
  • the same unit acquires the inter-server communication load between each processing server 320 and the data server 330 in each data server list with reference to the output result of the inter-server load acquisition unit 318 and the like.
  • the same unit obtains the inter-server communication load ⁇ (5, 20), (5, 10), (10, 20), (10, 10) ⁇ between the processing server n1 and each data server 330 in the data server list, for example. .
  • the same part adds the inter-server communication load for each data server list, and generates a column ⁇ 25, 15, 30, 20 ⁇ corresponding to the processing server n1 in the communication load matrix C.
  • the same unit performs the same processing for each processing server 320, and creates a communication load matrix C between the set of data server lists and the set of processing servers 320 described above.
  • FIG. 20C shows the created communication load matrix C.
  • the process assigning unit 314 receives the communication load matrix C and obtains a flow rate matrix F that minimizes Equation 1 under the constraint equations of Equations 3 to 4.
  • FIG. 20D shows the obtained flow rate load matrix F.
  • the same section creates decision information based on the obtained flow rate load matrix F and transmits it to the processing servers n1 to n4.
  • FIG. 20B shows data transmission / reception according to the determination information.
  • the processing server n1 receives and processes the data d2 of the data server n6 and the data D2 of the data server n5.
  • the user program input by the distributed system 340 of the second example is the user program shown in FIG.
  • This program describes that a processing program called MyMap is applied to an element pair that is associated one-to-one with two data sets of MyDataSet1 and MyDataSet2.
  • FIG. 20E shows information stored in the data location storage unit 3120 of the second example. Unlike the first example, the data amount of each local file is not the same.
  • the data amount of the local file d1 is 6 GB, but d2, D1, and D2 are 2 GB.
  • FIG. 20F shows the configuration of the distributed system 340 of the second example.
  • the distributed system 340 includes servers n1 to n6 connected by switches.
  • the servers n1 to n6 function as both the processing server 320 and the data server 330 depending on the situation.
  • any of the servers n1 to n6 functions as the client 300 and the distributed processing management server 310.
  • the distributed processing management server 310 receives a data processing request from the client 300.
  • the load calculation unit 313 of the distributed processing management server 310 refers to the data location storage unit 3120 and acquires a set of data server lists for obtaining a complete data set composed of sets of MyDataSet1 and MyDataSet2 elements.
  • FIG. 20G is an operation flowchart for acquiring a data server list by the load calculation unit 313. This process replaces the process in step 1504 in FIG.
  • FIG. 20H shows a work table for the first data set (MyDataSet1) used in this processing.
  • FIG. 20I shows a work table for the second data set (MyDataSet2) used in this processing.
  • FIG. 20J shows an output list created by this processing.
  • the work table and output list are created in the work area 316 of the distributed management server 310 and the like.
  • Data elements 1 to 450 are stored in the data d1 of the first data set MyDataSet1, and data elements index 451 to 600 are stored in the data d2.
  • An index is, for example, an order in a data set of data elements.
  • the load calculation unit 313 stores the last index of each subset of the first data set in the work table of FIG. 20H.
  • the same unit may calculate 8 GB as the data amount of this data set from the data amounts of the data d1 and d2, and store the cumulative ratio of the ratio to the whole in the work table of FIG. 20H.
  • Data elements from indexes 1 to 300 are stored in data D1 of the second data set MyDataSet2, and data elements from indexes 301 to 600 are stored in data D2.
  • the same part Prior to this processing, the same part stores the last index of each partial data of the second data set in the work table of FIG. 20I.
  • the same unit may calculate 4 GB as the data amount of this data set from the data amounts of the data D1 and D2, and store the cumulative ratio of the ratio to the whole in the work table of FIG. 20I.
  • the load calculation unit 313 initializes the pointers of the two data sets to point to the first row of each work table, initializes the current and past indexes to 0, and initializes the output list to be empty (step 2001). .
  • the next steps 2002 and 2503 have no meaning in the first execution.
  • the same unit compares the index of the first data set pointed to by the two pointers with the index of the second data set (step 2004). Since the second data index is small between the index 450 of the first data set and the index 300 of the second data set, the same unit substitutes the index 300 for the current index.
  • the same section forms a set of data elements in the range indicated by the past and current indexes (0, 300), and stores this information in the index and ratio column of the first line (FIG.
  • the value stored in the output list as the amount of data in this set is the amount of data obtained by actually generating data in this set.
  • the value may be a value estimated from the range of cumulative ratios processed in the same manner as the index and the cumulative data amount of the sum of two data sets.
  • the same part advances the pointer of the second work table, sets the index of the second data set to 600 (step 2007), and substitutes the current index 300 for the past index (step 2002).
  • the same unit compares the index of the first data set for the second time with the index of the second data set (step 2004).
  • the same section substitutes the index 450 of the pointer for the current index.
  • the same unit forms a set of data elements in the range indicated by the past and current indexes (300, 450), and stores this information in the second line (FIG. 20J) of the output list (step 2005).
  • the last data element set is constructed and this information is stored in the third line (FIG. 20J) of the output list (step 2006), and then the pointers of the two data sets point to the final element 600. Therefore (Yes in step 2003), the process ends.
  • the same part adds a local file pair ((d1, D1), etc.) corresponding to each range of the output list index to the output list.
  • the load calculation unit 313 uses the local file pair of the output list in FIG. 20J to a pair of servers storing local files, that is, a set of data server lists ⁇ (n2, n4), (n2, n5), (n6, n5). ) ⁇ .
  • the same unit obtains ⁇ n1, n2, n3, n4 ⁇ as a set of available processing servers 320 from the server state storage unit 3110.
  • the same unit acquires the inter-server communication load between each processing server 320 and the data server 330 in each data list with reference to the output result of the inter-server load acquisition unit 318 and the like. For example, the same unit obtains the inter-server communication load ⁇ (5, 20), (5, 10), (10, 10) ⁇ between the processing server n1 and each data server 330 in the data server list. For each data server list, the same unit standardizes the inter-server communication load by the number of data elements, weights and adds it by the data amount of the data set, and sets the columns ⁇ 30, 20, 30 corresponding to the processing server n1 in the communication load matrix C. ⁇ Is generated.
  • the communication load between servers with the partial data storage data server 330 of MyDataSet1 (8 GB) is weighted twice as much as the communication load between servers with the partial data storage data server 330 of MyDataSet2 (4 GB).
  • the same unit performs the same processing for each processing server 320, and creates a communication load matrix C between the set of data server lists and the set of processing servers 320 described above.
  • FIG. 20K shows the created communication load matrix C.
  • the process allocation unit 314 receives the communication load matrix C and obtains a flow rate matrix F that minimizes the objective function of Expression 1 under the constraints of Expressions 7 to 8.
  • FIG. 20L shows the obtained flow rate load matrix F.
  • FIG. 20F shows data transmission / reception according to the determination information.
  • the processing server n1 receives and processes the data d1 (for 2 GB) of the data server n2 and the data D2 (for 1 GB) of the data server n5.
  • the partial data of the processing target data set is Erasure encoded.
  • the distributed processing management server 310 of this specific example requests the processing server 320 to execute other data processing requested by the client 300 by canceling other processing being executed according to the priority.
  • the server status storage unit 3110 provided in the distributed processing management server 310 of this embodiment can store priorities not shown in the configuration information 3113 of each processing server 320 in addition to the information shown in FIG. 18B.
  • the priority is a priority of another process being executed by the processing server 320.
  • the program in FIG. 19A describes that the MyMap processing program is applied to data elements included in the data set MyDataSet. FIG.
  • the distributed system 340 includes servers n1 to n6 connected by switches.
  • the servers n1 to n6 function as both the processing server 320 and the data server 330 depending on the situation.
  • any of the servers n1 to n6 functions as the client 300 and the distributed processing management server 310.
  • FIG. 21B shows information stored in the data location storage unit 3120 of this specific example.
  • This information indicates that MyDataSet is divided and stored in partial data d1 and d2, and that each partial data is encoded or quorum with a redundancy number of 3 and a minimum acquisition number of 2.
  • This information describes that d1 is encoded and stored in data servers n2, n4, and n6 by 6 GB, and d2 is encoded and stored in data servers n2, n5, and n7 by 2 GB each.
  • the processing server 320 acquires the data d12 on the data server n4 and the data d13 on the data server n6, the processing server 320 can restore the partial data d1.
  • FIG. 21C shows an example of restoration of this encoded partial data.
  • the load calculation unit 313 of the distributed processing management server 310 refers to the data location storage unit 3120, lists (d1, d2) as partial data of the data set MyDataSet, and sets a set of data server lists ⁇ (n2, n4, n6 ), (N2, n5, n7) ⁇ .
  • the same unit also acquires that each partial data is stored with a minimum acquisition number of two.
  • the same unit executes processing servers n1 to n4 that can be used from the server state storage unit 3110 because the CPU usage rate is lower than a threshold value, and other processes whose priority is lower than 4.
  • Server n6 is selected to obtain a set of available processing servers 320.
  • the same unit obtains the inter-server communication load between each processing server 320 and each data server 330 in each data server list acquired above. For example, the same unit obtains an inter-server communication load ⁇ (5, 20, 10), (5, 20, 10) ⁇ between the processing server n1 and each data server 330.
  • the process assignment unit 314 obtains a flow rate matrix F that minimizes the objective function of Equation 1 under the constraints of Equations 7 to 8.
  • FIG. 21E shows the flow rate matrix F obtained in this way.
  • the same unit creates decision information based on the obtained flow rate matrix F and transmits it to the processing servers n1, n2, n4, and n5.
  • FIG. 21A shows data transmission / reception according to the determination information.
  • the processing server n1 acquires 2 GB of partial data d1
  • the processing server n1 acquires 2 GB of data from the data servers n2 and n6, and decrypts and processes them.
  • the communication load of the first example is a delay estimated from the configuration, and the objective function is a reduction of the total load.
  • the communication load of the second example is the minimum bandwidth obtained by measurement, and the objective function is the reduction of the communication load of the processing server 320 having the maximum load.
  • the user program input in the first example and the second example is shown in FIG.
  • the distributed processing management server 310 of this specific example determines to which of the plurality of processing servers 320 of the MyReduce processing the data set output by the MyMap processing and distributed to the plurality of data servers 330 is transmitted. Note that the data server 330 in this specific example is often the processing server 320 for MyMap processing.
  • the stem configuration of this example is the one shown in FIG. 22A.
  • the servers n1, n3, and n4 of the distributed system 340 shown in the figure are executing MyMap processing, and create output data sets d1, d2, and d3.
  • the servers n 1, n 3, and n 4 are the data server 330.
  • the amount of distributed data stored in the data servers n1, n3, and n4 is an estimated value that is output in the MyMap process.
  • the servers n1, n3, and n4 that are executing the MyMap process calculate the estimated values as 1 GB, 1 GB, and 2 GB based on the assumption that the expected value of the input / output data amount ratio is 1/4, and the distributed processing management server To 310.
  • the distributed processing management server 310 stores the estimated value in the data location storage unit 3120.
  • the load calculation unit 313 refers to the data location storage unit 3120 and enumerates a set ⁇ n1, n3, n4 ⁇ of data servers 330.
  • the same unit refers to the server state storage unit 3110 and lists ⁇ n2, n5 ⁇ as a set of processing servers 320.
  • the same section creates a communication load matrix C based on the communication load between servers between elements of each set.
  • FIG. 22B shows the created communication load matrix C.
  • the process allocation unit 314 instructs the processing server n5 to acquire and process 1 GB, 1 GB, and 2 GB of the data d1, d2, and d3 of the data servers n1, n3, and n4, respectively. Send. Note that the process allocation unit 314 may instruct the data servers n1, n3, and n4 to transmit output data to the process server n5. Also in the second example, when starting the execution of MyReduce processing, the load calculation unit 313 refers to the data location storage unit 3120 and enumerates a set ⁇ n1, n3, n4 ⁇ of the data servers 330.
  • the same unit refers to the server state storage unit 3110 to obtain a set ⁇ n1, n2, n3, n4 ⁇ of the processing servers 320. Further, the same unit acquires unavoidable load amounts (25, 0, 25, 25) such as processing capacity ratio 5: 4: 4: 5 of the processing server 320 and MyMap processing execution.
  • FIG. 22D shows the inter-server bandwidth measured by the inter-server load acquisition unit 318 and the like.
  • FIG. 22E shows the created communication load matrix C.
  • the process allocation unit 314 Based on the communication load matrix C, the process allocation unit 314 minimizes the objective function of Expression 17 under the constraint of Expression 13, and wj (0.12, 0.42, 0.21, 0.25). ) The same section creates a flow rate matrix F from the wj and the data amount (1, 1, 2) of the distributed data i. FIG. 22F shows the created flow rate matrix F. Based on this, the process allocation unit 314 instructs the process servers n1 to n4 to acquire and process data. Alternatively, the process allocation unit 314 may instruct the data servers n1, n3, and n4 to transmit data to the process servers n1 to n4.
  • the processing target data set of the MyMap process is a Web page
  • the MyMap process outputs the number of words included in each page
  • the MyReduce process adds the number for each word over all Web pages.
  • the servers n1, n3, and n4 that execute the MyMap process receive the determination information based on the flow rate matrix F, calculate the hash value of the word between 0 and 1, and perform the following sort transmission. 1) If the hash value is 0 to 0.12, the count value of the word is transmitted to the server n1. 2) If the hash value is 0.12 to 0.54, the count value of the word is transmitted to the server n2. 3) If the hash value is 0.54 to 0.75, the count value of the word is transmitted to the server n3.
  • the distributed processing management server 310 realizes appropriate communication when data is transmitted from the plurality of data servers 330 to the plurality of processing servers 320.
  • the present invention can also be used to realize appropriate communication when a plurality of processing servers 320 that generate data are transmitted to a plurality of data servers 330 that receive and store the data. This is because the communication load between the two servers does not change regardless of which is transmitted or received.
  • the present invention can also be used to realize appropriate communication when transmission and reception are mixed. FIG.
  • each data element of the data server 330 is processed by any of the processing servers 320 of the plurality of processing servers 320 and stored in any output server 350 that is predetermined for each data element.
  • the distributed processing management server 310 of this system selects an appropriate processing server 320 for processing each data element, thereby including an appropriate process including both reception from the data server 330 and transmission to the output server 350. Communication can be realized.
  • the distributed processing management server 310 of the second example of the embodiment can be used.
  • FIG. 24 shows an embodiment of the basic configuration.
  • the distributed processing management server 310 includes a load calculation unit 313 and a processing allocation unit 314. For each identifier j of the processing server 320 and the complete data set i, the load calculation unit 313 acquires a list i of the data server 330 that stores data belonging to the complete data set.
  • the same unit includes a communication load cij in which each processing server 320 receives a unit data amount of each complete data set based on the acquired communication load for each unit data amount between each processing server 320 and each data server 330. c'ij is calculated.
  • the process allocating unit 314 determines a communication amount fij of 0 or more that each processing server 320 receives each complete data set so that a predetermined sum of values including fijc′ij is minimized.
  • the effect of the distributed system 340 of the present embodiment is that when a plurality of data servers 330 and a plurality of processing servers 320 are provided, data transmission / reception between appropriate servers as a whole can be realized.
  • the distributed processing management server 310 determines the data server 330 and the processing server 320 that perform transmission / reception from the entire arbitrary combination of the data servers 330 and the processing servers 320. In other words, the distributed processing management server 310 pays attention to the individual data server 330 and the processing server 320 and does not sequentially determine data transmission / reception between the servers.
  • the present invention has been described with reference to the embodiments (and examples), the present invention is not limited to the above embodiments (and examples). Various changes that can be understood by those skilled in the art can be made to the configuration and details of the present invention within the scope of the present invention. This application claims the priority on the basis of Japanese application Japanese Patent Application No. 2009-287080 for which it applied on December 18, 2009, and takes in those the indications of all here.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Logic Circuits (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

データを記憶する複数の装置と、データを処理可能な複数の装置を含むシステムで、どの装置間でデ ータを転送するのが適切であるか決定できない。 管理装置は、複数の処理装置の識別子jと、一以上の完全データ集合i毎に、当該完全データ集合に所属するデータを記憶する一以上のデータ装置の識別子(データ装置リストi)、を取得して、取得した各処理装置と各データ装置間の単位データ量毎の通信負荷に基づいて、各処理装置が、各完全データ集合の単位データ量を、データ装置リスト内のデータ装置から受信する通信負荷cijを含むc'ijを算出 する負荷算出部と、各処理装置が各完全データ集合を受信する0以上の通信量fijを、fijc'ijを含む 値の所定和が最小となるように決定する処理割当部、を備える。

Description

分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法
 本発明は、分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法に関する。
 非特許文献1乃至3は、複数の計算機に格納されたデータを、どの複数の計算サーバに送信し、処理させるかを決定する分散システムを開示する。同システムは、個々のデータを格納するサーバから最も近傍な利用可能計算サーバを逐次決定して、全体の通信を決定する。
 特許文献1は、一台の計算機に格納されたデータを一台のクライアント300に転送するに際して、データ転送時間が最小となるように中継サーバを移動させるシステムを開示する。
 特許文献2は、ファイル転送元マシンからファイル転送先マシンへのファイル転送時に、各転送経路の回線速度と負荷状況に応じて、分割転送するシステムを開示する。
 特許文献3は、一台のジョブ分散装置が、ジョブの実行に必要なデータを分割して、複数のネットワークセグメントのそれぞれに複数配置される計算サーバに送信するシステムを開示する。本システムは、データを各ネットワークセグメント単位に一旦蓄積させることで、ネットワーク負荷を低減する。
 特許文献4は、プロセッサ間の距離を示す通信グラフを作成し、当該グラフに基づいて、通信スケジュールを作成する技術を開示する。
Jeffrey Dean and Sanjay Ghemawat,"MapReduce:Simplified Data Processing on Large Clusters″,Proceedings of the sixth Symposium on Operating System Design and Implementation(OSDI’04),2004年12月6日 Sanjay Ghemawat,Howard Gobioff,and Shun−Tak Leung,"The Google File System″,Proceedings of the nineteenth ACM symposium on Operating systems principles(SOSP’03),2003年10月19日 西田圭介,Googleを支える技術,p.74、p136−p163,2008年4月25日 特開平8−202726 特開2001−320439 特開2006−236123 特開平9−330304
 上記特許文献の技術は、データを記憶する複数のサーバと、当該データを処理可能な複数のサーバが分散配置されるシステムに於いて、どのサーバからどのサーバにデータを転送するのが適切であるかを決定できない。
 特許文献1及び2の技術は、一対一のデータ転送を最適化しているに過ぎない。非特許文献1乃至3の技術も、一対一のデータ転送を逐次的に最適化しているに過ぎない(図2Aを参照)。特許文献3の技術は、一対Nのデータ転送技術を開示するに過ぎない。特許文献4の技術は、データ転送コストを小さくしない。
 本発明の目的は、上記課題を解決する分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法を提供することである。
 本発明の一実施形態の分散処理管理サーバは、複数の処理サーバの識別子jと、一以上(m個)の完全データ集合i毎に、当該完全データ集合に所属するデータを記憶する一以上(n個、m又はnは複数)のデータサーバの識別子(データサーバリストi)、を取得して、取得した各処理サーバと各データサーバ間の単位データ量毎の通信負荷(サーバ間通信負荷)に基づいて、各処理サーバが、各完全データ集合の単位データ量を、各完全データ集合のデータサーバリスト内のデータサーバから受信する通信負荷(完全データ単位量取得負荷cij)を含む完全データ単位量処理負荷(c’ij)を算出する負荷算出手段と、各処理サーバが各完全データ集合を受信する0以上の量(通信量fij)を、各完全データ単位量処理負荷と各通信量の積(完全データ処理負荷fijc’ij)を含む値の所定和が最小となるように決定して、決定情報を出力する処理割当手段、を備える。
 本発明の一実施形態のコンピュータ読み取り可能な記録媒体に格納された分散処理管理プログラムは、コンピュータに、複数の処理サーバの識別子jと、一以上(m個)の完全データ集合i毎に、当該完全データ集合に所属するデータを記憶する一以上(n個、m又はnは複数)のデータサーバの識別子(データサーバリストi)、を取得して、取得した各処理サーバと各データサーバ間の単位データ量毎の通信負荷(サーバ間通信負荷)に基づいて、各処理サーバが、各完全データ集合の単位データ量を、各完全データ集合のデータサーバリスト内のデータサーバから受信する通信負荷(完全データ単位量取得負荷cij)を含む完全データ単位量処理負荷(c’ij)を算出する負荷算出処理と、各処理サーバが各完全データ集合を受信する0以上の量(通信量fij)を、各完全データ単位量処理負荷と各通信量の積(完全データ処理負荷fijc’ij)を含む値の所定和が最小となるように決定して、決定情報を出力する処理割当処理、を実行させる。
 本発明の一実施形態の分散処理管理方法は、複数の処理サーバの識別子jと、一以上(m個)の完全データ集合i毎に、当該完全データ集合に所属するデータを記憶する一以上(n個、m又はnは複数)のデータサーバの識別子(データサーバリストi)、を取得して、取得した各処理サーバと各データサーバ間の単位データ量毎の通信負荷(サーバ間通信負荷)に基づいて、各処理サーバが、各完全データ集合の単位データ量を、各完全データ集合のデータサーバリスト内のデータサーバから受信する通信負荷(完全データ単位量取得負荷cij)を含む完全データ単位量処理負荷(c’ij)を算出し、各処理サーバが各完全データ集合を受信する0以上の量(通信量fij)を、各完全データ単位量処理負荷と各通信量の積(完全データ処理負荷fijc’ij)を含む値の所定和が最小となるように決定して、決定情報を出力する。
 本発明は、複数のデータ格納サーバと複数の処理可能サーバが与えられた際に、全体として適切なサーバ間のデータ送受信を実現出来る。
図1Aは、第1の実施形態にかかる分散システム340の構成図である。 図1Bは、分散システム340の構成例を示す。 図2Aは、分散システム340の非効率な通信例を示す。 図2Bは、分散システム340の効率的な通信例を示す。 図3は、クライアント300、分散処理管理サーバ310、処理サーバ320及びデータサーバ330の構成を示す。 図4はクライアント300に入力される利用者プログラムを例示する。 図5Aは、データ集合とデータ要素の例を示す。 図5Bは、データ集合の分散形態を示す。 図6Aは、データ所在格納部3120に格納される情報を例示する。 図6Bは、サーバ状態格納部3110に格納される情報を例示する。 図6Cは決定情報の構成を例示する。 図6Dは、通信負荷行列Cの一般的な構成を例示する。 図6Eは、第1の実施の形態に於ける通信負荷行列Cを例示する。 図7Aは、本実施の形態が説明する、データサーバ330が格納するデータ量と分割処理の組み合わせを示す(1/2)。 図7Bは、本実施の形態が説明する、データサーバ330が格納するデータ量と分割処理の組み合わせを示す(2/2)。 図8は、分散システム340の全体動作フローチャートである。 図9は、ステップ801のクライアント300の動作フローチャートである。 図10は、ステップ802の分散処理管理サーバ310の動作フローチャートである。 図11は、ステップ803の分散処理管理サーバ310の動作フローチャートである。 図12は、ステップ805の分散処理管理サーバ310の動作フローチャートである。 図13は、第3の実施の形態のクライアント300に入力される利用者プログラムを例示する。 図14は、第3の実施の形態のクライアント300に入力される他の利用者プログラムを例示する。 図15は、第3の実施の形態のステップ802及び803の分散処理管理サーバ310の動作フローチャートである。 図16は、データ要素の出現順で関連付けるassociated指定時のデータサーバリストの集合を例示する。 図17は、第4の実施の形態のステップ803の分散処理管理サーバ310の動作フローチャートである。 図18Aは、第1の実施の形態等の具体例で使用される分散システム340の構成を示す。 図18Bは、分散処理管理サーバ310が備える、サーバ状態格納部3110に格納される情報を示す。 図18Cは、分散処理管理サーバ310が備える、データ所在格納部3120に格納される情報を示す。 図18Dは、クライアント300に入力される利用者プログラムを示す。 図18Eは通信負荷行列Cを示す。 図18Fは流量行列Fを示す。 図18Gは、図18Fの流量行列Fに基づいて決定される、データ送受信を示す。 図19Aは、第2の実施の形態の具体例で入力される利用者プログラムを示す。 図19Bは、第2の実施の形態の第1例におけるデータ所在格納部3120に格納されている情報を示す。 図19Cは通信負荷行列Cを示す。 図19Dは流量行列Fを示す。 図19Eは、図19Dの流量行列Fに基づいて決定される、データ送受信を示す。 図19Fは、処理割当部314による流量行列F作成の動作フローチャート例である。 図19Gは、目的関数最小化における行列変換過程を示す。 図19Hは、第2の実施の形態の第2例におけるデータ所在格納部3120に格納されている情報を示す。 図19Iは通信負荷行列Cを示す。 図19Jは示す流量行列Fを示す。 図19Kは、図19Jの流量行列Fに基づいて決定される、データ送受信を示す。 図20Aは、第3の実施の形態の第1例のデータ所在格納部3120が格納する情報を示す。 図20Bは、第1例の分散システム340の構成を示す。 図20Cは通信負荷行列Cを示す。 図20Dは流量荷行列Fを示す。 図20Eは、第3の実施の形態の第2例のデータ所在格納部3120が格納する情報を示す。 図20Fは、第2例の分散システム340の構成を示す。 図20Gは、負荷算出部313のデータサーバリスト取得の動作フローチャートである。 図20Hは、図20Gの処理で使用される第1のデータ集合(MyDataSet1)用の作業表を示す。 図20Iは、図20Gの処理で使用される第2のデータ集合(MyDataSet2)用の作業表を示す。 図20Jは、図20Gの処理で作成される出力リストを示す。 図20Kは通信負荷行列Cを示す。 図20Lは流量荷行列Fを示す。 図21Aは、第4の実施形態の具体例の分散システム340の構成を示す。 図21Bは、データ所在格納部3120に格納されている情報を示す。 図21Cは、符号化された部分データの復元例を示す。 図21Dは通信負荷行列Cを示す。 図21Eは流量行列Fを示す。 図22Aは、第5の実施の形態の第1例の具体例のステム構成を示す。 図22Bは通信負荷行列Cを示す。 図22Cは流量行列Fを示す。 図22Dは、サーバ間負荷取得部318等が計測したサーバ間帯域を示す。 図22Eは通信負荷行列Cを示す。 図22Fは流量行列Fを示す。 図23は、分散処理管理サーバ310、複数のデータサーバ330、複数の処理サーバ320に加え、複数のアウトプットサーバ350を包含する分散システム340を示す。 図24は、基本構成の実施の形態を示す。
 300 クライアント
 301 構造プログラム格納部
 302 処理プログラム格納部
 303 処理要求部
 304 処理要件格納部
 310 分散処理管理サーバ
 313 負荷算出部
 314 処理割当部
 315 メモリ
 316 作業域
 317 分散処理管理プログラム
 318 サーバ間負荷取得部
 320 処理サーバ
 321 Pデータ格納部
 322 Pサーバ管理部
 323 プログラムライブラリ
 330 データサーバ
 331 Dデータ格納部
 332 Dサーバ管理部
 340 分散システム
 350 アウトプットサーバ
 3110 サーバ状態格納部
 3111 PサーバID
 3112 負荷情報
 3113 構成情報
 3120 データ所在格納部
 3121 データ集合名
 3122 分散形態
 3123 部分データ記述
 3124 ローカルファイル名
 3125 DサーバID
 3126 データ量
 3127 部分データ名
 図1Aは、第1の実施形態にかかる分散システム340の構成図である。分散システム340は、ネットワーク350で接続された分散処理管理サーバ310、複数の処理サーバ320、複数のデータサーバ330を包含する。分散システム340は、クライアント300や図示されない他のサーバを包含していても良い。
 分散処理管理サーバ310は分散処理管理装置、処理サーバ320は処理装置、データサーバ330はデータ装置、クライアント300は端末装置とも呼ばれる。
 各データサーバ330は、処理の対象となるデータを記憶している。各処理サーバ320は、データサーバ330からデータを受信して処理プログラムを実行し、当該データを処理する処理能力を有する。
 クライアント300は、データ処理開始を分散処理管理サーバ310に要求する。分散処理管理サーバ310は、どの処理サーバ320がどのデータサーバ330からどれだけデータを受信するかを決定して決定情報を出力する。各データサーバ330及び処理サーバ320は、当該決定情報に基づくデータ送受信を行う。処理サーバ320は受信したデータを処理する。
 ここで、分散処理管理サーバ310、処理サーバ320、データサーバ330、クライアント300は、専用の装置であっても汎用のコンピュータであっても良い。また、一台の装置又はコンピュータ(コンピュータ等)が、分散処理管理サーバ310、処理サーバ320、データサーバ330、クライアント300(分散処理管理サーバ310等)のうちの複数の機能を有しても良い。多くの場合、一台のコンピュータ等が処理サーバ320及びデータサーバ330の両者として機能する。
 図1B、図2A、及び、図2Bは、分散システム340の構成例を示す。これらの図に於いては、処理サーバ320及びデータサーバ330は、コンピュータとして記述されている。ネットワーク350は、スイッチを経由するデータ送受信経路として記述されている。分散処理管理サーバ310は明記されていない。
 図1Bにおいて、分散システム340は、例えば、コンピュータ113~115と、それらを接続するスイッチ104及び107~109とを包含する。コンピュータ及びスイッチは、ラック110~112に収容され、さらにそれらはデータセンタ101~102に収容され、データセンタ間は拠点間通信103にて接続されている。
 図1Bは、スイッチとコンピュータをスター型に接続した分散システム340を例示する。図2A及び図2Bは、カスケード接続されたスイッチにより構成された分散システム340を例示する。
 図2A及び図2Bは、それぞれ、データサーバ330と処理サーバ320間のデータ送受信の一例を示す。両図に於いて、コンピュータ205と206がデータサーバ330として機能し、コンピュータ207と208が処理サーバ320として機能する。なお、本図に於いて、例えばコンピュータ220が、分散処理管理サーバ310として機能している。
 図2A及び図2Bに於いて、スイッチ202~204で接続されたコンピュータのうち、207及び208以外は他の処理を実行中で利用不可能である。その利用不可能なコンピュータのうちコンピュータ205及び206は、それぞれ処理対象のデータ209及び210を記憶している。利用可能なコンピュータ207及び208は、処理プログラム211及び212を備えている。
 図2Aにおいて、処理対象のデータ209は、データ送受信経路213で伝送されて、利用可能コンピュータ208で処理される。処理対象データ210は、データ送受信経路214で伝送されて、利用可能コンピュータ207で処理される。
 一方、図2Bにおいては、処理対象データ209は、データ送受信経路234で伝送され、利用可能コンピュータ207で処理される。処理対象データ210は、データ送受信経路233で伝送され、利用可能コンピュータ208で処理される。
 図2Aにおけるデータ送受信ではスイッチ間通信が3回あるのに対して、図2Bにおけるデータ送受信では1回である。図2Bにおけるデータ送受信は、図2Aにおけるデータ送受信に較べて通信負荷が低く、効率的である。
 各処理対象データについて逐次的に、構成的な距離に基づいていてデータ送受信を行うコンピュータを決定するシステムは、図2Aに示したような非効率な送受信を行うことがある。例えば、先に処理対象データ209に注目し、利用可能コンピュータとして207と208を検出し、構成的に近いコンピュータ208を処理サーバ320として選択するシステムは、結果的に図2Aに示した送受信を行う。
 本実施形態の分散システム340は、図2A及び図2Bに例示した状況において、図2Bで示した効率的なデータ送受信を行う可能性を高める。
 図3は、クライアント300、分散処理管理サーバ310、処理サーバ320及びデータサーバ330の構成を示す。一台のコンピュータ等が、分散処理管理サーバ310等のうちの複数の機能を有するとき、当該コンピュータ等が有する構成は、例えば、分散処理管理サーバ310等の複数の構成を足し合わせたものとなる。この場合、コンピュータ等は、共通的な構成要素を重複して持たず、共用しても良い。
 例えば、分散処理管理サーバ310が、処理サーバ320としても動作する場合、当該サーバの構成は、例えば、分散処理管理サーバ310と処理サーバ320の各々の構成を足し合わせたものとなる。Pデータ格納部321とDデータ格納部331は、共通の格納部で有っても良い。
 処理サーバ320は、Pデータ格納部321、Pサーバ管理部322、プログラムライブラリ323を包含する。Pデータ格納部321は、分散システム340において一意に識別されるデータを格納する。このデータの論理的な構成は後述される。Pサーバ管理部322は、Pデータ格納部321に格納されたデータを対象に、クライアント300が要求した処理を実行する。Pサーバ管理部322は、プログラムライブラリ323に格納された処理プログラムを実行して、当該処理を実行する。
 処理対象のデータは、分散管理サーバ310から指定されたデータサーバ330から受信されてPデータ格納部321に格納される。処理サーバ320がデータサーバ330と同一のコンピュータ等である場合、処理対象のデータは、クライアント300が処理依頼をする以前から予めPデータ格納部321に格納されていても良い。
 処理プログラムは、クライアント300の処理依頼時にクライアント300から受信してプログラムライブラリ323に格納される。処理プログラムは、データサーバ330、又は分散処理管理サーバ310から受信されても良いし、クライアント300の処理依頼以前から予めプログラムライブラリ323に格納されていても良い。
 データサーバ330は、Dデータ格納部331、Dサーバ管理部332を包含する。Dデータ格納部331は、分散システム340において一意に識別されるデータを格納する。データは、データサーバ330が出力したもの又は出力中のものであっても、他のサーバ等から受信したものでも、記憶媒体等から読み込んだものでも良い。
 Dサーバ管理部332は、Dデータ格納部331に格納されたデータを分散処理管理サーバ310から指定された処理サーバ320に送信する。データの送信要求は、処理サーバ320又は分散処理管理サーバ310から受信する。
 クライアント300は、構造プログラム格納部301、処理プログラム格納部302、処理要求部303、処理要件格納部304を包含する。
 構造プログラム格納部301は、データに対する処理の与え方や処理によって得られるデータの構造情報を格納する。クライアント300の利用者が、これらの情報を指定する。
 構造プログラム格納部301は、指定したデータの集合に対して各々に同一処理を施すといった構造に関する情報、同一処理を施して得られるデータ集合の格納先に関する情報、又は得られたデータ集合を別の後段の処理が受け取るといった構造情報を格納する。構造情報は、例えば、指定入力データ集合に対して指定した処理を前段で実行し、後段で前段処理の出力データを集約する等の構造を規定する情報である。
 処理プログラム格納部302は、指定されたデータ集合やそれに含まれるデータ要素に対して、どのような処理を施すかを記した処理プログラムを格納するものである。ここに格納された処理プログラムが、例えば、処理サーバ320に配布実行されて、当該処理が行われる。
 処理要件格納部304は、当該処理を分散システム340で実行する際に、利用する処理サーバ320の量に関する要求を格納する。処理サーバ320の量は、台数で指定されても、CPU(Central Processing Unit)クロック数に基づく処理能力換算値で指定されても良い。さらに、処理要件格納部304は、処理サーバ320の種別に関する要求も格納しても良い。処理サーバ320の種別とは、OS(Operating System)、CPU、メモリ、周辺装置に関する種別であっても、メモリ量等、それらに関する定量的な指標であっても良い。
 構造プログラム格納部301、処理プログラム格納部302、及び、処理要件格納部304に格納される情報は、利用者プログラム、又は、システムパラメータとしてクライアント300に与えられる。
 図4はクライアント300に入力される利用者プログラムを例示する。利用者プログラムは、(a)構造プログラムと(b)処理プログラムから構成される。構造プログラムと処理プログラムは、利用者により直接記述されることもあるし、利用者が記述したアプリケーションプログラムがコンパイル等された結果、コンパイラ等により生成されることもある。構造プログラムは、処理対象データ名、処理プログラム名、処理要件を記述する。処理対象データ名は、例えば、set_data句の引数として記述される。処理対象プログラム名は、例えば、set_map句又はset_reduce句の引数として記述される。処理要件は、例えば、set_config句の引数として記述される。
 図4に於ける構造プログラムは、例えば、MyDataSetというデータ集合に対してMyMapという処理プログラムを、その出力結果に対してMyReduceという処理プログラムを適用することを記述している。さらに、構造プログラムは、MyMapは4台、MyReduceは2台の処理サーバ320で並列に処理すべきであることを記述している。図4の(c)構造図は利用者プログラムの構造を表現した図である。
 この構造図は明細書の理解を容易にする目的で追記されたものであり、利用者プログラムに含まれない。このことは、以降の図に記述される利用者プログラムについても当てはまる。
 処理プログラムはデータ処理手順を記述する。図4に於ける処理プログラムは、例えば、MyMap及びMyReduceという処理手続きをプログラム言語で具体的に記述する。
 分散処理管理サーバ310は、データ所在格納部3120、サーバ状態格納部3110、負荷算出部313、サーバ間負荷取得部318及び処理割当部314、メモリ315を包含する。
 データ所在格納部3120には、分散システム340において一意に識別されるデータ集合の名称に対して、そのデータ集合に所属するデータを格納しているデータサーバ330の識別子が一以上格納されている。
 データ集合は、一以上のデータ要素の集合である。データ集合は、データ要素の識別子の集合、データ要素群の識別子の集合、共通条件を満足するデータの集合として定義されても良いし、これらの集合の和集合や積集合として定義されても良い。
 データ要素は、一つの処理プログラムの入力又は出力の単位となる。データ集合は構造プログラムにおいて、図4の構造プログラムに示したように、識別名で明示的に指定されても、指定した処理プログラムの出力結果等、他の処理との関係により指定されても良い。
 データ集合とデータ要素は、典型的にはファイルとファイル内のレコードに対応するが、この対応に限られない。図5Aは、データ集合とデータ要素の例を示す。同図は、分散ファイルシステムにおける対応を例示する。
 処理プログラムが引数として受け取る単位が個々の分散ファイルである場合、データ要素は各分散ファイルである。この場合、データ集合は分散ファイルの集合であり、例えば、分散ファイルディレクトリ名、複数の分散ファイル名の列挙、あるいは、ファイル名に対する共通条件指定によって特定される。データ集合は、複数の分散ファイルディレクトリ名の列挙であっても良い。
 処理プログラムが引数として受け取る単位が行又はレコードである場合、データ要素は分散ファイル中の各行又は各レコードとなる。この場合、データ集合は、例えば、分散ファイルである。
 データ集合がリレーショナル・データベースにおけるテーブルであって、データ要素が当該テーブルの各行であっても良い。データ集合がC++やJava(登録商標)等のプログラムのMapやVector等のコンテナであって、データ要素がコンテナの要素であってもよい。さらに、データ集合が行列であって、データ要素が、行、列、あるいは行列要素であっても良い。
 このデータ集合と要素の関係は、処理プログラムの内容で規定される。この関係は、構造プログラムに記述されていても良い。
 データ集合及びデータ要素が何れの場合であっても、データ集合の指定やデータ要素の複数登録により、処理対象のデータ集合が定まり、これを格納するデータサーバ330との対応付けが、データ所在格納部3120に格納される。
 各データ集合は、複数の部分集合(部分データ)に分割されて、複数のデータサーバ330に分散配置されていても良い(図5B(a))。図5Bにおいて、サーバ501~552は、データサーバ330である。
 ある分散データが各々2以上のデータサーバ330に多重化されて配置されていても良い(図5B(b))。処理サーバ320は、多重化されたデータ要素を処理するために、多重化された分散データの何れかの一つからデータ要素を入力すれば良い。
 ある分散データが各々n(3以上)台のデータサーバ330に符号化されて配置されていても良い(図5B(c))。ここで、符号化は、公知のErasure符号あるいはQuorum方式等を用いて行われる。処理サーバ320は、データ要素を処理するために、符号化された分散データの最低取得数k個(kはnより小さい)からデータ要素を入力すれば良い。
 図6Aは、データ所在格納部3120に格納される情報を例示する。データ所在格納部3120は、データ集合名3121又は部分データ名3127毎の複数の行を格納する。データ集合(例えば、MyDataSet1)が分散配置されている場合、当該データ集合の行は、その旨の記述(分散形態3122)、並びに当該データ集合に属する部分データ毎に部分データ記述3123を包含する。
 部分データ記述3123は、ローカルファイル名3124、DサーバID3125、及びデータ量3126の組を包含する。DサーバID3125は、当該部分データを格納するデータサーバ330の識別子である。当該識別子は、分散システム340内一意の名称でも良いしIPアドレスでも良い。ローカルファイル名3124は、当該部分データが格納されるデータサーバ330内で一意のファイル名である。データ量3126は、当該部分データの大きさを示すギガバイト(GB)数等である。
 データ集合(MyDataSet5等)の一部又は全ての部分データが多重化あるいは符号化等されているとき、当該データ集合に対応する行は、分散配置の記述(分散形態3122)、並びに当該部分データの部分データ名3127(SubSet1、SubSet2等)が格納される。このとき、データ所在格納部3120は、当該部分データ名3127対応の行(例えば、図6Aの6、7行目)を格納する。
 部分データ(例えば、SubSet1)が多重化(例えば二重化)されている場合、当該部分データの行は、その旨の記述(分散形態3122)、並びに、部分データの多重化データ毎に部分データ記述3123を包含する。当該部分データ記述3123は、部分データの多重化データを格納するデータサーバ330の識別子(DサーバID3125)、データサーバ330内で一意のファイル名(ローカルファイル名3124)及びデータの大きさ(データ量3126)を格納する。
 部分データ(例えば、SubSet2)が符号化されている場合、当該部分データの行は、その旨の記述(分散形態3122)、並びに、部分データの符号化データ毎に部分データ記述3123を包含する。当該部分データ記述3123は、部分データの符号化データを格納するデータサーバ330の識別子(DサーバID3125)、データサーバ330内で一意のファイル名(ローカルファイル名3124)及びデータの大きさ(データ量3126)を格納する。分散形態3122は、符号化されたn個のデータ中、任意のk個のデータを取得すれば部分データが復元できる旨の記述も包含している。
 データ集合(例えば、MyDataSet2)は、部分データに分割されずに多重化されても良い。この場合、当該データ集合の行の部分データ記述3123は、データ集合の多重化データ対応に存在する。当該部分データ記述3123は、多重化データを格納するデータサーバ330の識別子(DサーバID3125)、データサーバ330内で一意のファイル名(ローカルファイル名3124)及びデータの大きさ(データ量3126)を格納する。
 データ集合(例えば、MyDataSet3)は、部分データに分割されずに符号化されても良い。データ集合(例えば、MyDataSet4)は、部分データに分割も、冗長化も、符号化もされていなくても良い。
 なお、分散システム340が扱うデータ集合の分散態様が単一である場合、データ所在格納部3120は、分散形態3122の記述を包含しなくても良い。簡単のため、以降の実施形態の説明は、原則的にデータ集合の分散態様が上述した何れか単一の態様であることを仮定して与えられる。複数の形態の組み合わせに対応するためには、分散処理管理サーバ310等は、分散形態3122の記述に基づいて、以降説明する処理を切り替える。
 処理対象のデータは、クライアント300がデータ処理を要求するより以前に、Dデータ格納部331格納されている。処理対象のデータは、クライアント300がデータ処理を要求するときに、クライアント300やその他のサーバ等がデータサーバ330に与えても良い。
 なお、図3は、この分散処理管理サーバ310が、特定の一台のコンピュータ等内に存在する場合を示しているが、サーバ状態格納部3110やデータ所在格納部3120が分散ハッシュテーブル等の技術にて分散した装置に格納されていても良い。
 図6Bは、サーバ状態格納部3110に格納される情報を例示する。サーバ状態格納部3110は、分散システム340内で運転されている処理サーバ320毎に、PサーバID3111、負荷情報3112及び構成情報3113を格納する。PサーバID3111は、処理サーバ320の識別子である。負荷情報3112は、処理サーバ320の処理負荷に関する情報、例えば、CPU利用率、入出力ビジー率を包含する。構成情報3113は、処理サーバ320の構成や設定の状態情報、例えば、OSやハードウェアの仕様を包含する。
 サーバ状態格納部3110やデータ所在格納部3120に格納される情報は、処理サーバ320やデータサーバ330からの状態通知によって更新されても、分散処理管理サーバ310が状態を問い合わせて得られた応答情報によって更新されても良い。
 処理割当部314は、クライアント300の処理要求部303からデータ処理要求を受け付ける。処理割当部314は、当該処理のために利用する処理サーバ320を選択し、どの処理サーバ320がどのデータサーバ330からデータ集合を取得して処理すべきかを決定し、決定情報を出力する。
 図6Cは決定情報の構成を例示する。図6Cに例示される決定情報は、処理割当部314により各処理サーバ320に送信される。決定情報は、受信した処理サーバ320が、どのデータサーバ330から、どのデータ集合を受信すべきかを特定する。一台のデータサーバ330のデータを複数の処理サーバ320が受信するような場合(図7Aの704で後述)、決定情報は受信データ特定情報も包含する。受信データ特定情報は、データ集合内のどのデータが受信対象であるかを特定する情報であり、例えば、データの識別子集合、データサーバ330のローカルファイル内の区間指定(開始位置、転送量)である。受信データ特定情報は、間接的にデータ転送量を規定する。決定情報を受信した各処理サーバ320は、当該情報で特定されたデータサーバ330にデータ送信を要求する。
 なお、決定情報は、処理割当部314により各データサーバ330に送信されても良い。この場合、決定情報は、どの処理サーバ320へ、どのデータ集合のどのデータを送信すべきかを特定する。
 処理割当部314がクライアント300から受け付けるデータ処理要求は、データ処理対象のデータ集合名3121、処理内容を表す処理プログラム名、処理プログラムとデータ集合間の関係を記述する構造プログラム、並びに、処理プログラム実体を包含する。分散処理管理サーバ310又は処理サーバ320が処理プログラムを既に備えている場合、データ処理要求は、処理プログラムの実体を含まなくても良い。また、データ処理対象のデータ集合名3121、処理内容を表す処理プログラム名、処理プログラムとデータ集合間の関係が固定的であれば、データ処理要求は構造プログラムを含まなくても良い。
 また、データ処理要求は、当該処理に利用する処理サーバ320の処理要件として、制約と数量を包含しても良い。制約は、選択する処理サーバ320のOSやハードウェア仕様等である。数量は、利用するサーバ台数やCPUコア数、あるいはそれに類する数量である。
 データ処理要求を受け付けると、処理割当部314は負荷算出部313を起動する。負荷算出部313は、データ所在格納部3120を参照して、完全データ集合に所属するデータを格納したデータサーバ330のリスト、例えばデータサーバ330の識別子のリスト(データサーバリスト)の集合を取得する。
 完全データ集合は、処理サーバ320が処理を実行するために必要となるデータ要素の集合である。完全データ集合は構造プログラムの記述(set_data句)等から決定される。例えば、図4の(a)に示す構造プログラムは、MyMap処理の完全データ集合がMyDataSetのデータ要素の集合であることを示している。
 構造プログラムが処理対象として一つのデータ集合を指定し、当該データ集合が、分散配置されて各分散データが多重化も符号化もなされていないとき(例えば、図6AのMyDataSet1)は、各部分データ又は各部分データの一部が完全データ集合となる。このとき、各データサーバリストは、各部分データを格納する一台のデータサーバ330の識別子(DサーバID3125)であり、要素数が1のリストとなる。例えば、MyDataSet1の最初の完全データ集合、即ち部分データ(d1,j1,s1)のサーバリストはj1という要素数が1のリストである。MyDataSet1の2番目の完全データ集合、即ち部分データ(d2,j2,s2)のサーバリストはj2という要素数が1のリストである。従って、負荷算出部313は、データサーバリストの集合として、j1、j2を取得する。
 なお、他の分散形態3122のデータ集合を対象にした処理は、後続する実施形態で説明される。
 次に、負荷算出部313は、サーバ状態格納部3110を参照してデータ処理に利用可能な処理サーバ320を選択して、その識別子集合を取得する。ここで、負荷算出部313は、負荷情報3112を参照して、処理サーバ320がデータ処理に利用可能か否かを判断しても良い。例えば、負荷算出部313は、他の計算処理で利用中(CPU使用率が所定閾値以上)であれば、その処理サーバ320は利用可能でないと判断しても良い。
 さらに、負荷算出部313は、構成情報3113を参照して、クライアント300から受信したデータ処理要求に含まれる処理要件を満足しない処理サーバ320を利用可能でないと判断しても良い。例えば、データ処理要求が特定のCPU種別やOS種別を指定しており、ある処理サーバ320の構成条件3113が他のCPU種別やOS種別を包含するとき、負荷算出部313は、当該処理サーバ320は利用可能でないと判断しても良い。
 なお、サーバ状態格納部3110は、構成情報3113に図示されない優先度を包含しても良い。サーバ状態格納部3110格納される優先度は、例えば、処理サーバ320がクライアント300から要求されたデータ処理以外の処理(他の処理)の優先度である。優先度は、他の処理実行中に格納されている。
 負荷算出部313は、処理サーバ320が他の処理を実行中であってCPU使用率が高い場合であっても、当該優先度がデータ処理要求に含まれる優先度より低い場合は、当該処理サーバ320を利用可能として取得しても良い。同部は、このように取得された処理サーバ320に、実行中処理中止要求を送信等する。
 なお、データ処理要求に含まれる優先度は、クライアント300に入力されるプログラム等から取得される。例えば、構造プログラムがSet_config句内に優先度指定を包含する。
 負荷算出部313は、上述で取得した各処理サーバ320とデータサーバ330間の通信に関する負荷(サーバ間通信負荷)を基に、完全データ単位取得負荷cijを要素とする通信負荷行列Cをメモリ315の作業域316等に作成する。
 サーバ間通信負荷は、2つのサーバ間の通信を避けたい度合い(忌避度)を単位通信データ量あたりの値として表現した情報である。
 サーバ間通信負荷は、例えば、一単位通信量あたりの通信時間、又は通信路上にあるバッファ量(滞留データ量)である。通信時間は、1パケットの往来に要する時間、あるいは、一定のデータ量の転送に要する時間(リンク層の帯域の逆数や、その時点における利用可能帯域の逆数等)であっても良い。負荷は実測値であっても推測値であっても良い。
 例えば、サーバ間負荷取得部318が、分散処理管理サーバ310の図示されない記憶装置等に格納されている、二つのサーバ間あるいは当該サーバを収容しているラック間の通信の実績データの平均等の統計値を算出する。同部は、算出した値をサーバ間通信負荷として作業域316等に格納する。負荷算出部313は作業域316等を参照してサーバ間通信負荷を得る。
 また、サーバ間負荷取得部318が、前述の実績データから時系列予測技術を用いてサーバ間通信負荷の予測値を算出しても良い。更に同部は、各サーバに対して有限の次数座標を割り当て、当該座標間のユークリッド距離から推測される遅延値を求めて、サーバ間通信負荷としても良い。同部は、各サーバに割り当てられたIPアドレスの先頭からの一致長から推測される遅延値を求めて、サーバ間通信負荷としても良い。
 更に、サーバ間通信負荷は、一単位通信量あたりに発生する通信業者への支払金額等であってもよい。この場合等、各処理サーバ320とデータサーバ330間のサーバ間通信行列が、分散システム340の管理者等からシステムパラメータ等として負荷算出部313に与えられる。このような場合、サーバ間負荷取得部318は不要となる。
 通信負荷行列Cは、上記で取得した処理サーバ320を列に、データサーバリストを行に並べた、完全データ単位取得負荷cijを要素とした行列である。完全データ単位取得負荷cijは、処理サーバjが完全データ集合iの単位通信量を得るための通信負荷である。
 なお、以降の実施の形態で示されるように通信負荷行列Cは、cijに処理サーバjの処理能力指標値が加算された値(完全データ単位処理負荷c’ij)を要素としても良い。図6Dは、通信負荷行列Cを例示する。
 本実施の形態で対象とするデータ集合の場合、上記で説明の通り各部分データが完全データ集合である為、完全データ単位取得負荷cijは部分データiを格納するデータサーバiだけから単位通信量を受信する負荷となる。即ち、完全データ単位取得負荷cijはデータサーバiと処理サーバjの間のサーバ間通信負荷そのものとなる。図6Eは、本実施の形態に於ける通信負荷行列Cを例示する。
 処理割当部314は、目的関数を最小化するような流量行列Fを算出する。流量行列Fは、得られた通信負荷行列Cと対応する行及び列を持った通信量(流量)の行列である。目的関数は、通信負荷行列Cを定数として持ち流量行列Fを変数として持つ。
 目的関数は、分散システム340全体に与える総通信負荷量の最小化が目的であれば総和(Sum)関数であり、データ処理の最長実行時間を最小にすることが目的であれば最大(Max)関数となる。
 処理割当部314が最小化対象とする目的関数とその最小化時に使用する制約式は、分散システム340において、各データサーバ330にどのようにデータが分散しているか、またそのデータを処理する方法に依存する。目的関数や制約式は、分散システム340に応じて、システムパラメータ等としてシステム管理者等により分散処理管理サーバ310に与えられる。
 各データサーバ330のデータ量は、メガバイト(MB)等のバイナリ量や、予め一定量に区切られたブロックの数量で計測される。図7Aに示すように、各データサーバ330が格納するデータの量は、データサーバ330毎に異なる場合と同一である場合がある。また一つのデータサーバ330が格納するデータが、異なる処理サーバ320で分割して処理可能な場合と不可能な場合もある。負荷算出部313は、図7Aに示す場合に応じた目的関数と制約式を使用する。
 まず、対象とするデータ集合がデータサーバ330に分散する量が、均一である場合(701)と、不均一である場合(702)がある。不均一である場合(702)には、そのデータを保持するデータサーバ330と複数の処理サーバ320が対応づけられる場合(704)と、1つの処理サーバ320しか対応づかない場合(703)とがある。複数の処理サーバ320と対応づく場合とは、例えば、データが分割されて、複数の処理サーバ320はその一部を処理する場合である。なお、均一な場合の分割は、例えば、不均一な場合(704)に含めて処理される。また、分散処理管理サーバ310は、図7Bに示すように、不均一な場合(705)も、本来同一のデータサーバ330を処理上は複数の別サーバと捉えて、均一な場合(706)に含めて扱う。
 本実施の形態は、この3モデルについて目的関数と制約式を示す。第2以降の実施の形態は上述の3つのモデルのうちの一つを使用するが、対象とする分散システム340に応じて他のモデルを採用しても良い。
 式中で用いる記号は下記の通りである。VDはデータサーバ330の集合であり、VNは利用可能な処理サーバ320の集合である。cijは完全データ単位取得負荷であり、本実施例に於いては、VDの要素であるiとVNの要素であるjとの間のサーバ間通信負荷であって、通信負荷行列Cの要素である。fijは流量行列Fの要素であり、VDの要素であるiとVNの要素であるjとの間の通信量である。diは、VDに属する全てのサーバiに格納されるデータ量である。Σは指定した集合について加算をとり、Maxは指定した集合について最大の値をとる。また、minは最小化を表し、s.t.は制約を表す。
 図7Aの701のモデルに対する目的関数の最小化式は、式1あるいは式2の目的関数をとり、制約式は式3かつ式4である。
 min. Σi∈VD,j∈VN cijfij ...(1)
 min. Maxj∈VN Σi∈VD cijfij ...(2)
 s.t. fij∈{0,1}(∀i∈VD,∀j∈VN) ...(3)
 s.t. Σj∈VN fij=1(∀i∈VD) ...(4)
 すなわち、処理割当部314は、データサーバiと処理サーバjとの間のサーバ間通信負荷とその間の通信量との積(完全データ処理負荷)について、式1では全組み合わせについての加算を最小化するようなサーバ間の通信量を算出する。同部は、式2では各処理サーバ320の中で、当該積を全データサーバ330に渡って加算した数の最大値を最小化するようなサーバ間の通信量を算出する。通信量は、送信するかしないかで0か1の値を取り、また、いずれのデータサーバ330についても、全処理サーバ320に渡っての通信量の和は1である。
 図7Aの703のモデルでは、処理割当部314は、式5あるいは式6の目的関数を使用し、式3かつ式4の制約式を使用する。式5及び式6は、di=1(∀i∈VD)として式1及び式2に一致する。
 min. Σi∈VD,j∈VN dicijfij ...(5)
 min. Maxj∈V N Σi∈VD dicijfij ...(6)
 すなわち、処理割当部314は、式1及び式2における各データサーバiからの通信負荷に、各データサーバiにおけるデータ量diを乗じる。
 次に、図7Aの704のモデルでは、処理割当部314は、式1あるいは式2の目的関数を使用し、式7かつ式8の制約式を使用する。
 s.t. fij≧0(∀i∈VD,∀j∈VN) ...(7)
 s.t. Σj∈VN fij=di(∀i∈VD) ...(8)
 処理割当部314は、式3ではデータサーバiから転送するか否か(0又は1)であった流量を、データサーバiからの通信量の総和が当該サーバiにおけるデータ量に一致するとの制約の下、連続値として算出する。
 目的関数の最小化は、線形計画法や非線形計画法、あるいは二部グラフマッチングにおけるハンガリー法、最小費用流問題における負閉路除法や、最大流問題におけるフロー増加法やプリフロープッシュ法等を用いて実現できる。処理割当部314は、上述の何れか又はその他の解法を実行するように実現される。
 処理割当部314は、流量行列Fが決定されると、データ処理に利用する(通信量fijが0でない)処理サーバ320を選択し、流量行列Fに基づいて図6Cに例示したような決定情報を生成する。
 続いて、処理割当部314は、利用する処理サーバ320のPサーバ管理部322に対して決定情報を送信する。処理サーバ320が予め処理プログラムを備えていない場合、処理割当部314は、同時に、例えばクライアント300から受信した処理プログラムを配布しても良い。
 クライアント300、分散処理管理サーバ310、処理サーバ320及びデータサーバ330内の各部は、専用ハードウェア装置として実現されても良いし、コンピュータでもあるクライアント300等のCPUがプログラムを実行することで実現されても良い。例えば、分散管理サーバ310の処理割当部314及び負荷算出部313は専用ハードウェア装置として実現されても良い。これらは、コンピュータでもある分散処理管理サーバ310のCPUがメモリ315にロードされている分散処理管理プログラム317を実行することで実現されても良い。
 また、上述したモデル、制約式、目的関数の指定は、構造プログラム等に記述されて、クライアント300から分散処理管理サーバ310に与えられても良いし、起動パラメータ等として分散処理管理サーバ310に与えられても良い。さらに、分散処理管理サーバ310が、データ所在格納部3120等を参照してモデルを決定しても良い。
 分散処理管理サーバ310は、全てのモデル、制約式、目的関数に対応するように実装されていても良いし、特定のモデル等だけに対応するように実装されていても良い。
 次に、フローチャートを参照して、分散システム340の動作を説明する。
 図8は、分散システム340の全体動作フローチャートである。利用者プログラムを入力されると、クライアント300はそのプログラムを解釈し、データ処理要求を分散処理管理サーバ310に送信する(ステップ801)。
 分散処理管理サーバ310は、処理対象データ集合の部分データを格納するデータサーバ330及び利用可能な処理サーバ320の集合を取得する(ステップ802)。分散処理管理サーバ310は、取得した各処理サーバ320と各データサーバ330間のサーバ間通信負荷を基に、通信負荷行列Cを作成する(ステップ803)。分散処理管理サーバ310は、通信負荷行列Cを入力して、各処理サーバ320と各データサーバ330間の通信量を、所定制約条件下で所定の目的関数を最小化するように決定する(ステップ804)。
 分散処理管理サーバ310は、各処理サーバ320と各データサーバ330に当該決定に従ったデータ送受信を実施させ、各処理サーバ320に受信したデータを処理させる(ステップ805)。
 図9は、ステップ801のクライアント300の動作フローチャートである。クライアント300の処理要求部303は、構造プログラムから処理対象データ集合と処理プログラム間の入出力関係等を抽出し、抽出情報を構造プログラム格納部301に格納する(ステップ901)。同部は、処理プログラムの内容、インターフェース情報等を処理プログラム格納部302に格納する(ステップ902)。更に、同部は、データ処理に必要なサーバ資源量あるいはサーバ資源の種別等について、構造プログラムあるいは予め与えられた設定情報等から抽出し、抽出情報を処理要件格納部304に格納する(ステップ903)。
 処理対象データ集合が、当該クライアント300から与えられる場合、処理要求部303は、データ集合に所属するデータを通信帯域や記憶容量等の所定基準で選択したデータサーバ330のDデータ格納部331に格納する(ステップ904)。同部は、構造プログラム格納部301、処理プログラム格納部302、及び、処理要件格納部304を参照してデータ処理要求を生成し、分散処理管理サーバ310の処理割当部314に送信する(ステップ905)。
 図10は、ステップ802の分散処理管理サーバ310の動作フローチャートである。負荷算出部313は、データ所在格納部3120を参照して、クライアント300から受信したデータ処理要求で指定された処理対象データ集合の各部分データを格納するデータサーバ330の集合を取得する(ステップ1001)。データサーバ330の集合とは、データサーバ330の識別子の集合等を意味する。次に、同部は、データ処理要求で指定された処理要件を満たす利用可能な処理サーバ320の集合を、サーバ状態格納部3110を参照して取得する(ステップ1002)。
 図11は、ステップ803の分散処理管理サーバ310の動作フローチャートである。分散処理管理サーバ310の負荷算出部313が、サーバ間負荷取得部318等を経由して、取得した各データサーバ330と各処理サーバ320間のサーバ間通信負荷を求め、通信負荷行列Cを作成する(ステップ1103)。
 負荷算出部313は、ステップ804において通信負荷行列Cを基に目的関数を最小化する。この最小化は線形計画法やハンガリー法等を用いて行う。ハンガリー法を用いた動作具体例が図19F、図19Gを参照して後述される。
 図12は、ステップ805の分散処理管理サーバ310の動作フローチャートである。分散処理管理サーバ310の処理割当部314は、取得された処理サーバ320集合内の処理サーバjについて(ステップ1201)、処理サーバjが受信する全通信量の和を算出する(ステップ1202)。その値が0出ない場合(ステップ1203でNO)、処理割当部314は、処理サーバjに処理プログラムを送付する。
 さらに、同部は、処理サーバjに、『自身と通信量が0でないようなデータサーバiにデータ取得要求を出し、データ処理の実行をする』ように指示する(ステップ1204)。例えば、処理割当部314は、図6Cに例示した決定情報を作成して、処理サーバjに送信する。
 なお、本実施の形態の処理割当部314は、式9Aが示すように、処理サーバjについての通信量の総和に一定の制約d’jを課しても良い。
 s.t. Σi∈VD fij≦d’j(∀j∈VN) ...(9A)
ただし、処理割当部314は、d’jが式9Bを満たすように設定する。
 Σi∈VD di ≦ Σj∈VN d’j...(9B)
 本実施の形態の分散システム340の第1の効果は、複数のデータサーバ330と複数の処理サーバ320が与えられた際に、全体として適切なサーバ間のデータ送受信を実現出来ることである。
 その理由は、分散処理管理サーバ310が、各データサーバ330と各処理サーバ320の任意の組み合わせ全体の中から、送受信を行うデータサーバ330と処理サーバ320を決定するからである。換言すれば、分散処理管理サーバ310は、個別のデータサーバ330と処理サーバ320注目して逐次的にサーバ間のデータ送受信を決定しないからである。
 本分散システム340のデータ送受信は、ネットワーク帯域不足による計算処理の遅れや、他のネットワークを共有するシステムへの悪影響を低減する。
 本分散システム340の第2の効果は、サーバ間の通信遅延の大きさや、帯域の狭さ、故障頻度の多さ、同じ通信路を共有する他のシステムと比較した優先度の低さ等、種々の観点の通信負荷を低減出来ることである。
 その理由は、分散処理管理サーバ310は、負荷の性質に依存しない手法で、適切なサーバ間のデータ送受信を決定するからである。負荷算出部313は、サーバ間通信負荷として、伝送時間の実測値や推定値、通信帯域、優先度等を入力できる。
 本分散システム340の第3の効果は、通信負荷の総量を低減するのか、あるいは最も通信負荷の大きな経路の通信負荷を下げるのか等を、使用者のニーズに合わせて選択できることである。その理由は、分散処理管理サーバ310の処理割当部314は、式1、式2等、複数のなかから選択された目的関数を最小化出来るからである。
 本分散システム340の第4の効果は、処理サーバ320で他の処理が実行されていても、依頼を受けたデータ処理の優先度が高ければ、他の処理を中断してデータに近い処理サーバ320で処理させることが可能なことである。その結果、分散システム340は、優先度の高い処理の全体として適切なサーバ間のデータ送受信を実現出来る。
 その理由は、サーバ状態格納部3110に処理サーバ320の実行中処理の優先度を格納し、データ処理要求に依頼された新たなデータ処理の優先度を包含し、後者の優先度が高ければ、負荷にかかわらず処理サーバ320にデータを送信させるからである。
 [第2の実施の形態]第2の実施の形態について図面を参照して詳細に説明する。本実施の形態の分散処理管理サーバ310は、各処理サーバ320が処理するデータ量の平準化効果も備えた処理割当決定を行う。
 本実施の形態の処理割当部314は、サーバ状態格納部3110に格納された処理サーバ320の処理能力の情報を利用する。処理能力の情報とは、CPUのクロック数やコア数、あるいはそれに類する定量化された指標である。
 本実施形態の処理割当部314が用いる方法としては、処理能力指標を制約式に含める方式と、目的関数に含める方式とがある。本実施の形態の処理割当部314は、どちらの方式を用いて実現されても良い。
 以下の式中において、pjはVNに属する処理サーバjの処理能力の比であり、Σj∈VNpj=1である。処理割当部314は、サーバ状態格納部3110の負荷情報3112及び構成情報3113を参照して、負荷算出部313により取得された利用可能な各処理サーバjの利用可能な処理能力比pjを計算する。
 制約式に含める場合、処理サーバjにおいて処理するデータ量の最大許容値d’jを用いた式10Bが処理割当部314に与えられる。処理割当部314は、d’jを、例えば、式10Aに基づいて算出する。ここで、正の係数α(>0)は、サーバ間通信負荷を考慮して、処理能力比に応じた割当からの誤差を許容する程度を規定する値であり、システムパラメータ等として処理割当部314に与えられる。
d’j=(1+α)pj Σi∈VD di(∀j∈VN)..(10A)
s.t. Σi∈VD fij≦d’j(∀j∈VN)....(10B)
 すなわち、処理割当部314は、全データサーバ330の総データ量を処理サーバ320の処理能力比で分配し、各処理サーバ320のデータ送受信量の総量は、これと同程度のデータ量までしか受けないものように制約する。
 厳密に能力比割当である必要がない場合、システム管理者等は処理割当部314に大きなαの値を与える。この場合、処理割当部314は、多少能力比以上のデータ量を受信する処理サーバ320の存在を許容して、目的関数を最小化する。なお、VNの要素数を|VN|として、α=0かつpj=1/|VN|(∀j∈VN)の時、各処理サーバ320は均一な量のデータ処理を行う。
 目的関数に含める場合には、負荷算出部313は、完全データ単位量処理負荷c’ijを要素として、式1、式2、式5、式6に示した目的関数における通信負荷行列Cを作成する。完全データ単位量処理負荷c’ijは、完全データ単位量処理負荷cijにサーバ処理負荷を加算した値であり、式11で与えられる。
 ここで、βは、単位データ量当たりの処理時間であり、例えば、データ処理(処理プログラム)ごとに、構造プログラムに記述されたり、分散処理管理サーバ310のシステムパラメータに指定されたりして、処理割当部314に与えられる。サーバ処理負荷は、このβを各サーバの処理能力pjについて規格化した値である。
c’ij ∝ cij + β/pj(∀i∈VD,∀j∈VN)..(11)
 すなわち、データサーバiから処理サーバjへの通信量を増やすに応じて、目的関数の値には、cijが加算されるのと同時に、処理サーバjの処理能力の逆数に比例した負荷が加わる。
 本方式は、目的関数が式2である場合等、処理サーバ320当たりの合計完全データ処理負荷の最大値を最小化する場合に、特に有用である。例えば、cijがネットワーク帯域の逆数である場合、処理割当部314は、処理サーバjが受けるデータ総量の受信時間と受信後の処理時間の和が、最も大きな処理サーバ320の時間を短くするように、サーバ間のデータ送受信を決定する。
 本分散システム340の追加的な効果は、処理サーバ320がデータを受信する通信負荷だけでなく処理サーバ320の処理能力も考慮して目的関数を最小化できることである。その結果、例えば、各処理サーバ320のデータ受信と処理の両方の完了時点の平準化が出来る。
 その効果が発生する理由は、目的関数を最小化において、処理サーバ320毎の計算能力を制約式や目的関数に含めるからである。
 [第3の実施の形態]第3の実施の形態について図面を参照して説明する。本実施の形態のデータ処理サーバ320は、複数(N個)のデータ集合からデータ要素を入力してデータ処理を行う。
 図13は、本実施の形態のクライアント300に入力される利用者プログラムを例示する。図13の構造プログラムは、MyDataSet1とMyDataSet2という2つのデータ集合の直積(set_data句のcartesian指定で指定)を処理することを記述している。本構造プログラムは、先ずMyMapという処理プログラムを実行し、その出力結果に対してMyReduceという処理プログラムを適用することを記述している。さらに、構造プログラムは、MyMapは4台、MyReduceは2台の処理サーバ320で並列に処理すべきであることを記述(set_config句のServer指定)している。図13の(c)はこの構造を表現した図である。
 MyDataSet1とMyDataSet2という2つのデータ集合の直積からなるデータとは、前者に含まれるデータ要素11及び12と、後者に含まれるデータ要素21及び22とからなる組み合わせデータである。具体的には、(要素11と要素21)、(要素12と要素21)、(要素11と要素22)、(要素12と要素22)の4組のデータがMyMapに入力される。
 本実施形態の分散システム340は、集合間の直積演算を要する任意の処理に利用することができる。例えば、処理がリレーショナル・データベースにおける複数テーブル間のJOINである場合、2つのデータ集合はテーブルであり、データ要素11~12と21~22はテーブルに含まれる行である。複数のデータ要素の組を引数とするMyMap処理は、例えば、SQLのWhere節で宣言されるテーブル間の結合処理である。
 MyMapの処理は、行列やベクトルの演算処理であってもよい。この場合、行列やベクトルがデータ集合であり、行列やベクトル内の値がデータ要素となる。
 本実施形態に於いて、各データ集合は、単純な分散配置、冗長化された分散配置、符号化された分散配置等(図5B、図6A参照)の何れの分散形態3122をとっていても良い。以降の説明は、単純な分散配置の場合についてのものである。
 本実施の形態に於いて、構造プログラムで指定された複数データ集合から得られた要素の組の集合が完全データ集合となる。従って、データサーバリストは、各データ集合の何れかの部分データを格納したデータサーバ330のリストとなる。図13で指示された如く複数データ集合の直積を処理する場合、データリストの集合は、各データ集合の何れかの部分データを格納したデータサーバ330のリストの全組み合わせとなる。
 換言すれば、データサーバリストの集合は、複数の処理対象データ集合の部分データを格納したデータサーバ330の集合の直積で得られるデータサーバ330のリストからなる集合となる。
 また、本実施形態における完全データ単位量取得負荷cijは、処理サーバjがサーバリストiに属する各データサーバ330から各々単位データ量(例えば、1データ要素)を取得する為の通信負荷となる。従って、cijは、処理サーバjとサーバリストiに属する各データサーバ330の間のサーバ間通信負荷の和となる。
 図15は、第3の実施の形態のステップ802及び803(図8)の分散処理管理サーバ310の動作フローチャートである。即ち、本実施の形態に於いては、本図が図10、図11を置き換える。
 負荷算出部313は、処理対象となるN個のデータ集合の各々について、そのデータ集合の部分データを格納したデータサーバ330の集合をデータ所在格納部3120の部分データ記述3123から取得する。次に、同部は、これらN個のデータサーバ330の集合の直積を求め、当該直積の各要素をデータサーバリストとする(ステップ1501)。
 同部は、データ処理要求の処理要件を満たす利用可能な処理サーバ320の集合を、サーバ状態格納部3110を参照して取得する(ステップ1502)。
 同部は、上記ステップで取得した各データサーバリストi(ステップ1503)と、処理サーバ320集合内の各サーバj(ステップ1504)の組み合わせについて以下の処理を実行する。
 同部は、データサーバリストiを構成する各データサーバkと処理サーバjとのサーバ間通信負荷を算出し、サーバ間通信負荷のリスト{bkj}i(k=1~N)を求める(ステップ1505)。なお、各部分データが多重化や符号化をされている場合、同部は、後述の第4の実施形態で示される方法で各サーバ間通信負荷を算出する。
 同部は、求めたサーバ間通信負荷のリスト{bkj}iのkについての和Σbijを、データサーバリストiと処理サーバjとの間の完全データ単位量取得負荷cijとする通信負荷行列Cを生成する(ステップ1506)。
 なお、各データ集合のデータ量の総和が均一でない場合は、負荷算出部313は、データ集合毎にデータ要素のサイズ比で重み付けた和を完全データ単位量取得負荷cijとする。各データ集合のデータ要素数が同一である場合は、データ要素のサイズ比で重み付けする代わりに、データ集合のデータ量比で重み付けても良い。
 処理割当部314は、ここで生成された通信負荷行列Cを用いて目的関数の最小化等(図8のステップ804以降)を行う。
 本実施形態の分散システム340が入力する利用者プログラムは、複数のデータ集合の直積を処理するプログラムに限られない。利用者プログラムは、例えば、複数のデータ集合の各々から、同一順序、同一識別子を有する等により関連付けられたデータ要素を1つずつ選択して、選択されたデータ要素で構成される組を処理する処理プログラムを包含するものでも良い。
 このような利用者プログラムは、例えば、MyDataSet1とMyDataSet2という2つのデータ集合の同一順番のデータ要素組(この場合は、対)を処理するようなプログラムである。図14は、このようなプログラムの例である。このような利用者プログラムにおける構造プログラムは、例えば、指定された2つのデータ集合の関連データ要素組を処理対象(set_data句のassociated指定で指定)とすることを記述している。
 図14のプログラムに於いても、図13のプログラムに於ける場合と同様、構造プログラムで指定された複数データ集合から得られた要素の組の集合が完全データ集合となる。従って、データサーバリストは、各データ集合の何れかの部分データを格納したデータサーバ330のリストとなる。
 ただし、図14で示された如く複数データ集合の関連データ要素対を処理する場合、データサーバリストの集合は、図13の利用者プログラムの場合とは異なる。負荷算出部313は、図15のステップ1501に代えて、例えば、処理対象となる複数のデータ集合の各々をデータ量に比例する大きさの部分データに分割して、同順位の各部分データの組を格納するデータサーバ330のリストの集合を取得する。取得したリストの集合が、データサーバリストの集合である。
 図16は、データ要素の出現順で関連付けるassociated指定時のデータサーバリストの集合を例示する。同図に於いて、8GBのデータ量を有するMyDataSet1は、データサーバn1上に格納されている6GBの部分データ11と、データサーバn2上に格納されている2GBの部分データ12から構成される。
 4GBのデータ量を有するMyDataSet2は、データサーバn3上に格納されている2GBの部分データ21と、データサーバn4上に格納されている2GBの部分データ22から構成される。
 この場合、負荷算出部313は、MyDataSet1とMyDataSet2をそのデータ容量比(8:4=2:1)のセグメントに分割し、順番に対を構成する(ステップ1501)。この結果同部は、(部分データ11の前半4GB、部分データ21)、(部分データ11の後半2GB、部分データ22の前半1GB)、(部分データ12、部分データ22の後半1GB)の3つの部分データの対を得る。同部は、これらの部分データ対を格納するデータサーバリストの集合として、(n1,n3)、(n1,n4)、(n2,n4)との集合を得る。
 以降の処理は、図15と同じである。
 本実施の形態の分散システム340の追加的な効果は、処理サーバ320が複数のデータ集合の各々に属する複数のデータ要素の組を入力して処理する際にも、ネットワーク負荷の所定和を低減するような処理配置を実現できることである。
 その理由は、処理サーバ320がデータ要素のN個の組を取得する通信負荷cijを算出して、そのcijを基に目的関数の最小化を実施するからである。
 [第4の実施の形態]第4の実施の形態について図面を参照して説明する。本実施の形態の分散システム340は、多重化又は符号化されたデータを扱う。
 本実施の形態のクライアント300に入力されるプログラム例は、図4、図13又は図14に示した何れでも良い。説明の簡単のため、以降では、入力される利用者プログラム例は図4で示したものであるとする。但し、set_data句で指定される処理対象データ集合は、図6Aに例示するMyDataSet5であるとする。
 MyDataSet5が例示する如く、処理対象のデータ集合はその部分データ毎に異なるデータサーバ330に格納される。データ集合の一部の部分データが、多重化されている場合(図6AのSubSet1等)、同一のデータが複数のデータサーバ330(例えば、データサーバjd1、jd2)に複製され分散格納される。多重化は二重化に限られない。図6Aにおけるデータサーバjd1、jd2は、例えば、図5Bのサーバ511、512に相当する。
 データ集合の一部の部分データ(図6AのSubSet2等)が、Erasure符号化等を用い、データが分割・冗長化され、一つの部分データを構成する同サイズの異なるチャンクが互いに異なるデータサーバ330(例えば、データサーバje1~jen)に格納される。図6Aにおけるデータサーバje1~jenは、例えば、図5Bのサーバ531~551に相当する。
 この場合、部分データ(SubSet2等)は、ある一定の冗長数nに分割され、そのうち一定の最低取得数k(k<n)以上を取得した場合に部分データを復元できる。多重化の場合、全体としてデータ量は元のデータ量の多重度倍必要であるが、Erasure符号化の場合は、元の部分データ量の数割増し程度で良い。
 また、負荷算出部313は、Quorumによって複製を分散配置されている部分データも、符号化されている部分データと同様に扱うように実現されても良い。Quorumは、分散したデータに対して一貫性を保って読み書きを行う方式である。複製数n及び読み込み定数及び書き込み定数kが、分散形態3122に格納されて負荷算出部313に与えられる。負荷算出部313は、複製数を冗長数、読み込み定数及び書き込み定数を最低取得数と置き換えて扱う。
 図4の利用者プログラムの場合、各部分データが完全データ集合である。部分データiがn重化されている場合、完全データ単位取得負荷cijは、部分データiの多重化データを格納するn個のデータサーバi1~データサーバin(データサーバリスト)の任意の一つから単位通信量を受信する負荷となる。そこで、負荷算出部313は、完全データ単位取得負荷cijをデータサーバi1~データサーバinの各々と処理サーバjの間のサーバ間通信負荷のうち、最小のものとする。
 部分データiがErasure符号化又はQuorumで冗長化されている場合、完全データ単位取得負荷cijは、部分データiの冗長化データを格納するn個のデータサーバi1~データサーバin(データサーバリスト)の任意のk個から単位通信量を受信する負荷となる。そこで、負荷算出部313は、完全データ単位取得負荷cijをデータサーバi1~データサーバinの各々と処理サーバjの間のサーバ間通信負荷のうち、小さい方からk個を加算したものとする。
 図17は、第4の実施の形態のステップ803(図8)の分散処理管理サーバ310の動作フローチャートである。即ち、本実施の形態に於いては、本図が図11を置き換える。なお、本図は、各部分データがErasure符号化又はQuorumで冗長化されている場合のフローチャートである。kを1に置換すると、本図は多重化された部分データに対応するフローチャートとなる。
 負荷算出部313は、処理対象データ集合の各部分データiについて(ステップ1701)、部分データiを冗長格納しているデータサーバ330の識別子リスト(データサーバリスト)を、データ所在格納部3120から取得する(ステップ1702)。
 同部は、利用可能な処理サーバ320集合に含まれる各処理サーバjについて(ステップ1703)、部分データiのデータサーバリストを構成する各データサーバmとの間のサーバ間通信負荷リスト{bmj}i(m=1~n)を求める(ステップ1704)。同部は、サーバ間通信負荷リスト{bmj}iのうち、小さい方からk個分の値を取り出して加算し、その加算値をi行j列の要素cij(部分データiと処理サーバjの間の完全データ単位量取得負荷)とする通信負荷行列Cを生成する(ステップ1705)。
 同部は、部分データiと処理サーバj毎に、サーバ間通信負荷リスト{bmj}iのうちどのサーバを選んだかについて、作業域316に記憶する(ステップ1706)。
 処理割当部314は、ここで生成された通信負荷行列Cを用いて目的関数の最小化等(図8のステップ804以降)を行う。
 なお、多重化又は符号化されている部分データiを構成する複数のデータの各々が更に多重化又は符号化されている場合がある。例えば、二重化されている部分データiを構成する一方が多重化され、他の一方が符号化されている場合などである。または、符号化されている部分データiを構成する3個のチャンクのうち、1つのチャンクが二重化され、他の2つのチャンクが各々3個のチャンクに符号化されている場合である。このように、部分データiは、多段階に多重化または符号化されていることがある。各段における多重化または符号化の方式の組み合わせは自由である。段数も二段に限定されない。
 このような場合、図6Aの部分データ名3127(例えば、SubSet1)に対応する行は、部分データ記述3123に代えて、下位の段の部分データ名3127(例えば、SubSet11、SubSet12...)を含む。そして、データ所在格納部3120は、それらのSubSet11、SubSet12...に対応する行も包含する。図17のステップ1702において、このようなデータ所在格納部3120を参照した負荷算出部313は、部分データiに対してネスト構造を有するデータサーバリストを取得する。さらに、同部はネストしている各データサーバリストの各々について、ネストの深い順に、ステップ1705のサーバ間通信負荷加算を実行し、最終的に通信負荷行列Cを作成する。
 符号化されている部分データを構成するn個のチャンクが、当該部分データが複数に分割されたデータ断片からなるチャンクとパリティ情報からなるチャンクである場合等には、処理サーバ320は、部分データを復元するために、特定のk個のチャンクの集合(復元可能集合)を必要とする。
 この場合、負荷算出部313は、ステップ1705において、「{bmj}iのうち、小さい方からk個分の値を取り出して加算し、その加算値をi行j列の要素cijとする」ことは出来ない。代わりに、同部は最小復号可能通信負荷ijをcijとする。最小復号可能通信負荷ijは、部分データiの各復元可能集合iに属する各チャンクを格納するデータサーバmiに関する{bmj}iの要素の加算値のうち、最小のものである。
 ここでbmjは断片mのデータ量を考慮した負荷である。また、どのチャンクが、各特定のk個の集合を構成するかは、チャンク化された時点で、各チャンクの属性情報等に記述されている。負荷算出部313は、当該情報を参照して各復元可能集合に属するチャンクを識別する。
 例えば、部分データiが、{n1,n2,n3,n4,p1,p2}という6チャンクに符号化されている場合、負荷算出部313は、例えば2つの復元可能集合Vm{n1,n2,n4,p1,p2}および{n1,n2,n3,p1,p2}をチャンクの属性情報から検索する。同部は、この2つの復元可能集合Vmのうちで、Σm∈Vm{bmj}iが最小となるVmに関するΣm∈Vm{bmj}iをcijとする。
 なお、特定のk個が任意のk個である場合、どちらの値をcijとしても結果は同じである。即ち、後者の処理は前者を一般化した処理である。
 本実施の形態の分散システム340の追加的な効果は、データ集合が冗長化(多重化、符号化)されている場合、冗長化を利用してデータ転送に伴うネットワーク負荷を低減出来ることである。その理由は、分散処理管理サーバ310が、各処理サーバ320へ、当該処理サーバ320との間のサーバ間通信負荷の低いデータサーバ330から優先的に、データ送信するように、サーバ間の通信量を決定するからである。
 [第5の実施の形態]第5の実施の形態について図面を参照して説明する。本実施の形態の分散システム340に於いては、各処理サーバjは、全てのデータサーバ330から処理サーバ320毎に決定された同一割合wjのデータを受信する。
 本実施の形態のクライアント300に入力されるプログラム例は、図4、図13又は図14に示した何れでも良い。説明の簡単のため、以降では、入力されるプログラム例は図4で示したものであるとする。
 図4のプログラムは、MyMapという処理プログラムが出力したデータ集合に対して、MyReduceという処理プログラムを適用することを記述する。MyReduce処理は、例えば、MyMap処理の出力データ集合のデータ要素を入力して、予め定められた、あるいは構造プログラム等で与えられた条件のデータ要素にまとめ、まとまりのある複数のデータ集合を生成する処理である。このような処理は、例えば、ShuffleあるいはGroupByという処理である。
 MyMap処理は、例えば、Webページの集合を入力して、各ページから単語を抜き出して、抜きだした単語とともにページ内での発生回数を出力データ集合として出力する処理である。MyReduce処理は、例えば、当該出力データ集合を入力して、全ページでの全単語の発生回数を調べ、同一の単語の結果を全ページに渡って加算する処理である。このようなプログラムの処理に於いて、全単語のうちの一定の割合のShuffleあるいはGroupBy処理を行うMyReduce処理の処理サーバ320は、前段のMyMap処理の処理サーバ320の全てから一定割合のデータを取得する場合がある。
 本実施形態の分散処理管理サーバ310は、このような場合に後段処理の処理サーバ320を決定するとき等に用いられる。
 なお、本実施形態の分散処理管理サーバ310は、MyMap処理の出力データ集合を、第1の実施の形態乃至第4の実施の形態に於ける入力データ集合と同様に扱うように実現出来る。即ち、本実施形態の分散処理管理サーバ310は、前段処置の処理サーバ320、即ち前段処理の出力データ集合を格納する処理サーバ320を、後段処理のデータサーバ330と見なして機能するように構成され得る。
 あるいは、本実施形態の分散処理管理サーバ310は、MyMap処理の出力データ集合のデータ量を、MyMap処理の入力データ集合のデータ量とMyMap処理の入出力データ量比の期待値から推定する等しても求めて良い。分散処理管理サーバ310は、推定値を求めることで、MyMap処理の完了前にMyReduce処理の処理サーバ320を決定することが出来る。
 本実施の形態の分散処理管理サーバ310は、Reduce処理実行サーバの決定要求を受けて、第1乃至第4の実施の形態における分散処理管理サーバ310と同様に、式1又は式2の目的関数を最小化する(図8のステップ804)。但し、本実施の形態の分散処理管理サーバ310は、式12、式13の制約を加えて目的関数を最小化する。
 式中のdiはデータサーバiのデータ量である。上述したように、この値は、例えば、MyMap処理の出力データ量あるいはその予測値である。wjは処理サーバjが担当する割合を表す。
 このような制約の結果、処理割当部314は、すべてのデータサーバiから一定割合wjのデータが処理サーバjに転送されるという条件下で目的関数を最小化する。
 s.t. fij/di=wj(∀i∈VD,∀j∈VN) ...(12)
 s.t. Σj∈VN wj=1,wj≧0(∀j∈VN) ...(13)
 式12を用いて式1及び式2を書き換えると、fijを変数とする目的関数の最小化が式14及び式15のようにwjを変数とする目的関数の最小化となる。処理割当部314は、式14又は式15の最小化によりwjを求め、そこからfijを算出するように実現されても良い。
 min. Σj∈VN(Σi∈VD dicij)wj ...(14)
 min. Maxj∈VN(Σi∈VD dicij)wj ...(15)
 上述(図8のステップ804)以外の点は、本実施形態の分散システム340は、第1の実施の形態乃至第4の実施の形態と同様に動作する(図8等)。即ち、処理割当部314は、算出された結果を用い、どの処理サーバ320でどれだけのデータ量を処理するかを求める。更に、同部は、wjあるいはfijから、通信量が0でない処理サーバjを決定し、その処理サーバjが各データサーバiからどれ程のデータ量を取得するかを決定する。
 分散システム340の各処理サーバ320が、予め一定量の負荷を担っている場合がある。本実施の形態の分散処理管理サーバ310は、その負荷を反映して、式2の最小化を行うように実現されても良い。この場合、処理割当部314は、式2の代わりに式16を目的関数として最小化する。即ち、同部は、完全データ処理負荷fijc’ij(サーバ処理負荷を考慮しない場合、fijcij)に処理サーバjの負荷δjも加えた加算値の最大合計値を持つ処理サーバjが、最小の加算値をとるようにfijを決定する。
 負荷δjは、処理サーバjを利用するには、予め何らかの通信負荷あるいは処理負荷が必須であるような場合に設定される値である。負荷δjは、システムパラメータ等として処理割当部314に与えられても良い。処理割当部314が、処理サーバjから負荷δjを受信しても良い。
 処理サーバ320がShuffle処理のようなデータ集約を行う場合、式12、式13の制約が適用され、式16の目的関数は式17のようにwjを変数とする関数となる。処理割当部314は、式17の最小化によりwjを求め、そこからfijを算出するように実現される。
 min. Maxj∈VN Σi∈VD cijfij+δj ...(16)
 min. Maxj∈VN(Σi∈VD dicij)wj+δj ...(17)
 本実施の形態の分散システム340の追加的な第1の効果は、各データサーバ330のデータを固定割合ずつ、複数の処理サーバ320に配信するという条件下で通信負荷の低減が可能である。その理由は、割合情報を制約条件に加えて、目的関数の最小化を行うからである。
 本実施の形態の分散システム340の追加的な第2の効果は、処理サーバ320に処理(受信データ)を割り当てる際に、当該処理サーバ320が予め何らかの負荷を有している場合でも、その負荷も考慮して処理を割り当てることが出来る。このことにより、分散システム340は各処理サーバ320での処理完了時のばらつきを低下できる。
 かかる効果が得られる理由は、処理サーバ320が現在負っている負荷を目的関数に含めて、目的関数を最小化、特に、最大負荷の最小化が可能だからである。
 本実施の形態の分散システム340は、前段処理の出力結果を受けて後段処理を行うような場合に、前段処理の出力結果を後段処理の処理サーバ320に転送する際の通信負荷低減にも有効である。その理由は、本実施形態の分散処理管理サーバ310は、前段処置の処理サーバ320、即ち前段処理の出力データ集合を格納する処理サーバ320を、後段処理のデータサーバ330と見なして機能できるからである。同様な効果は、第1乃至第4の実施の形態の分散システム340から得ることも出来る。
 [[各実施の形態についての具体例に則した説明]]
 [第1の実施の形態の具体例]図18Aは、本具体例等で使用される分散システム340の構成を示す。本図を用いて、前述した各実施の形態の分散システム340の動作が説明される。本分散システム340は、スイッチ01~03で接続されたサーバn1~n6から構成される。
 サーバn1~n6は、状況に応じ処理サーバ320としてもデータサーバ330としても機能する。サーバn2、n5、n6は、各々、あるデータ集合の部分データd1、d2、d3を格納する。本図に於いて、サーバn1~n6の何れかが、分散処理管理サーバ310として機能する。
 図18Bは、分散処理管理サーバ310が備える、サーバ状態格納部3110に格納される情報を示す。負荷情報3112はCPU使用率を格納する。サーバが他の計算処理を実行していると、当該サーバのCPU使用率は高くなる。分散処理管理サーバ310の負荷算出部313は、各サーバのCPU使用率と所定の閾値(50%以下等)を比較して各サーバが利用可能かを判断する。本例では、サーバn1~n5が利用可能と判断される。
 図18Cは、分散処理管理サーバ310が備える、データ所在格納部3120に格納される情報を示す。当該データは、データ集合MyDataSetの部分データが、5GBずつサーバn2、n5、n6に格納されていることを示す。MyDataSetは、単純に分散配置され(図5B(a))、多重化や符号化(図5B(b)、(c))はされていない。
 図18Dは、クライアント300に入力される利用者プログラムを示す。この利用者プログラムは、データ集合MyDataSetをMyMapという処理プログラムで処理すべきことを記述する。
 当該利用者プログラムが入力されると、クライアント300は構造プログラム及び処理プログラムを解釈し、分散処理管理サーバ310にデータ処理要求を送信する。このとき、サーバ状態格納部3110が図18B、データ所在格納部3120が図18Cに示す状況であったとする。
 分散処理管理サーバ310の負荷算出部313は、図18Cのデータ所在格納部3120を参照して、データサーバ330の集合として{n2、n5、n6}を得る。次に、同部は、図18Bのサーバ状態格納部3110から処理サーバ320の集合として{n1、n2、n3、n4}を得る。
 同部は、これら2つのサーバの集合({n2、n5、n6}、{n1、n2、n3、n4})の各々から一つずつ要素を選択した全組み合わせの各々について、サーバ間通信負荷に基づいて通信負荷行列Cを作成する。
 図18Eは、作成された通信負荷行列Cを示す。本具体例に於いて、サーバ間負荷はサーバ間の通信経路上に存在するスイッチ数である。サーバ間のスイッチ数は、例えば、システムパラメータとして負荷算出部313に予め与えられている。また、サーバ間負荷取得部318が、構成管理プロトコルを用いて構成の情報を取得し、負荷算出部313に与えても良い。
 分散システム340がサーバのIPアドレスからネットワーク接続が分かるようなシステムである場合は、サーバ間負荷取得部318が、n2等のサーバの識別子からIPアドレスを取得し、サーバ間通信負荷を得ても良い。
 図18Eは、サーバ間通信負荷を、同一サーバ内は0、同一スイッチ内サーバ間は5、スイッチ間接続は10であると仮定した場合の通信負荷行列Cを示す。
 処理割当部314は、図18Eの通信負荷行列Cを基に利用量行列Fを初期化し、式3、式4の制約のもとで、式1の目的関数の最小化を行う。
 図18Fは、目的関数最小化の結果得られた流量行列Fを示す。処理割当部314は、得られた流量行列Fに基づき、クライアント300から得られた処理プログラムをn1~n3に送信し、さらに、処理サーバn1、n2、n3に、決定情報を送信して、データ受信と処理実行を指示する。決定情報を受信した処理サーバn1は、データサーバn5からデータd2を取得し処理する。処理サーバn2は、データサーバn2(同一サーバ)上のデータd1を処理する。処理サーバn3は、データサーバn6上のデータd3を取得して処理する。図18Gは、図18Fの流量行列Fに基づいて決定される、データ送受信を示す。
 [第2の実施の形態の具体例]
 第2の実施の形態の具体例では、処理対象のデータ集合は複数のデータサーバ330に異なるデータ量で分散している。一つのデータサーバ330のデータが分割されて、複数の処理サーバ320にデータが転送されて処理される。
 本具体例では、目的関数の違いと、負荷の均一化条件を制約式に加える方式と目的関数に含める方式の違いを示すため2例が説明される。第1例は全ネットワーク負荷(式1)を低減し、第2例は最も遅い処理のネットワーク負荷(式2)を低減する。また、第1例は、負荷の均一化条件を制約式に含む。第2例は、負荷の均一化条件を目的関数に含む。通信負荷行列について、第1例はスイッチやサーバのトポロジーから類推される遅延を用い、第2例は測定される可用帯域を用いる。
 図18Aで示される構成は、第2の実施の形態の具体例でも使用される。但し、データd1~d3のデータ量は同一ではない。
 図19Aは、第2の実施の形態の具体例で入力される利用者プログラムを示す。当該プログラムの構造プログラムは、処理要件の指定(set_config句)を包含する。
 第2の実施の形態の具体例におけるサーバ状態格納部3110は、図18Bと同じである。但し、各処理サーバ320対応の構成情報3113は、同一のCPUコア数及び同一のCPUクロック数を包含する。
 図19Bは、第2の実施の形態の第1例におけるデータ所在格納部3120に格納されている情報を示す。当該情報は、部分データd1、d2、d3のデータ量が、各々6GB、5GB、5GBであることを示す。
 第1例に於いて、分散処理管理サーバ310の負荷算出部313は、処理要件としてサーバ台数=4が指定されているため、サーバ状態格納部3110(図18B)から利用可能な処理サーバ320の集合として{n1、n2、n3、n4}を得る。
 続いて、同部は、図19Bのデータ所在格納部3120を参照して、データサーバ330の集合として{n2、n5、n6}を得る。同部は、これら2つの集合と各サーバ間のサーバ間通信負荷とから通信負荷行列Cを得る。図19Cは、第一例の通信負荷行列Cを示す。
 処理割当部314は、図19Bのデータ格納部312から、各データサーバ330が格納する、処理対象データ集合に属する部分データのデータ量を得る。同部は、サーバ状態格納部3110から各処理サーバ320の性能の相対値を得る。第1例では、同部は各処理サーバ320のCPUコア数とCPUクロック数から処理能力比1:1:1:1:1を得る。
 図19Cの通信負荷行列Cが得られると、同部は、上記で取得したデータ量と性能相対値、さらに予め与えられたパラメータα=0を用いて、式7、式8及び式10Bの制約の下で、式1の目的関数の最小化を行う。各データサーバ330のデータ量は、上述したように、各々6GB、5GB、5GBである。
 各処理サーバ320の性能相対値が同一であることから、処理サーバn1~n4は全て4GBのデータを処理する。この最小化の結果として、同部は、図19Dの流量行列Fを得る。
 図19Dの流量行列Fの流量と完全データ単位量処理負荷(この場合、完全データ単位量取得、あるいは負荷サーバ間通信負荷と同じ)の積(完全データ処理負荷)の総和は85である。データサーバ330毎に近傍な処理サーバ320を逐次的に選ぶ方式では、同和が150となることもある。
 第1例において、負荷算出部313は処理要件で指定されたサーバ台数を利用可能処理サーバ320の候補としている為、全ての処理サーバn1~n4上でMyMap処理を実行することとなる。従って、処理割当部314は、クライアント300から得られた処理プログラムを、処理サーバn1~n4に送信する。
 さらに、同部は、各処理サーバn1~n4に決定情報を送信して、データ受信と処理実行を指示する。
 決定情報を受信した処理サーバn1は、データサーバn2からデータd1の2GB分とデータサーバn5からデータd2の2GB分を受信して処理する。処理サーバn2は、同一サーバ上のデータd1の4GB分を処理する。処理サーバn3は、データサーバn5からデータd2の1GB分とデータサーバn6からデータd3の3GB分を受信して処理する。処理サーバn4は、データサーバn6からデータd3の2GB分とデータサーバn5からデータd2の2GB分を受信して処理する。
 図19Eは、図19Dの流量行列Fに基づいて決定される、データ送受信を示す。
 以降、処理割当部314による目的関数の最小化により、通信負荷行列Cから流量行列Fを作成する動作(図8のステップ804の具体例)が説明される。
 図19Fは、処理割当部314による流量行列F作成の動作フローチャート例である。同図は、2部グラフにおけるハンガリー法を用いたフローチャートを例示する。図19Gは、目的関数最小化における行列変換過程を示す。
 なお、目的関数最小化の動作フローチャートはここでのみ提示され、以降の例では省略される。そのため図19Fは上述の条件・設定に加え、各データサーバ330が格納するデータ量が異なる場合、処理サーバ320に受信データ量の制約がある場合を例にとる。
 まず、処理割当部314は、通信負荷行列Cの各行について、その行の各列の値をその行の最小値で差し引き、各列についても同様の処理を行う(ステップ1801)。この結果、図19Gの行列00(通信負荷行列C)から行列01が得られる。
 同部は、行列01においてゼロ要素からなる2部グラフを生成し(ステップ1802)、2部グラフ11を得る。
 続いて、同部は、データ量の残る頂点から2部グラフ上の処理頂点を辿り、その処理頂点から既に割り当てられたフローを持つ経路のデータ頂点を順次辿り(ステップ1804)、流れ12を得る。
 この状態からフローを割り当てることができないため(ステップ1805でNo)、同部は、データを流しうる辺13を2部グラフに加え、より多くの負荷を許容するように行列01を修正する(ステップ1806)。この結果、同部は行列02を得る。
 同部は、行列02から再度2部グラフを生成し(ステップ1802)、データ量の残るデータ頂点からフローを割当可能な処理頂点に至る経路を探索する(ステップ1804)。この時、処理頂点からデータ頂点に至る辺は、既に割り当てられたフローに属す辺に属するものである。探索結果の代替経路14は、データ頂点d1から処理頂点n1、データ頂点d2を経て、処理頂点n4に至る。
 同部は、代替経路14上のデータ頂点に残るデータ量、処理頂点で割当可能なデータ量、既に割り当てたフローの量の最小値を求める。同部は、この量を代替経路上のデータ頂点から処理頂点への辺に新たにフローとして追加し、同経路上の処理頂点からデータ頂点への辺上の既に割り当てられたフローから差し引く(ステップ1807)。これにより、同部はフロー15を得る。フロー15がこの条件下における総和(式1)を最小化する流量行列Fとなる。
 図19Hは、第2の実施の形態の第2例におけるデータ所在格納部3120に格納されている情報を示す。当該情報は、部分データd1、d2、d3のデータ量が、各々7MB、9MB、8MBであることを示す。
 第2例に於いて、負荷算出部313は、図18Bのサーバ状態格納部3110を参照して、利用可能な処理サーバ320の集合{n1,n2,n3,n4}を取得する。続いて同部は、CPUコア数とCPUクロック数に加えて、CPU使用率も参照して各サーバの処理能力比5:4:4:5を得る。
 サーバ間負荷取得部318はサーバ間通信路の可用帯域を計測して、計測値に基づいてサーバ間通信負荷(2/サーバij間の最小帯域(Gbps))を求めて負荷算出部313に与える。測定値は、図19K(および図18A)のスイッチ01−02間が200Mbps、スイッチ02−03間が100Mbps、スイッチ内のサーバ間は1Gbpsであったとする。
 本具体例では、単位データ量当たりの処理時間β=40が負荷算出部313に与えられる。この値は実測等に基づいてシステム管理者等が決定し、パラメータとして負荷算出部313に与えられる。
 負荷算出部313は、完全データ単位量処理負荷c’ijを、完全データ単位量取得負荷(=サーバ間通信負荷)+20/9pjで算出し、図19Iの通信負荷行列Cを作成する。
 処理割当部314は、この通信負荷行列Cを用い、式2の目的関数を、式7、式8の制約の下で最小化する。この最小化の結果として、同部は図19Jに示す流量行列Fを得る。
 同部は、各処理サーバn1~n4に決定情報を送信して、データ受信と処理実行を指示する。
 決定情報を受信した処理サーバn1は、データサーバn5からデータd2の4.9MB分を受信して処理する。処理サーバn2は、自身が格納するデータd1の7MB分を処理し、さらに、データサーバn5からデータd2の0.9MB分を受信して処理する。処理サーバn3は、データサーバn5からデータd2の2.9MB分を受信して処理する。処理サーバn4は、データサーバn5からデータd2の0.3MBとデータサーバn6からデータd3の8MB分を受信して処理する。
 図19Kは、図19Jの流量行列Fに基づいて決定される、データ送受信を示す。
 以上のようにすることで、分散処理管理サーバ310は、サーバ処理性能の違いを考慮して処理を平滑化しつつ、通信負荷を低減させる。
 [第3の実施の形態の具体例]
 第3の実施の形態の具体例は、複数のデータ集合を入力して処理する例を示す。第1例の分散システム340は、複数のデータ集合の直積集合を処理する(cartesian指定)。同システムは、各データ集合を複数のデータサーバ330に同一のデータ量で分散させて保持する。
 第2例の分散システム340は、複数のデータ集合の関連付けられたデータ要素の組を処理する(associated指定)。同システムは、各データ集合を複数のデータサーバ330に異なるデータ量で分散する。各データ集合に含まれるデータ要素の数は同一で、データ量(データ要素のサイズ等)は異なる。
 第1例の分散システム340が入力する利用者プログラムは、図13で示された利用者プログラムである。同プログラムは、MyDataSet1とMyDataSet2の2つのデータ集合の直積集合に含まれる各要素に対して、MyMapという処理プログラムを適用することを記述している。同プログラムは、MyReduce処理についても記述するが本例では無視する。
 図20Aは、第1例のデータ所在格納部3120が格納する情報を示す。即ち、MyDataSet1は、データサーバn2のローカルファイルd1と、データサーバn5のローカルファイルd2に分かれて格納されている。MyDataSet2は、データサーバn2のローカルファイルD1と、データサーバn5のローカルファイルD2に分かれて格納されている。
 上述した各部分データは、多重化も符号化もされていない。また、各部分データのデータ量は2GBで同一である。
 図20Bは、第1例の分散システム340の構成を示す。本分散システム340は、スイッチで接続されたサーバn1~n6から構成される。サーバn1~n6は、状況に応じ処理サーバ320としてもデータサーバ330としても機能する。本図に於いて、サーバn1~n6の何れかが、クライアント300及び分散処理管理サーバ310として機能する。
 先ず、分散処理管理サーバ310がクライアント300からデータ処理要求を受信する。分散処理管理サーバ310の負荷算出部313は、図20Aのデータ所在格納部3120からMyDataSet1及びMyDataSet2を構成するローカルファイル(d1、d2)及び(D1、D2)を列挙する。
 同部は、MyDataSet1及びMyDataSet2の直積データ集合を格納するローカルファイル対の集合として、{(d1、D1)、(d1、D2)、(d2、D1)、(d2、D2)}を列挙する。同部は、ローカルファイル対から、データ所在格納部3120を参照してデータサーバリストの集合{(n2、n4)、(n2、n5)、(n6、n4)、(n6、n5)}を取得する。
 次に、同部は、サーバ状態格納部3110を参照して、利用可能な処理サーバ320の集合として{n1、n2、n3、n4}を得る。
 同部は、サーバ間負荷取得部318の出力結果等を参照して、各処理サーバ320と各データサーバリスト内のデータサーバ330とのサーバ間通信負荷を取得する。同部は、例えば処理サーバn1と各データサーバリスト内データサーバ330間のサーバ間通信負荷{(5、20)、(5、10)、(10、20)、(10、10)}を得る。
 同部は、データサーバリスト毎に、サーバ間通信負荷を加算して、通信負荷行列Cにおける、処理サーバn1対応の列{25、15、30、20}を生成する。
 同部は、同様の処理を処理サーバ320ごとに実施して、上述のデータサーバリストの集合と処理サーバ320の集合間の通信負荷行列Cを作成する。図20Cは、作成された通信負荷行列Cを示す。
 処理割当部314は、当該通信負荷行列Cを入力して、式3乃至式4の制約式のもとで、式1を最小化する流量行列Fを求める。図20Dは、求められた流量荷行列Fを示す。
 同部は、得られた流量荷行列Fを基に決定情報を作成して、処理サーバn1乃至n4に送信する。
 図20Bは、当該決定情報に従ったデータ送受信を示す。例えば、処理サーバn1は、データサーバn6のデータd2と、データサーバn5のデータD2を受信して処理する。
 第2例の分散システム340が入力する利用者プログラムは、図14で示された利用者プログラムである。同プログラムは、MyDataSet1とMyDataSet2の2つのデータ集合の一対一に関連付けられた要素対に対して、MyMapという処理プログラムを適用することを記述している。
 図20Eは、第2例のデータ所在格納部3120が格納する情報を示す。第1例と異なり、各ローカルファイルのデータ量は同一ではない。ローカルファイルd1のデータ量は6GBであるが、d2、D1、D2は2GBである。
 図20Fは、第2例の分散システム340の構成を示す。本分散システム340は、スイッチで接続されたサーバn1~n6から構成される。サーバn1~n6は、状況に応じ処理サーバ320としてもデータサーバ330としても機能する。本図に於いて、サーバn1~n6の何れかが、クライアント300及び分散処理管理サーバ310として機能する。
 先ず、分散処理管理サーバ310がクライアント300からデータ処理要求を受信する。分散処理管理サーバ310の負荷算出部313は、データ所在格納部3120を参照して、MyDataSet1及びMyDataSet2の各要素の組からなる全完全データ集合を得るためのデータサーバリストの集合を取得する。
 図20Gは、負荷算出部313のデータサーバリスト取得の動作フローチャートである。この処理は、構造プログラムにassociatedが指定されたときに、図15のステップ1504の処理を置換するものである。図20Hは、本処理で使用される第1のデータ集合(MyDataSet1)用の作業表を示す。図20Iは、本処理で使用される第2のデータ集合(MyDataSet2)用の作業表を示す。図20Jは、本処理で作成される出力リストを示す。作業表や出力リストは、分散管理サーバ310の作業域316等に作成される。
 第1のデータ集合MyDataSet1のデータd1には、インデックス1から450までのデータ要素が、データd2にはインデックス451~600のデータ要素が格納されている。インデックスは、例えば、データ要素のデータ集合内に於ける順番である。
 負荷算出部313は、本処理に先立ち図20Hの作業表に第1のデータ集合の各部分集合の最後のインデックスを格納する。同部は、データd1、d2のデータ量からこのデータ集合のデータ量として8GBを算出し、その全体に対する割合の累積した累積割合を図20Hの作業表に格納しても良い。
 第2のデータ集合MyDataSet2のデータD1には、インデックス1から300までのデータ要素が、データD2にはインデックス301~600のデータ要素が格納されている。
 同部は、本処理に先立ち図20Iの作業表に第2のデータ集合の各部分データの最後のインデックスを格納する。同部は、データD1、D2のデータ量からこのデータ集合のデータ量として、4GBを算出し、その全体に対する割合の累積した累積割合を図20Iの作業表に格納しても良い。
 負荷算出部313は、2つのデータ集合のポインタが各作業表の最初の行を指すように初期化、現在と過去のインデックスを0に初期化し、出力リストを空で初期化する(ステップ2001)。次のステップ2002、2503は最初の実行では意味を持たない。
 同部は、2つのポインタが指す第1のデータ集合のインデックスと第2のデータ集合のインデックスを比較する(ステップ2004)。
 第1のデータ集合のインデックス450と第2のデータ集合のインデックス300間では、第2のデータインデックスが小さいため、同部は、インデックス300を現在のインデックスに代入する。同部は、過去と現在のインデックス(0、300)の指す範囲のデータ要素で組を構成し、この情報を出力リスト第1行目(図20J)のインデックスおよび割合欄に格納する(ステップ2007)。
 この組のデータ量として出力リストに格納される値は、実際にこの組でデータを生成して得られるデータ量である。当該値は、インデックスと同様に処理される累積割合の範囲と2つのデータ集合の和の累積データ量とから概算される値でも良い。
 続いて、同部は第2の作業表のポインタだけ進めて、第2のデータ集合のインデックスを600とし(ステップ2007)、現在のインデックス300を過去のインデックスに代入する(ステップ2002)。
 同部は、2回目の第1のデータ集合のインデックスと第2のデータ集合のインデックスを比較する(ステップ2004)。今度は、第1のデータ集合のインデックス450と第2のデータ集合のインデックス600間では、第1のデータインデックスが小さいため、同部は、そのポインタのインデックス450を現在のインデックスに代入する。同部は、過去と現在のインデックス(300、450)の指す範囲のデータ要素で組を構成し、この情報を出力リスト第2行目(図20J)に格納する(ステップ2005)。
 同様に、最後のデータ要素組を構成し、この情報を出力リスト第3行目(図20J)に格納する(ステップ2006)し、その後、2つのデータ集合のポインタが最終要素600を指しているので(ステップ2003でYes)、処理を終了する。
 同部は、処理の終了に当たり、出力リストのインデックスの各範囲対応のローカルファイル対((d1、D1)等)を出力リストに追記する。
 負荷算出部313は、図20Jの出力リストのローカルファイル対から、ローカルファイルを格納したサーバの対、即ち、データサーバリストの集合{(n2、n4)、(n2、n5)、(n6、n5)}を取得する。
 次に、同部は、サーバ状態格納部3110から利用可能な処理サーバ320の集合として{n1、n2、n3、n4}を得る。
 同部は、サーバ間負荷取得部318の出力結果等を参照して、各処理サーバ320と各データリスト内のデータサーバ330とのサーバ間通信負荷を取得する。例えば、同部は処理サーバn1と各データサーバリスト内データサーバ330間のサーバ間通信負荷{(5、20)、(5、10)、(10、10)}を得る。
 同部は、データサーバリスト毎に、サーバ間通信負荷をデータ要素数で規格化し、データ集合のデータ量で重み付け加算して、通信負荷行列Cにおける処理サーバn1対応の列{30、20、30}を生成する。重み付け加算に於いて、MyDataSet1(8GB)の部分データ格納データサーバ330とのサーバ間通信負荷は、MyDataSet2(4GB)の部分データ格納データサーバ330とのサーバ間通信負荷の2倍に重み付けられる。
 同部は、同様の処理を処理サーバ320ごとに実施して、上述のデータサーバリストの集合と処理サーバ320の集合間の通信負荷行列Cを作成する。図20Kは、作成された通信負荷行列Cを示す。
 処理割当部314は、当該通信負荷行列Cを入力して、式7乃至式8の制約の下での、式1の目的関数を最小化する流量行列Fを求める。図20Lは、求められた流量荷行列Fを示す。
 同部は、得られた流量荷行列Fを基に決定情報を作成して、処理サーバn1乃至n4に送信する。
 図20Fは、当該決定情報に従ったデータ送受信を示す。例えば、処理サーバn1は、データサーバn2のデータd1(2GB分)と、データサーバn5のデータD2(1GB分)を受信して処理する。
 [第4の実施の形態の具体例]
 本具体例では、処理対象データ集合の部分データがErasure符号化等されている。また、本具体例の分散処理管理サーバ310は、優先度に応じて、実行中の他の処理を中止してクライアント300の要求するデータ処理を実行するように処理サーバ320に要求する。
 本実施例の分散処理管理サーバ310が備えるサーバ状態格納部3110は、図18Bに示す情報に加え、各処理サーバ320の構成情報3113に図示されない優先度を格納し得る。優先度は、処理サーバ320が実行中の他の処理の優先度である。
 図19Aに示したプログラムが、本具体例のクライアント300に入力される利用者プログラムである。但し、当該利用者プログラムは、Set_config句内にサーバ利用量=4以外に、優先度=4の指定を追加的に包含する。優先度指定は、処理サーバ320が他の処理を実行中であっても、当該サーバの優先度が4以下であれば、本利用者プログラムが要求する処理を実行すべきことを指定する。
 図19Aのプログラムは、データ集合MyDataSetに含まれるデータ要素に対してMyMap処理プログラムを適用することを記述している。
 図21Aは、本具体例の分散システム340の構成を示す。本分散システム340は、スイッチで接続されたサーバn1~n6から構成される。サーバn1~n6は、状況に応じ処理サーバ320としてもデータサーバ330としても機能する。本図に於いて、サーバn1~n6の何れかが、クライアント300及び分散処理管理サーバ310として機能する。
 本具体例のサーバ状態格納部3110は、図18Bに示す情報に加え、処理サーバn5の構成情報3113に優先度=3を、処理サーバn6の構成情報3113に優先度=3を格納する。
 図21Bは、本具体例のデータ所在格納部3120に格納されている情報を示す。この情報は、MyDataSetがd1、d2という部分データに分割されて格納されていること、各部分データが、冗長数3、最低取得数2で符号化あるいはQuorumされていることを示している。この情報は、d1がデータサーバn2、n4、n6に6GBずつ符号化格納され、d2はデータサーバn2、n5、n7に各々2GBずつ符号化格納されていることを記述している。
 処理サーバ320は、例えば、データサーバn4上のデータd12とデータサーバn6上のデータd13を取得すると、部分データd1を復元できる。処理サーバ320は、例えば、データサーバn2上のデータd21とデータサーバn5上のデータd22を取得すると、部分データd2を復元できる。図21Cは、この符号化された部分データの復元例を示す。
 クライアント300は、図19Aのプログラムを入力して、サーバ利用量=4、優先度=4の指定を含むデータ処理要求を分散処理管理サーバ310に送信する。
 分散処理管理サーバ310の負荷算出部313は、データ所在格納部3120を参照して、データ集合MyDataSetの部分データとして(d1、d2)を列挙し、データサーバリストの集合{(n2,n4,n6),(n2,n5,n7)}を取得する。同部は同時に、各部分データが最低取得数2で格納されていることも取得する。
 次に、同部は、サーバ状態格納部3110から、CPU使用率が閾値より低い等の理由で利用可能な処理サーバn1~n4と、優先度が4より低い他の処理を実行中である処理サーバn6を選択し、利用可能な処理サーバ320の集合を得る。
 同部は、上記で取得した各処理サーバ320と各データサーバリスト内の各データサーバ330とのサーバ間通信負荷を得る。例えば、同部は、処理サーバn1と各データサーバ330とのサーバ間通信負荷{(5,20,10),(5,20,10)}を得る。最低取得数が2であることから、同部は、d1とd2に対応する通信負荷の組に対し、小さい方から2番目までの値の総和をとり、完全データ単位量取得負荷{15,15}を得る。同部は、このとき対応する処理サーバ320の識別子も記録し、n1については{(n2,n6),(n2,n5)}を得る。
 図21Dは、このようにして得られた通信負荷行列Cを示す。同部は、サーバ利用量=4との処理条件から、完全データ単位量取得負荷の大きな処理サーバn3を排除する。
 処理割当部314は、式7乃至式8の制約の下での式1の目的関数を最小化する流量行列Fを求める。図21Eは、このようにして得られた流量行列Fを示す。
 同部は、得られた流量行列Fを基に決定情報を作成して、処理サーバn1、n2、n4、n5に送信する。
 図21Aは、当該決定情報に従ったデータ送受信を示す。例えば、処理サーバn1は、は部分データd1を2GB取得するため、データサーバn2とn6から各々2GB分のデータを取得し、これらを復号化して処理する。
 [第5の実施の形態の具体例]
 本実施の形態の具体例は、各処理サーバ320が不可避な処理負荷を有する場合と、有さない場合の2つある。第1例の通信負荷は構成から推定される遅延であり、目的関数は総負荷の低減である。第2例の通信負荷は計測で得られる最小帯域であり、目的関数は最大負荷を持つ処理サーバ320の通信負荷低減である。
 第1例及び第2例で入力する利用者プログラムは図4に示されたものである。本具体例の分散処理管理サーバ310は、MyMap処理で出力されて複数のデータサーバ330に分散配置されるデータ集合を、複数のMyReduce処理の処理サーバ320の何れに送信するかを決定する。なお、本具体例に於けるデータサーバ330は、MyMap処理の処理サーバ320であることが多い。
 本具体例のステム構成は図22Aに示されたものである。同図に示される分散システム340のサーバn1、n3、n4がMyMap処理を実行中であり、出力データ集合d1、d2、d3を作成している。本具体例に於いては、サーバn1、n3、n4がデータサーバ330となる。本具体例では、データサーバn1、n3、n4が格納する分散データのデータ量は、MyMap処理過程等で出力される見積もり値である。MyMap処理実行中のサーバn1、n3、n4は、入出力データ量比の期待値が1/4であるとの仮定に基づいて、見積もり値を1GB、1GB、2GBと算出し、分散処理管理サーバ310に送信する。分散処理管理サーバ310は、当該見積もり値をデータ所在格納部3120に格納する。
 第1例において、MyReduce処理の実行開始に際し負荷算出部313は、データ所在格納部3120を参照して、データサーバ330の集合{n1,n3,n4}を列挙する。同部は、サーバ状態格納部3110を参照して、処理サーバ320の集合として{n2,n5}を列挙する。
 同部は、それぞれの集合の要素間のサーバ間通信負荷に基づいて、通信負荷行列Cを作成する。図22Bは、作成された通信負荷行列Cを示す。
 処理割当部314は、本通信負荷行列Cに基づいて、式13の制約のもとで式14の目的関数を最小化して、wj(j=n2,n5)を得て、流量行列Fを作成する。図22Cは、作成された流量行列Fを示す。
 これに基づき、処理割当部314は、処理サーバn5に対して、データサーバn1、n3、n4のデータd1、d2、d3をそれぞれ1GB、1GB、2GBを取得して処理することを指示する決定情報を送信する。
 なお、処理割当部314は、データサーバn1、n3、n4に対して、出力データを処理サーバn5に送信するように指示しても良い。
 第2例においても、MyReduce処理の実行開始に際し負荷算出部313は、データ所在格納部3120を参照して、データサーバ330の集合{n1,n3,n4}を列挙する。
 同部はサーバ状態格納部3110を参照して、処理サーバ320の集合{n1、n2、n3、n4}を取得する。さらに同部は、当該処理サーバ320の処理能力比5:4:4:5、MyMap処理実行等の不可避な負荷量(25,0,25,25)を取得する。
 図22Dは、サーバ間負荷取得部318等が計測したサーバ間帯域を示す。負荷算出部313は、当該帯域値を用いて、式11からC’ij=1/経路ij間の最小帯域+20/サーバjの処理能力を算出し、通信負荷行列Cを作成する。図22Eは、作成された通信負荷行列Cを示す。
 処理割当部314は、本通信負荷行列Cに基づいて、式13の制約のもとで式17の目的関数を最小化して、wj(0.12,0.42,0.21,0.25)を求める。同部は、このwjと分散データiのデータ量(1,1,2)から、流量行列Fを作成する。図22Fは、作成された流量行列Fを示す。
 これに基づき、処理割当部314は、処理サーバn1~n4に対して、データの取得と処理を指示する。あるいは、処理割当部314はデータサーバn1、n3、n4に対して、処理サーバn1~n4にデータを送信するように指示しても良い。
 例えば、MyMap処理の処理対象データ集合がWebページであり、MyMap処理が各ページに含まれる単語の数を出力し、MyReduce処理がその単語ごとの数を全Webページに渡って加算するとする。MyMap処理を実行するサーバn1、n3、n4は、上記流量行列Fに基づく決定情報を受信して、単語のハッシュ値を0~1の間で算出し、以下のような振り分け送信を行う。1)ハッシュ値が0~0.12であれば、当該単語のカウント値をサーバn1に送信する。2)ハッシュ値が0.12~0.54であれば、当該単語のカウント値をサーバn2に送信する。3)ハッシュ値が0.54~0.75であれば、当該単語のカウント値をサーバn3に送信する。4)ハッシュ値が0.75~1.0であれば、当該単語のカウント値をサーバn4に送信する。
 上述した各実施の形態の説明に於いて、分散処理管理サーバ310は、複数のデータサーバ330から複数の処理サーバ320にデータを送信する際の適切な通信を実現した。しかしながら、本発明は、データを生成する複数の処理サーバ320が、当該データを受け取って格納する複数のデータサーバ330に向けて送信する際の適切な通信実現にも利用できる。二つのサーバ間の通信負荷は、どちらが送信又は受信しても変わらないからである。
 さらに、本発明は、送信と受信が混在した際の適切な通信実現にも利用できる。図23は、分散処理管理サーバ310、複数のデータサーバ330、複数の処理サーバ320に加え、複数のアウトプットサーバ350を包含する分散システム340を示す。本システムに於いて、データサーバ330の各データ要素は、複数の処理サーバ320の何れかの処理サーバ320で処理されて予めデータ要素毎に定められたいずれかのアウトプットサーバ350に格納される。
 本システムの分散処理管理サーバ310は、各データ要素を処理する適切な処理サーバ320を選択することにより、処理サーバ320のデータサーバ330からの受信とアウトプットサーバ350への送信の両方を含む適切な通信を実現できる。
 処理サーバ320とアウトプットサーバ350間の通信を逆方向の通信として適用することで、本システムは、二つのデータサーバ330の各々から関連付けられた二つのデータ要素の各々を取得する、第3の実施形態の第2例の分散処理管理サーバ310を使用できる。
 図24は、基本構成の実施の形態を示す。分散処理管理サーバ310は、負荷算出部313と処理割当部314を備える。
 負荷算出部313は、処理サーバ320の識別子jと、完全データ集合i毎に、当該完全データ集合に所属するデータを記憶するデータサーバ330のリストiを取得する。同部は、取得した各処理サーバ320と各データサーバ330間の単位データ量毎の通信負荷に基づいて、各処理サーバ320が、各完全データ集合の単位データ量を受信する通信負荷cijを含むc’ijを算出する。
 処理割当部314は、各処理サーバ320が各完全データ集合を受信する0以上の通信量fijを、fijc’ijを含む値の所定和が最小となるように決定する。
 本実施の形態の分散システム340の効果は、複数のデータサーバ330と複数の処理サーバ320が与えられた際に、全体として適切なサーバ間のデータ送受信を実現出来ることである。
 その理由は、分散処理管理サーバ310が、各データサーバ330と各処理サーバ320の任意の組み合わせ全体の中から、送受信を行うデータサーバ330と処理サーバ320を決定するからである。換言すれば、分散処理管理サーバ310は、個別のデータサーバ330と処理サーバ320注目して逐次的にサーバ間のデータ送受信を決定しないからである。
 以上、実施形態(及び実施例)を参照して本願発明を説明したが、本願発明は上記実施形態(及び実施例)に限定されものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
 この出願は、2009年12月18日に出願された日本出願特願2009−287080を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (28)

  1.  複数の処理装置の識別子jと、一以上(m個)の完全データ集合i毎に、当該完全データ集合に所属するデータを記憶する一以上(n個、m又はnは複数)のデータ装置の識別子(データ装置リストi)、を取得して、取得した各処理装置と各データ装置間の単位データ量毎の通信負荷(装置間通信負荷)に基づいて、各処理装置が、各完全データ集合の単位データ量を、各完全データ集合のデータ装置リスト内のデータ装置から受信する通信負荷(完全データ単位量取得負荷cij)を含む完全データ単位量処理負荷(c’ij)を算出する負荷算出手段と、
     各処理装置が各完全データ集合を受信する0以上の量(通信量fij)を、各完全データ単位量処理負荷と各通信量の積(完全データ処理負荷fijc’ij)を含む値の所定和が最小となるように決定して、決定情報を出力する処理割当手段、を備える分散処理管理装置。
  2.  一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定されるn個(nは複数)のデータ装置に記憶されるデータのうち、k個(kはnより小さい)の複数の集合(復元可能集合)のいずれか1つから構成可能であり、
     前記負荷算出手段は、一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、前記完全データ集合の各復元可能集合について算出された当該処理装置と当該復元可能集合に属する各データを格納するデータ装置との間の装置間通信負荷の加算値のなかで最小値とする請求項1の分散処理管理装置。
  3.  一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定されるN個(Nは複数)のデータ装置に記憶されるデータから構成され、
     前記負荷算出手段は、一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、当該処理装置と前記m個の各データ装置との間の装置間通信負荷を、各データのサイズ比又は各データの要素のサイズ比で重み付け加算した値とする請求項1又は2の分散処理管理装置。
  4.  一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定される一のデータ装置に記憶されるデータから構成され、
     前記負荷算出手段は、一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、前記処理装置と前記一つのデータ装置との間の装置間通信負荷とする請求項1乃至3の何れかの分散処理管理装置。
  5.  前記負荷算出手段は、一つの処理装置と一つの完全データ集合の間の完全データ処理負荷を、当該処理装置と当該完全データ集合の間の完全データ単位量取得負荷と、当該処理装置の処理能力と負の相関関係を有する装置処理負荷とを加算て求める請求項1乃至4の何れかの分散処理管理装置。
  6.  完全データ単位量処理負荷は、完全データ単位量取得負荷であり、
     前記処理割当手段は、各処理装置の受信データ量を、各処理装置の処理能力に比例して決定する受信上限以下に制約して、各通信量を決定する、請求項1乃至4の何れかの分散処理管理装置。
  7.  前記処理割当手段は、各データ装置が、データを送信する処理装置ごとに同一割合のデータを送信するように制約して、各通信量を決定する、請求項1乃至6の何れかの分散処理管理装置。
  8.  前記処理割当手段は、各完全データ処理負荷の総和、又は、処理装置ごとの完全データ処理負荷の和のうちの最大値を前記所定の和とする請求項1乃至7の何れかの分散処理管理装置。
  9.  各完全データ処理負荷fijc’ijを含む値は、完全データ処理負荷と処理装置jの負荷δjの加算値であり、
     前記処理割当手段は、処理装置ごとの前記加算値の和のうちの最大値を前記所定の和とする請求項7の分散処理管理装置。
  10.  前記複数の処理装置と、
     前記複数のデータ装置と、
     ネットワークで接続された前記複数の処理装置又は前記複数のデータ装置に、前記決定情報に従ったデータの送受信を行うことを指示する前記処理割当手段を備える請求項1乃至8の分散処理管理装置、を包含する分散システム。
  11.  コンピュータに、
     複数の処理装置の識別子jと、一以上(m個)の完全データ集合i毎に、当該完全データ集合に所属するデータを記憶する一以上(n個、m又はnは複数)のデータ装置の識別子(データ装置リストi)、を取得して、取得した各処理装置と各データ装置間の単位データ量毎の通信負荷(装置間通信負荷)に基づいて、各処理装置が、各完全データ集合の単位データ量を、各完全データ集合のデータ装置リスト内のデータ装置から受信する通信負荷(完全データ単位量取得負荷cij)を含む完全データ単位量処理負荷(c’ij)を算出する負荷算出処理と、
     各処理装置が各完全データ集合を受信する0以上の量(通信量fij)を、各完全データ単位量処理負荷と各通信量の積(完全データ処理負荷fijc’ij)を含む値の所定和が最小となるように決定して、決定情報を出力する処理割当処理、を実行させる分散処理管理プログラムを格納するコンピュータ読み取り可能な記録媒体。
  12.  一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定されるn個(nは複数)のデータ装置に記憶されるデータのうち、k個(kはnより小さい)の複数の集合(復元可能集合)のいずれか1つから構成可能であり、
     前記コンピュータに、一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、前記完全データ集合の各復元可能集合について算出された当該処理装置と当該復元可能集合に属する各データを格納するデータ装置との間の装置間通信負荷の加算値のなかで最小値とする前記負荷算出処理を実行させる、前記分散処理管理プログラムを格納する請求項11のコンピュータ読み取り可能な記録媒体。
  13.  一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定されるN個(Nは複数)のデータ装置に記憶されるデータから構成され、
     前記コンピュータに、一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、当該処理装置と前記m個の各データ装置との間の装置間通信負荷を、各データのサイズ比又は各データの要素のサイズ比で重み付け加算した値とする前記負荷算出処理を実行させる、前記分散処理管理プログラムを格納する請求項11又は12のコンピュータ読み取り可能な記録媒体。
  14.  一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定される一のデータ装置に記憶されるデータから構成され、
     前記コンピュータに、一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、前記処理装置と前記一つのデータ装置との間の装置間通信負荷とする前記負荷算出処理を実行させる、前記分散処理管理プログラムを格納する請求項11乃至13の何れかのコンピュータ読み取り可能な記録媒体。
  15.  前記コンピュータに、一つの処理装置と一つの完全データ集合の間の完全データ処理負荷を、当該処理装置と当該完全データ集合の間の完全データ単位量取得負荷と、当該処理装置の処理能力と負の相関関係を有する装置処理負荷とを加算て求める前記負荷算出処理を実行させる、前記分散処理管理プログラムを格納する請求項11乃至14の何れかのコンピュータ読み取り可能な記録媒体。
  16.  完全データ単位量処理負荷は、完全データ単位量取得負荷であり、
     前記コンピュータに、各処理装置の受信データ量を、各処理装置の処理能力に比例して決定する受信上限以下に制約して、各通信量を決定する前記処理割当処理を実行させる、前記分散処理管理プログラムを格納する請求項11乃至14の何れかのコンピュータ読み取り可能な記録媒体。
  17.  前記コンピュータに、各データ装置が、データを送信する処理装置ごとに同一割合のデータを送信するように制約して、各通信量を決定する前記処理割当処理を実行させる、前記分散処理管理プログラムを格納する請求項11乃至16の何れかのコンピュータ読み取り可能な記録媒体。
  18.  前記コンピュータに、各完全データ処理負荷の総和、又は、処理装置ごとの完全データ処理負荷の和のうちの最大値を前記所定の和とする前記処理割当処理を実行させる、前記分散処理管理プログラムを格納する請求項11乃至17の何れかのコンピュータ読み取り可能な記録媒体。
  19.  各完全データ処理負荷fijc’ijを含む値は、完全データ処理負荷と処理装置jの負荷δjの加算値であり、
     前記コンピュータに、処理装置ごとの前記加算値の和のうちの最大値を前記所定の和とする前記処理割当処理を実行させる、前記分散処理管理プログラムを格納する請求項17のコンピュータ読み取り可能な記録媒体。
  20.  複数の処理装置の識別子jと、一以上(m個)の完全データ集合i毎に、当該完全データ集合に所属するデータを記憶する一以上(n個、m又はnは複数)のデータ装置の識別子(データ装置リストi)、を取得して、取得した各処理装置と各データ装置間の単位データ量毎の通信負荷(装置間通信負荷)に基づいて、各処理装置が、各完全データ集合の単位データ量を、各完全データ集合のデータ装置リスト内のデータ装置から受信する通信負荷(完全データ単位量取得負荷cij)を含む完全データ単位量処理負荷(c’ij)を算出し、
     各処理装置が各完全データ集合を受信する0以上の量(通信量fij)を、各完全データ単位量処理負荷と各通信量の積(完全データ処理負荷fijc’ij)を含む値の所定和が最小となるように決定して、決定情報を出力する、分散処理管理方法。
  21.  一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定されるn個(nは複数)のデータ装置に記憶されるデータのうち、k個(kはnより小さい)の複数の集合(復元可能集合)のいずれか1つから構成可能であり、
     一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、前記完全データ集合の各復元可能集合について算出された当該処理装置と当該復元可能集合に属する各データを格納するデータ装置との間の装置間通信負荷の加算値のなかで最小値とする、請求項20の分散処理管理方法。
  22.  一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定されるN個(Nは複数)のデータ装置に記憶されるデータから構成され、
     一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、当該処理装置と前記m個の各データ装置との間の装置間通信負荷を、各データのサイズ比又は各データの要素のサイズ比で重み付け加算した値とする、請求項20又は21の分散処理管理方法。
  23.  一つの完全データ集合は、当該完全データ集合のデータ装置リストで特定される一のデータ装置に記憶されるデータから構成され、
     一つの処理装置と前記完全データ集合との間の完全データ単位量取得負荷を、前記処理装置と前記一つのデータ装置との間の装置間通信負荷とする、請求項20乃至22の何れかの分散処理管理方法。
  24.  一つの処理装置と一つの完全データ集合の間の完全データ処理負荷を、当該処理装置と当該完全データ集合の間の完全データ単位量取得負荷と、当該処理装置の処理能力と負の相関関係を有する装置処理負荷とを加算て求める、請求項20乃至23の何れかの分散処理管理方法。
  25.  完全データ単位量処理負荷は、完全データ単位量取得負荷であり、
     各処理装置の受信データ量を、各処理装置の処理能力に比例して決定する受信上限以下に制約して、各通信量を決定する、請求項20乃至24の何れかの分散処理管理方法。
  26.  各データ装置が、データを送信する処理装置ごとに同一割合のデータを送信するように制約して、各通信量を決定する、請求項20乃至25の何れかの分散処理管理方法。
  27.  各完全データ処理負荷の総和、又は、処理装置ごとの完全データ処理負荷の和のうちの最大値を前記所定の和とする、請求項20乃至26の何れかの分散処理管理方法。
  28.  各完全データ処理負荷fijc’ijを含む値は、完全データ処理負荷と処理装置jの負荷δjの加算値であり、
     処理装置ごとの前記加算値の和のうちの最大値を前記所定の和とする、請求項26の分散処理管理方法。
PCT/JP2010/073061 2009-12-18 2010-12-15 分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法 WO2011074699A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13/516,648 US20120259983A1 (en) 2009-12-18 2010-12-15 Distributed processing management server, distributed system, distributed processing management program and distributed processing management method
JP2011546196A JP5929196B2 (ja) 2009-12-18 2010-12-15 分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2009-287080 2009-12-18
JP2009287080 2009-12-18

Publications (1)

Publication Number Publication Date
WO2011074699A1 true WO2011074699A1 (ja) 2011-06-23

Family

ID=44167446

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/073061 WO2011074699A1 (ja) 2009-12-18 2010-12-15 分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法

Country Status (3)

Country Link
US (1) US20120259983A1 (ja)
JP (1) JP5929196B2 (ja)
WO (1) WO2011074699A1 (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013018916A1 (ja) * 2011-08-01 2013-02-07 日本電気株式会社 分散処理管理サーバ、分散システム、及び分散処理管理方法
WO2014125543A1 (ja) * 2013-02-15 2014-08-21 日本電気株式会社 情報処理装置
US9270742B2 (en) 2013-09-05 2016-02-23 Hitachi, Ltd. Computer system and control method of computer system
WO2016110985A1 (ja) * 2015-01-08 2016-07-14 株式会社日立製作所 管理方法及び管理装置並びに記憶媒体
JP2017506373A (ja) * 2013-11-26 2017-03-02 アビニシオ テクノロジー エルエルシー 分散ファイルシステム内のデータへの並列アクセス
CN106529965A (zh) * 2016-12-02 2017-03-22 浪潮(苏州)金融技术服务有限公司 一种数据处理方法、装置和系统
JP2020098547A (ja) * 2018-12-19 2020-06-25 富士通株式会社 情報処理装置、情報処理プログラムおよび情報処理システム
JPWO2021111585A1 (ja) * 2019-12-05 2021-06-10
US11196823B2 (en) 2019-08-27 2021-12-07 Hitachi, Ltd. Service deployment control system, service deployment control method, and storage medium
US20230139581A1 (en) * 2021-10-29 2023-05-04 Scality, S.A. Data placement in large scale object storage system

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101502896B1 (ko) * 2011-02-14 2015-03-24 주식회사 케이티 맵 리듀스를 이용한 분산 메모리 클러스터 제어 장치 및 방법
US8548848B1 (en) * 2011-06-21 2013-10-01 Google Inc. Mobile interstitial ads
US9092385B2 (en) * 2011-08-17 2015-07-28 Cleversafe, Inc. Facilitating access of a dispersed storage network
US9661331B2 (en) 2013-03-18 2017-05-23 Vantrix Corporation Method and apparatus for signal encoding realizing optimal fidelity
US10609405B2 (en) 2013-03-18 2020-03-31 Ecole De Technologie Superieure Optimal signal encoding based on experimental data
US9338450B2 (en) * 2013-03-18 2016-05-10 Ecole De Technologie Superieure Method and apparatus for signal encoding producing encoded signals of high fidelity at minimal sizes
US9679247B2 (en) 2013-09-19 2017-06-13 International Business Machines Corporation Graph matching
US9703611B1 (en) 2014-03-21 2017-07-11 Amazon Technologies, Inc. Isolating resources for utilization by tenants executing in multi-tenant software containers
CN106101195B (zh) * 2016-05-31 2020-03-13 北京奇艺世纪科技有限公司 一种数据分发方法及装置
EP3627360A1 (en) * 2018-09-21 2020-03-25 Bricsys NV Improved annotation positioning in a cad drawing
CN113190384B (zh) * 2021-05-21 2022-07-22 重庆紫光华山智安科技有限公司 基于纠删码的数据恢复控制方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01214961A (ja) * 1988-02-23 1989-08-29 Fujitsu Ltd 負荷分散方式
JPH0830558A (ja) * 1994-07-20 1996-02-02 Fujitsu Ltd 計算機システムにおける負荷分散方法及びそれを利用した計算機システム
JP2003058520A (ja) * 2001-08-09 2003-02-28 Mitsubishi Heavy Ind Ltd コンピュータの配置方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7003572B1 (en) * 2001-02-28 2006-02-21 Packeteer, Inc. System and method for efficiently forwarding client requests from a proxy server in a TCP/IP computing environment
US20030177166A1 (en) * 2002-03-15 2003-09-18 Research Foundation Of The State University Of New York Scalable scheduling in parallel processors
US8108384B2 (en) * 2002-10-22 2012-01-31 University Of Utah Research Foundation Managing biological databases
US7865582B2 (en) * 2004-03-24 2011-01-04 Hewlett-Packard Development Company, L.P. System and method for assigning an application component to a computing resource
US20060031444A1 (en) * 2004-05-28 2006-02-09 Drew Julie W Method for assigning network resources to applications for optimizing performance goals
US7647465B2 (en) * 2005-01-31 2010-01-12 Hewlett-Packard Development Company, L.P. Storage-system-portion sufficiency determination
US8341623B2 (en) * 2007-05-22 2012-12-25 International Business Machines Corporation Integrated placement planning for heterogenous storage area network data centers
US8543596B1 (en) * 2009-12-17 2013-09-24 Teradata Us, Inc. Assigning blocks of a file of a distributed file system to processing units of a parallel database management system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01214961A (ja) * 1988-02-23 1989-08-29 Fujitsu Ltd 負荷分散方式
JPH0830558A (ja) * 1994-07-20 1996-02-02 Fujitsu Ltd 計算機システムにおける負荷分散方法及びそれを利用した計算機システム
JP2003058520A (ja) * 2001-08-09 2003-02-28 Mitsubishi Heavy Ind Ltd コンピュータの配置方法

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2013018916A1 (ja) * 2011-08-01 2015-03-05 日本電気株式会社 分散処理管理サーバ、分散システム、及び分散処理管理方法
WO2013018916A1 (ja) * 2011-08-01 2013-02-07 日本電気株式会社 分散処理管理サーバ、分散システム、及び分散処理管理方法
WO2014125543A1 (ja) * 2013-02-15 2014-08-21 日本電気株式会社 情報処理装置
JPWO2014125543A1 (ja) * 2013-02-15 2017-02-02 日本電気株式会社 情報処理装置
US10171570B2 (en) 2013-02-15 2019-01-01 Nec Corporation Information processing apparatus
US9270742B2 (en) 2013-09-05 2016-02-23 Hitachi, Ltd. Computer system and control method of computer system
US10776325B2 (en) 2013-11-26 2020-09-15 Ab Initio Technology Llc Parallel access to data in a distributed file system
JP2017506373A (ja) * 2013-11-26 2017-03-02 アビニシオ テクノロジー エルエルシー 分散ファイルシステム内のデータへの並列アクセス
US11599509B2 (en) 2013-11-26 2023-03-07 Ab Initio Technology Llc Parallel access to data in a distributed file system
WO2016110985A1 (ja) * 2015-01-08 2016-07-14 株式会社日立製作所 管理方法及び管理装置並びに記憶媒体
CN106529965A (zh) * 2016-12-02 2017-03-22 浪潮(苏州)金融技术服务有限公司 一种数据处理方法、装置和系统
JP2020098547A (ja) * 2018-12-19 2020-06-25 富士通株式会社 情報処理装置、情報処理プログラムおよび情報処理システム
JP7180362B2 (ja) 2018-12-19 2022-11-30 富士通株式会社 情報処理装置、情報処理プログラムおよび情報処理システム
US11196823B2 (en) 2019-08-27 2021-12-07 Hitachi, Ltd. Service deployment control system, service deployment control method, and storage medium
JPWO2021111585A1 (ja) * 2019-12-05 2021-06-10
JP7306481B2 (ja) 2019-12-05 2023-07-11 日本電信電話株式会社 分散処理システム
US20230139581A1 (en) * 2021-10-29 2023-05-04 Scality, S.A. Data placement in large scale object storage system
US11922042B2 (en) * 2021-10-29 2024-03-05 Scality, S.A. Data placement in large scale object storage system

Also Published As

Publication number Publication date
JPWO2011074699A1 (ja) 2013-05-02
US20120259983A1 (en) 2012-10-11
JP5929196B2 (ja) 2016-06-01

Similar Documents

Publication Publication Date Title
JP5929196B2 (ja) 分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法
JP6212655B2 (ja) 分散システム、計算機、及び、仮想マシンの配置方法
US10581957B2 (en) Multi-level data staging for low latency data access
Hu et al. Flutter: Scheduling tasks closer to data across geo-distributed datacenters
US10223431B2 (en) Data stream splitting for low-latency data access
US9442954B2 (en) Method and apparatus for achieving optimal resource allocation dynamically in a distributed computing environment
Anjos et al. MRA++: Scheduling and data placement on MapReduce for heterogeneous environments
WO2016078008A1 (zh) 调度数据流任务的方法和装置
CN110308984B (zh) 一种用于处理地理分布式数据的跨集群计算系统
US8849888B2 (en) Candidate set solver with user advice
US20130297788A1 (en) Computer system and data management method
US20150128150A1 (en) Data processing method and information processing apparatus
US10860450B1 (en) Automated query retry in a database environment
KR20150019359A (ko) 분산 시스템에서 데이터를 처리하는 방법
US20220327040A1 (en) Automated query retry execution in a database system
US20160154867A1 (en) Data Stream Processing Using a Distributed Cache
Zhang et al. Online scheduling of heterogeneous distributed machine learning jobs
US12086125B2 (en) Multiple volume placement based on resource usage and scoring functions
CN105740249B (zh) 一种大数据作业并行调度过程中的处理方法及其系统
JP2017191387A (ja) データ処理プログラム、データ処理方法およびデータ処理装置
KR101661475B1 (ko) 이기종 클러스터 상에서 하둡 부하 분산 방법, 이를 수행하기 위한 기록 매체 및 하둡 맵리듀스 시스템
US9110823B2 (en) Adaptive and prioritized replication scheduling in storage clusters
US10083121B2 (en) Storage system and storage method
US10855767B1 (en) Distribution of batch data to sharded readers
US10824640B1 (en) Framework for scheduling concurrent replication cycles

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10837721

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2011546196

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 13516648

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10837721

Country of ref document: EP

Kind code of ref document: A1