WO2016067424A1 - 分散システム、計算機、及び、仮想マシンの配置方法 - Google Patents

分散システム、計算機、及び、仮想マシンの配置方法 Download PDF

Info

Publication number
WO2016067424A1
WO2016067424A1 PCT/JP2014/078972 JP2014078972W WO2016067424A1 WO 2016067424 A1 WO2016067424 A1 WO 2016067424A1 JP 2014078972 W JP2014078972 W JP 2014078972W WO 2016067424 A1 WO2016067424 A1 WO 2016067424A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
node
virtual machine
information
control unit
Prior art date
Application number
PCT/JP2014/078972
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 US15/500,140 priority Critical patent/US10585691B2/en
Priority to JP2016556132A priority patent/JP6212655B2/ja
Priority to PCT/JP2014/078972 priority patent/WO2016067424A1/ja
Publication of WO2016067424A1 publication Critical patent/WO2016067424A1/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file systems
    • 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
    • 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]
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Definitions

  • the present invention generally relates to a technique of a distributed system, a computer, and a virtual machine arrangement method.
  • Patent Document 1 describes a technique for preventing replica data in HDFS (Hadoop Distributed File System) from being stored only in one physical machine, and replica data stored in a local physical machine is preferentially read. Techniques for doing so are disclosed.
  • HDFS Hadoop Distributed File System
  • One file in HDFS is divided into one or more data blocks.
  • a plurality of data blocks constituting a plurality of files are distributed and stored in a plurality of physical machines.
  • Two or more data blocks constituting one file may be distributed to two or more physical machines. Therefore, when a virtual machine running on a physical machine executes a predetermined process, it collects data blocks (including replica data) from the remote physical machine through HDFS and configures an input file used for the process. There is a case.
  • the process of configuring a file from this data block increases the load on the network bandwidth. Furthermore, acquiring a data block from a remote physical machine via a network results in a longer response time than acquiring a data block from a local physical machine.
  • a distributed system is configured to distribute and store a plurality of data blocks constituting a plurality of files, and to connect a communication network and execute a plurality of virtual machines And a management machine connected to at least one of the plurality of physical machines.
  • the target machine which is at least one of a plurality of physical machines and management machines, includes a first process and a second process that receives a second process that receives an output file that is a file output by the first process.
  • the physical machine that is the destination of the first virtual machine that executes the first process and the storage destination of one or more data blocks that constitute the output file One or more physical machines and a physical machine to which the second virtual machine that executes the second process is arranged are determined.
  • the load on the network bandwidth can be reduced in the distributed system. Further, according to the present invention, it is possible to increase the possibility that a data block of a local physical machine is accessed in a distributed system.
  • summary of the distributed system which concerns on this embodiment is shown.
  • the structural example of a distributed system is shown.
  • a configuration example of a node is shown.
  • the structural example of a data set information table is shown.
  • the structural example of a data processing information table is shown.
  • the structural example of a physical resource information table is shown.
  • An example of the configuration of a virtual machine information table is shown.
  • the structural example of a data block storage information table is shown.
  • the structural example of a data processing setting screen is shown.
  • the example of a structure of a job setting screen is shown. It is a flowchart which shows the example of the process regarding registration of data processing information. It is a flowchart which shows the example of the process regarding determination of reservation of a physical resource.
  • information may be described in terms of “xxx table” or “xxx list”, but the information may be expressed in any data structure. That is, in order to show that the information does not depend on the data structure, the “xxx table” or the “xxx list” can be called “xxx information”.
  • the process may be described with “xxx part” as the subject, but the “xxx part” may be a kind of computer program (referred to as “program”).
  • the program is executed by a processor (for example, a CPU (Central Processing Unit)) to perform a predetermined process appropriately using at least one of a storage resource (for example, a memory) and a network interface device.
  • the subject of processing may be a processor and a device having the processor. Part or all of the processing performed by the processor may be performed by a hardware circuit (for example, ASIC (Application Specific Integrated Circuit)).
  • the program may be installed from a program source.
  • the program source may be a program distribution server or a storage medium (for example, a portable storage medium).
  • the processor and the memory may be collectively referred to as a controller.
  • node 111a when the same type of elements are described separately, reference numerals are used like “node 111a” and “node 111b”, and the same type of elements are not distinguished. In some cases, only a common number among the reference symbols is used, such as “node 111”.
  • FIG. 1 shows an outline of the operation of the distributed system 1 according to the present embodiment.
  • the nodes 111a, 111b, 111c, and 111d can transmit and receive data to and from each other through the network 110.
  • a system configured by the nodes 111a, 111b, 111c, and 111d and the network 110 is referred to as a distributed system 1.
  • the node 111 is a physical machine that is a kind of electronic computer. In the following description, when the subject of processing is “distributed system 1”, one node 111 or two or more nodes 111 may perform the processing in cooperation.
  • the client 50 which is a kind of electronic computer, requests the distributed system 1 to perform analysis processing of data to be analyzed.
  • the distributed system 1 executes analysis software 910a and 910b to perform analysis processing.
  • the distributed system 1 executes BI (Business Intelligence) software 930 to refer to and use analysis results of the analysis software 910a and 910b.
  • BI Business Intelligence
  • Multi-stage processing consists of multiple stages.
  • at least one process set including a first process (pre-stage process) and a second process (post-stage process) using a file output by the first process as an input is provided.
  • the start point process (process as the start point) is the first process
  • the end point process (process as the end point) is the second process
  • the process between the start point process and the end point process is the first process. It is both a process and a second process.
  • the multi-stage process may be a plurality of processes in a cascade (tree) form, or may be a recursive process (a process that ends when a result of a certain process satisfies a predetermined condition).
  • the analysis software 910a has a function of using the file f1 (data blocks b11 and b12) and the file f3 (data blocks b31 and b32) as input data and outputting the file f5 (data block b51) as the analysis result.
  • the analysis software 910b has a function of using the file f2 (data blocks b21 and b22) and the file f4 (data blocks b41 and b42) as input data and outputting the file f6 (data block b61) as the analysis result.
  • the BI software 930 receives, as input data, f5 (data block b51) that is the analysis result of the analysis software 910a and file f6 (data block b61) that is the analysis result of the analysis software 910b. A function of outputting a block b71).
  • the client 50 requests the distributed system 1 (a certain node 111) to analyze the information included in the files f1, f2, f3, and f4.
  • Distributed system 1 (a certain node 111 thereof; the same applies hereinafter) divides each of the files f1 to f4 requested by the client 50 into one or more data blocks. That is, the distributed system divides the file f1 into data blocks b11 and b12, the file f2 into data blocks b21 and b22, the file f3 into data blocks b31 and b32, and the file f4 into data blocks b41 and b42.
  • each of the divided data blocks b11, b12, b21,... Is stored in which node 111 (the storage device 700; the same applies hereinafter), and each of these software 910a, 01b, 930 is stored.
  • Which node 111 is used for execution is important. The reason is as follows.
  • the node needs to reconstruct the software input file executed on its own node from multiple data blocks.
  • the local node needs to acquire the data block stored in another node (that is, a remote node) through the network 110.
  • acquiring a data block from a remote node through the network 110 requires more time than acquiring a data block from its own node (that is, a local node), and the network bandwidth is increased. Increase the load.
  • the distributed system 1 ensures that a plurality of data blocks constituting the software input file and the software exist in one node as much as possible. That is, the distributed system 1 stores a plurality of data blocks constituting the input file in one node as much as possible instead of randomly storing in each node.
  • the distributed system 1 causes the software related to the input file to be executed on the node in which the many data blocks are stored. For example, in a configuration in which the software is executed in the virtual machine 121 constructed on the hypervisor 202, the distributed system 1 places the virtual machine 121 in the node 111 in which the many data blocks are stored.
  • a value related to a ratio of data blocks stored in a local node where the software is executed among a plurality of data blocks input to the software is referred to as a “local access value”.
  • the distributed system 1 determines that the files f1 (data blocks b11 and b12) and f3 (data blocks b31 and b12) input from the client 50 are set. b32) may be stored in each node so that the local access value of the analysis software 910a is 50% or more.
  • the distributed system 1 may store the data blocks b11 and b12 in the node 111g where the analysis software 910a is executed.
  • the distributed system 1 uses the files f5 (data block b51) and f6 (data block b61) output from the analysis software 910a and 910b. ) May be stored in each node so that the local access value of the BI software 930 is 90% or more.
  • the distributed system 1 may control the distributed file system 200 so that 90% or more of the data blocks b51 and b61 input to the BI software 930 are stored in one node. Then, the distributed system 1 may arrange the BI software 930 (virtual machine 121c) in a node in which 90% or more of the data blocks b51 and b61 are stored.
  • the distributed system 1 may determine the placement destination of the BI software 930 (virtual machine 121c) first.
  • the distributed system 1 controls the distributed file system 200 so that 90% or more of the data blocks b51 and b61 input to the BI software 930 are stored in the local node where the BI software 930 is executed. Also good.
  • the distributed system 1 may manage “data set information” including setting information regarding a data set (file group) related to input / output of each process constituting the multistage process.
  • the distributed system 1 may associate one data set information with one data processing information.
  • the data set information may include a condition regarding storage of the data set (for example, a local access value).
  • the distributed system 1 may manage “data processing information” including the order of each process constituting the multistage process, the process contents, and setting information regarding input / output data of each process.
  • the distributed system 1 may associate one piece of software with one piece of data processing information.
  • the data processing information includes the order of the processing in the multi-stage processing, software for executing the processing, specifications of the virtual machine required for executing the software, and data set information related to input / output of the processing. It's okay.
  • the distributed system 1 may execute the software included in the data processing information in a node group based on the data set information corresponding to the data processing information.
  • the distributed system 1 may select the node that stores the data block so that the local access value becomes higher.
  • the distributed system 1 may store a plurality of data blocks divided from one file in one node as much as possible.
  • the distributed system 1 includes data blocks b11 and b12 divided from the file f1 at the node 111a (storage device 700a), and data blocks b21 and b22 divided from the file f2 at the node 111c (storage device 700c). ).
  • the distributed system 1 may store a plurality of data blocks output in the first stage processing in one node as much as possible.
  • the distributed system 1 stores data blocks b51 and b61 output from the analysis software 910a and 910b in one node 111a (storage device 700a).
  • the distributed system 1 stores a plurality of data blocks to be analyzed in appropriate nodes based on data processing information and data set information set in advance, and executes software related to analysis processing Can be provisioned to the appropriate nodes.
  • FIG. 2 shows a modified example of the distributed system.
  • the distributed system is not limited to the configuration shown in FIG. 1, and the network may be configured in multiple stages.
  • the nodes 111e and 111f are connected to the network 110a, and the nodes 111g and 111h are connected to the network 110b.
  • Nodes 111e and 110f (or 110g and 110h) connected to the same network 110a (or 110b) are referred to as a node group 11a (or 11b).
  • the networks 110a and 110b are connected to the upstream network 110c.
  • the nodes 110e to 110h can transmit / receive data to / from each other through the networks 110a, 110b, and 110c.
  • the distributed system may include a management machine 51 for managing the distributed system.
  • the management machine 51 may be composed of one or more computers. Specifically, for example, when the management computer displays information (specifically, the management computer displays information on its own display device, or the management computer transmits display information to a remote display computer)
  • the management computer is the management machine 51.
  • the plurality of computers may include a display computer when the display computer performs display
  • the management machine 51 is there.
  • the distributed system may include a client 50 that uses the distributed system.
  • the management machine 51 or the client 50 may be a certain node 111 or a certain virtual machine 121 in the distributed system.
  • a plurality of nodes constitute one node group, but the node group is not limited to such a configuration.
  • a plurality of node groups may further form one node group.
  • FIG. 3 shows a configuration example of the node 111.
  • the configuration illustrated in FIG. 3 is an example.
  • a certain component for example, an xxx section or an xxx table
  • the plurality of components are integrated into one component. It may be.
  • the node 111 includes a CPU 400, a memory 500, a network I / F 600, and a storage device 700, and these elements are connected by a bus 800 capable of bidirectional data transmission / reception.
  • a bus 800 capable of bidirectional data transmission / reception.
  • An example of the bus 800 is PCIe (PCI express).
  • the storage device 700 may be provided either inside or outside the node 111.
  • the storage device 700 stores data blocks.
  • the storage device 700 writes, reads, copies, moves, and deletes data blocks based on predetermined commands.
  • Examples of the storage device 700 include an HDD (Hard Disk Drive), an SSD (Solid State Drive), and a flash memory.
  • a network I / F (Interface) 600 is an I / F for connecting the node 111 to the network 110.
  • Examples of the network I / F 600 include a fiber channel adapter and a NIC (Network Interface Card).
  • the CPU 400 executes computer programs stored in the memory 500, and realizes various functions described in the present embodiment.
  • the memory 500 stores computer programs and data accessed from the CPU 400, the network I / F 600, the storage device 700, and the like.
  • Examples of the memory 500 include DRAM (Dynamic Random Access Memory), MRAM (Magnetic Random Access Memory), and FeRAM (Ferroelectric Random Access Memory).
  • the memory 500 includes a file system control unit 510, a distributed file system control unit 520, a hypervisor control unit 530, a resource allocation control unit 540, a job control unit 550, and a data set control unit as a kind of computer program. 560 and an orchestration control unit 570 are stored. Further, in the memory 500, as a kind of information, a data set information table 1000, a data processing information table 1200, a physical resource information table 1300, a virtual machine information table 1400, a data block storage information table 1500, a job schedule An information table 1600 is stored. Details of these tables will be described later.
  • the file system control unit 510 controls the file system related to the storage device 700 of the local node 111. In other words, the file system control unit 510 can access data stored in the storage device 700 through the file system. Examples of file systems include FAT, NTFS, and ext3.
  • the distributed file system control unit 520 controls the distributed file system 200 related to the distributed system 1 (see FIG. 1). That is, the distributed file system control unit 520 can seamlessly access data stored in the storage device 700 of any node 111 constituting the distributed system 1 through the distributed file system 200, regardless of whether it is local or remote. Like that.
  • the distributed file system control unit 520 implements the distributed file system 200 in cooperation with the file system control unit 510 of the remote node. As a result, the virtual machine 121 and software can access the data through the distributed file system 200 without being aware of which node 111 stores the data to be accessed. Further, by applying the distributed file system 200 to the distributed system 1, the distributed system 1 can flexibly add and delete nodes.
  • An example of the distributed file system 200 is HDFS.
  • the distributed file system control unit 520 may generate replica data obtained by duplicating the data block and store it in other nodes as necessary. This is because data blocks are made redundant to increase the availability of the distributed system 1.
  • the hypervisor control unit 530 controls the hypervisor 202 (see FIG. 1) of the node 111.
  • the hypervisor 202 provides an execution environment for the virtual machine 121.
  • the hypervisor 202 appropriately adjusts between the physical resource of the node 111 (physical machine) and the virtual resource allocated to the virtual machine 121.
  • KVM Kernel-based Virtual Machine
  • the hypervisor control unit 530 controls the virtual machine 121 in the node 111 through the control of the hypervisor 202.
  • the hypervisor control unit 530 may start, stop, restart, move between nodes, and the like of the virtual machine 121.
  • the resource allocation control unit 540 allocates physical resources of the node 11 to the virtual machine 121.
  • the hypervisor control unit 530 controls how much physical resources (calculation resources, memory resources, network resources, and the like) of the node 111 are allocated (reserved) to which virtual machines 121, and the like.
  • the resource allocation control unit 540 reserves physical resources allocated to the virtual machine 121 in advance. This is to prevent physical resources allocated to a certain virtual machine from being stolen by other virtual machines.
  • the job control unit 550 controls jobs executed on the node 111.
  • the job control unit 550 may control the job based on the schedule. Examples of job contents include backup and migration of data related to the distributed file system 200, creation, restart, deletion and migration of a virtual machine related to the hypervisor 202, start and stop of various software executed on the virtual machine, regular There are start and stop of batch-type processing that is executed automatically, and start and stop of interactive processing that is executed as appropriate.
  • the data set control unit 560 controls the data set information table 1000.
  • the data set information includes setting information (definition information) for grouping a plurality of data blocks as one data set.
  • the data set information may include setting information (definition information) such as a storage location and a storage method of the data set.
  • the orchestration control unit 570 controls multistage processing and distributed processing executed in the distributed system 1.
  • the orchestration control unit 570 enables the processing executed by the node 111 to access the data block in a form that satisfies a predetermined condition as much as possible.
  • the orchestration control unit 570 may be a virtual machine 121 that executes the process and / or the process so that the process executed by the node 111 can access the local data block at a rate equal to or greater than the local access value. Control the placement of the data blocks used.
  • the orchestration control unit 570 performs this control in cooperation with the control units 510, 520, 530, 540, 550, 560 using the information of each table 1000, 1200, 1300, 1400, 1500, 1600. Good.
  • orchestration control unit 570 may have the following functions.
  • the orchestration control unit 570 determines, based on the relationship between the first process and the second process, the placement destination node of the first virtual machine that executes the first process and one or more data blocks that constitute the output file.
  • One or more nodes 111 storage device 700; the same applies hereinafter) as storage destinations and the placement destination node 111 of the second virtual machine that executes the second process may be determined.
  • the relationship between the first process and the second process may satisfy a local access value required by the second process.
  • the local access value is a value related to a ratio of data blocks stored in the node 111 where the second virtual machine is arranged, among a plurality of data blocks constituting the output file input to the second process. It's okay.
  • the second process can access the data block of the local node 111 at a rate equal to or greater than the local access value. That is, it is possible to reduce the load on the network bandwidth between the nodes and improve the execution speed of the second process. Details of the local access value will be described later.
  • the orchestration control unit 570 stores the first virtual machine and the placement location of the second virtual machine and the data blocks constituting the output file of the first process so as to satisfy the local access value required by the second process. If the destination cannot be determined, replica data that is a replica of some of the data blocks constituting the output file may be stored in the node where the second virtual machine is placed. At this time, if the local access value requested by the second process cannot be satisfied unless a predetermined number or more of replica data is created, the orchestration control unit 570 may output an error to that effect. This is because if the replica data is created more than necessary, a large amount of the storage device 700 is consumed.
  • the orchestration control unit 570 determines the node 111 on which the second virtual machine is arranged from the nodes 111 that can provide the resource requested by the second virtual machine (or processing executed by the second virtual machine). You can do it.
  • the orchestration control unit 570 may store a predetermined number or more of data blocks in a plurality of data blocks constituting one file in one node 111. As a result, in reconstructing one file from a plurality of data blocks, processing for acquiring data blocks from the remote node 111 is reduced. Therefore, the load on the network bandwidth between nodes is reduced.
  • the orchestration control unit 570 may automatically set the local access value requested by the second process to be larger than the local access value requested by the first process. This is because, in the case of multi-stage processing in which large-scale data is processed in several stages, the frequency of access to the data is often higher in later stages.
  • the first process may be a batch process
  • the second process may be an interactive process.
  • the first processing the original data filtering processing and labeling processing are performed in batches every day, and the results of the first processing are aggregated and aggregated in batches every hour.
  • FIG. 4 shows a configuration example of the data set information table 1000.
  • the data set information table 1000 manages the data set information 1001 as a record.
  • Data set information 1001 is setting information related to a data set (file group) related to input / output of each process constituting the multistage process.
  • the data set information 1001 includes, as field values, a data set ID 1010, a data source ID 1020, a root directory 1030, a primary data storage node 1040, a primary data storage method 1050, a secondary data storage node 1060, and a secondary data storage method. 1070.
  • the data set ID 1010 is information for uniquely identifying the data set in the distributed system 1.
  • the data set ID 1010 may be a number or a character string, or a combination thereof.
  • a new data set ID 1010 may be assigned to a new data set after synchronization is made in the entire distributed system 1.
  • a plurality of non-overlapping IDs may be distributed to each node, and each node may assign an unused one of the distributed plurality of IDs to the data set ID 1010 of the new data set. Good.
  • Data source ID 1020 is information for identifying a data set providing source (data source) of data set ID 1010.
  • the data source ID 1020 may be identification information of the machine that provides the data set, or identification information of the data processing information shown in FIG.
  • machine identification information examples include an IP address (10.20.1.1) or a machine name (Client-PC).
  • IP address 10.20.1.1
  • Client-PC machine name
  • identification information of the data processing information there is a combination (PG1-1) of the processing group ID 1210 and the sequence number 1230 of the data processing information.
  • the root directory 1030 indicates a root directory in which the data set with the data set ID 1010 is stored in the distributed file system 200.
  • the root directory 1030 may be expressed by a full path name or a URL.
  • the root directory 1030 is not limited to a directory on the distributed file system 200, and may be a directory on a local file system in an arbitrary node.
  • the root directory 1030 may be a combination of a node ID and the full path name or URL of a directory on the file system in the node with the node ID.
  • the primary data storage node 1040 represents a node in which primary data in the data set with the data set ID 1010 is stored.
  • Primary data is data that is preferentially accessed by software related to analysis processing.
  • Software executed in the node of the primary data storage node 1040 preferentially accesses data stored in the node (that is, primary data). Therefore, it is desirable that the virtual machine 121 on which the software for analyzing the data set with the data set ID 101 is executed is arranged or constructed in the node of the primary data storage node 1040.
  • the primary data storage method 1050 indicates a method of storing data in the primary data storage node 1040.
  • a local access value for example, “local access value ⁇ 50%” for software executed in the node of the primary data storage node 1040 may be set.
  • the primary data storage node 1040 When it is desired to store a plurality of data blocks divided from one file in one node as much as possible (that is, when it is desired to reduce the load on the network bandwidth between nodes), the primary data storage node 1040 has “aggregate storage”. May be set.
  • the primary data storage node 1040 may be set to “spread storage”. .
  • distributed storage may be set in the primary data storage node 1040.
  • the secondary data storage node 1060 represents a node in which secondary data in the data set having the data set ID 1010 is stored.
  • the secondary data is data of a portion excluding primary data from the data group constituting the data set.
  • one or more nodes may be set directly, or “all nodes” or “other than the primary data storage node” may be set.
  • Secondary data storage method 1070 indicates a method of storing data in the secondary data storage node 1060 node.
  • the setting of the secondary data storage method 1070 may be the same as the setting of the primary data storage method 1050.
  • FIG. 5 shows a configuration example of the data processing information table 1200.
  • the data processing information table 1200 manages one or more data processing information 1201 in the distributed system 1 as a record.
  • Data processing information 1201 is information relating to processing of data to be analyzed.
  • the data processing information 1201 may include a processing group ID 1210, a priority 1220, a sequence number 1230, a program 1240, an execution trigger 1250, and requested resource information as field values.
  • Request resource information is information on physical resources required for processing related to data processing information.
  • the requested resource information includes, as field values, the number of virtual machines 1260, the number of CPUs 1261, the memory capacity 1262, the disk type 1263, the disk capacity 1264, the network bandwidth 1265, the INPUT data set ID 1270, and the INPUT data refinement. It includes a condition 1271, an INPUT local access value 1272, an OUTPUT data set ID 1280, and an OUTPUT local access value 1281.
  • the processing group ID 1210 is information for uniquely identifying a processing group in the distributed system 1.
  • a processing group is a group of a series of processes (multi-stage processes) for performing a predetermined analysis.
  • the processing group ID 1210 may be a number or a character string, or a combination thereof.
  • the processing group ID 1210 may be guaranteed uniqueness as in the case of the data set ID 1010 described above.
  • the priority 1220 is a value indicating the high priority of the data processing information related to the priority 1220. In the present embodiment, it is assumed that the higher the priority 1220 value, the higher the priority.
  • the physical resources of the distributed system 1 are finite. Therefore, even if the physical resource of the distributed system 1 is preferentially assigned to or executed preferentially with respect to the processing (for example, the program 1240) related to the data processing information 1201 having a high priority 1220. Good. Therefore, in the processing related to the data processing information 1201 having a low priority 1220, physical resources are allocated as indicated by the data processing information 1201 (for example, as requested resource information) or as indicated by the execution timing 1250. It is not always guaranteed that the program 1240 will be executed.
  • the sequence number 1230 is a value for identifying each data processing information 1201 belonging to the processing group of the processing group ID 1210. Therefore, one or more sequence numbers 1230 may be associated with one processing group ID 1210. Processing related to the data processing information 1201 belonging to the same processing group may be executed in the order of the sequence number 1210. That is, the sequence number 1230 may be said to indicate the order (relationship between the previous stage and the subsequent stage) of each process constituting the multistage process.
  • the program 1240 is a value for identifying a program executed in the processing related to the data processing information 1201.
  • the program 1240 is set with a path name or a program name where the program is stored.
  • the program 1240 may be set with a plurality of program IDs. In this case, in the processing related to the data processing information 1201, these plural programs may be executed.
  • a script ID describing the execution order of a plurality of programs may be set. In this case, in the processing related to the data processing information 1201, the plurality of programs may be executed in the order described in the script.
  • the execution trigger 1250 is a value that represents a trigger when the processing related to the data processing information 1201 is executed. For example, when “5AM, everyday” is set in the execution trigger 1250, the program 1240 is executed every day at 5 am (periodically). For example, when “ALL” is set in the execution opportunity 1250, the program 1240 is always executed.
  • the requested resource information is information related to physical resources required for processing related to the data processing information 1201.
  • the requested resource information includes, as field values, the number of virtual machines 1260, the number of CPUs 1261, the memory capacity 1262, the disk type 1263, the disk capacity 1264, the network bandwidth 1265, the INPUT data set ID 1270, and the INPUT data refinement.
  • the condition 1271, the INPUT local access value 1272, the OUTPUT data set ID 1280, and the OUTPUT local access value 1281 may be included.
  • the number of virtual machines 1260 is a value indicating the number of virtual machines required to execute the processing related to the data processing information 1201.
  • the CPU number 1261 is a value indicating the number of CPUs (or the number of cores) required for one virtual machine.
  • the memory capacity 1262 is a value indicating the capacity of the main memory required for one virtual machine.
  • the disk type 1263 is a value indicating a disk type required for one virtual machine. Examples of the disk type 1263 include HDD and SSD.
  • the disk capacity 1264 is a value indicating the disk capacity required for one virtual machine.
  • the network bandwidth 1265 is a value indicating the network bandwidth required for one virtual machine.
  • the number of CPUs 1261, memory capacity 1262, disk type 1263, disk capacity 1264, and network bandwidth 1265 may be referred to as virtual machine configuration information.
  • the distributed system 1 determines whether the resource requested by the configuration information can be secured from the available physical resources of the node 111. If the determination is affirmative (if it can be secured), the node 111 constructs the virtual machine 121 and allocates the resource requested by the configuration information to the virtual machine.
  • the INPUT data set ID 1270 is a value for identifying the INPUT data set.
  • the INPUT data set is a data set that can be input to the program 1240 included in the data processing information 1201.
  • the INPUT data narrowing condition 1271 is a value indicating a condition for narrowing down the INPUT data to be input from the INPUT data set of the INPUT data set ID 1270.
  • all of the INPUT data sets are input targets.
  • a query conditional expression is set in the INPUT data narrowing condition 1271
  • an INPUT data set that matches the query conditional expression is an input target.
  • a query conditional expression is set to the effect that the last update date and time, which is file attribute information, is after a predetermined date and time
  • INPUT data whose last update date and time is updated after the predetermined date and time is an input target.
  • the query conditional expression at this time may be expressed as, for example, “a file whose last update date and time is 2010/01/01 12:00 or later”.
  • the query condition expression narrowed down by a specific keyword may be expressed as, for example, “a file including a character string“ test ”in a character string in a file”.
  • the INPUT local access value 1272 is a value indicating the ratio of the INPUT data set that can be accessed from the storage device 700 of the local node 111 in the INPUT data set for the processing related to the data processing information 1201.
  • the INPUT local access value 1272 is not a value to be strictly observed, but may be a so-called target value.
  • the INPUT local access value 1272 “100%” indicates that all INPUT data sets for the process related to the data processing information 1201 should be stored in the local node 111 on which the process is executed.
  • the INPUT local access value 1272 “10%” is stored in the local node 111 where 10% or more of the INPUT data sets for all the processes related to the data processing information 1201 are executed. Indicates what should be done.
  • the OUTPUT data set ID 1280 is a value for identifying the OUTPUT data set.
  • the OUTPUT data set is a data set that can be output from the program 1240 included in the data processing information 1201.
  • the OUTPUT local access value 1281 is a value indicating the ratio of the OUTPUT data set stored in the storage device 700 of the local node 111 in the OUTPUT data set by the processing related to the data processing information.
  • the OUTPUT local access value 1281 is not a value to be strictly observed but may be a so-called target value.
  • the OUTPUT local access value “100%” indicates that all OUTPUT data sets by the processing related to the data processing information 1201 should be stored in the local node 111.
  • the OUTPUT local access value “Free” indicates that the OUTPUT data set obtained by the processing related to the data processing information 1201 may be stored in any node 111.
  • the data processing information 1201a belongs to the processing group with the processing group ID 1210 “PG1”, and the sequence number 1230 in the processing group represents “1”.
  • the data processing information 1201a indicates that the program 1240 “Hadoop2” and “Spark / Shark” are executed with the priority 1220 “10” at the execution opportunity 1250 “every day at 5 am”.
  • the processing related to the data processing information 1201a represents that it is executed by two virtual machines (1260). To construct one virtual machine, four CPUs (1261), an 8 GB memory capacity (1263), a 1 TB HDD (1263, 1264), and a 1 Gbps network bandwidth (1265) are required. It represents that.
  • the data processing information 1201a is the data set of the OUTPUT data set ID 1280 “102”. Is output. In the input / output of this data set, 50% or more of the INPUT data set should be locally accessed (1270), and the output destination of the OUTPUT data set does not matter (1261).
  • FIG. 6 shows a configuration example of the physical resource information table 1300.
  • the physical resource information table 1300 manages the physical resource information 1301 of each node 111 in the distributed system 1 as a record.
  • the physical resource information 1301 is information relating to the specifications (performance) and usage of the physical resources that the node 111 has.
  • the physical resource information 1301 may include a node group ID 1310, a node ID 1320, a CPU resource 1330, a memory resource 1340, a disk resource 1350, and a network resource 1360 as field values. These field values may be changed as needed.
  • the node group ID 1310 is a value for uniquely identifying a node group composed of one or more nodes 111 in the distributed system 1.
  • the node group ID 1310 may be a number or a character string, or a combination thereof.
  • the node group ID 1310 may be guaranteed uniqueness by the same method as the data set ID 1010 described above.
  • the node ID 1320 is a value for uniquely identifying the node 111 in the distributed system 1. Accordingly, one or more node IDs 1320 may be associated with one node group ID 1310. Examples of the node ID 1320 include an IP address, URL, and node name. The node ID 1320 may be guaranteed uniqueness by the same method as the data set ID 101 described above.
  • the CPU resource 1330 is information related to the CPU resource of the node 111 with the node ID 1320.
  • the CPU resource 1330 includes, as subfield values, a spec 1331 indicating the performance of the CPU, a total number 1332 indicating the number of CPUs or cores, and an allocation rate indicating a ratio of allocated (in use) CPUs or cores to the total number 1332 1333 may be included.
  • the memory resource 1340 is information related to the memory resource of the node 111 with the node ID 1320.
  • the memory resource 1340 may include, as subfield values, a total amount 1341 indicating a memory capacity and an allocation rate 1342 indicating a ratio of allocated (reserved) capacity to the total amount 1341.
  • the disk resource 1350 is information related to the disk resource of the node 111 with the node ID 1320.
  • the disk resource 1350 includes, as subfield values, a specification 1351 indicating the type of disk, a total amount 1352 indicating the capacity of the disk, and an allocation rate 1353 indicating a ratio of allocated (reserved) capacity to the total amount 1352. It's okay.
  • a plurality of disk resources 1350 may be associated with one node ID 1320.
  • the disk resource 1350 having the SSD and SATA specifications 1351 may be associated with the node ID 1320, respectively.
  • the network resource 1360 is information related to the network resource of the node 111 with the node ID 1320.
  • the network 1360 includes, as subfield values, a specification 1361 indicating the type of the network, a total amount 1362 indicating the network bandwidth, and an allocation rate 1363 indicating the ratio of the allocated (reserved) bandwidth to the total amount 1362. Good.
  • a plurality of network resources 1360 may be associated with one node ID 1320.
  • a network resource 1360 having the specifications 1361 of Ethernet and Fiber Channel may be associated with the node ID 1320, respectively.
  • FIG. 7 shows a configuration example of the virtual machine information table 1400.
  • the virtual machine information table 1400 manages the virtual machine information 1401 of each node 111 in the distributed system 1 as a record.
  • the virtual machine information 1401 is information relating to the specifications (performance) and usage of the virtual machine that the node 111 has.
  • the virtual machine information 111 may include a virtual machine ID 1410, a node ID 1420, the number of CPUs 1430, a memory capacity 1440, a disk capacity 1450, a network bandwidth 1460, and a usage status 1470 as field values. These field values may be changed as needed.
  • the virtual machine ID 1410 is a value for uniquely identifying the virtual machine 121 in the distributed system 1.
  • the uniqueness of the virtual machine ID 1410 may be guaranteed by the same method as the data set ID 1010 described above.
  • the node ID 1420 is a value for uniquely identifying the node 111 in which the virtual machine 121 with the virtual machine ID 1410 is stored.
  • the node ID 1420 and the node ID 1320 in FIG. 6 may use IDs of the same system.
  • the CPU number 1430 is a value indicating the number of virtual CPUs or cores that the virtual machine 121 having the virtual machine ID 1410 has (allocated).
  • the memory capacity 1440 is a value indicating the capacity of the virtual memory that the virtual machine 121 having the virtual machine ID 1410 has (allocated).
  • the disk capacity 1450 is a value indicating the capacity of the virtual disk that the virtual machine 121 having the virtual machine ID 1410 has (allocated).
  • the network bandwidth 1460 is a value that represents the bandwidth of the virtual network that the virtual machine with the virtual machine ID 1410 has (allocated).
  • the usage status 1470 is a value indicating processing executed by the virtual machine 121 having the virtual machine ID 1410.
  • the value indicating this processing may be the processing group ID 1210 and / or the sequence number 1220.
  • the virtual machine information 1401a in FIG. 7 indicates that the virtual machine 121 with the virtual machine ID 1410 “VM1” is built in the node 111 with the node ID 1420 “Node1”.
  • the virtual machine information 1401a indicates that the virtual machine 121 with the virtual machine ID 1410 “VM1” has “4” virtual CPUs, (1430), “8 GB” virtual memory, (1440), and “1TB” virtual disks. (1450), “1 Gbps” virtual network bandwidth and (1460).
  • the virtual machine information 1401a indicates that the processing related to the processing group ID “PG1” (1470) is executed in the virtual machine 121 having the virtual machine ID 1410 “VM1”.
  • FIG. 8 shows a configuration example of the data block storage information table 1500.
  • the data block storage information table 1500 manages the data block storage information 1501 in the distributed system 1 as a record.
  • the data block storage information 1501 is information regarding the storage location of the data block divided from the file.
  • the data block storage information table 1500 is managed by the distributed file system control unit 520 of each node 111 and may be synchronized between the nodes 111 in the distributed system 1 as necessary.
  • the data block storage information 1501 may include a data block ID 1510, a file ID 1520, a file offset 1530, a data set ID 1540, a storage number 1550, and a storage location 1560 as field values.
  • the data block ID 1510 is a value for uniquely identifying each data block divided from the file in the distributed system 1.
  • the uniqueness of the data block ID 1510 may be guaranteed by the same method as the data set ID 1010 described above.
  • the file ID 1520 is a value for uniquely identifying the file in the distributed system 1.
  • the uniqueness of the file ID 1520 may be guaranteed by the same method as the data set ID 1010 described above.
  • the file offset 1530 is a value indicating the offset position of the data block with the data block ID 1510 in the file with the file ID 1520.
  • the data set ID 1540 is a value indicating the data set ID of the data set to which the file with the file ID 1520 belongs.
  • the data set ID 1540 and the data set ID 1010 in FIG. 4 may use the same system ID.
  • the storage number 1550 is a value indicating the number of data blocks with the data block ID 1510 stored redundantly (duplicated).
  • the number stored redundantly may be set as a default value of the distributed system 1 or may be set for each data block.
  • a redundantly stored data block is referred to as replica data.
  • the storage number 1550 may be the total of the original data block and replica data, or may be the number of replica data only.
  • the storage location 1560 is a value indicating the node 111 and the path name in which the data block with the data block ID 1510 is stored.
  • the storage information 1560 may include the storage location of each of the plurality of replica data.
  • FIG. 9 shows a configuration example of the data processing setting screen 2000.
  • the data processing setting screen 2000 is configured as a kind of GUI (Graphical User Interface), and may be used by an administrator to register information in the data processing information table 1200.
  • GUI Graphic User Interface
  • the data processing setting screen 2000 is displayed on a predetermined display of the client machine 50.
  • values set in the data processing information table 1200 may be displayed.
  • a default value may be displayed on the data processing setting screen 2000.
  • the data processing setting screen 2000 has an input area for setting field values of the data processing information 1201.
  • one or more data processing information 1201 having the input value as the processing group ID 1210 is specified in the data processing information table 1200.
  • the specified one or more data processing information 1201 is referred to as a “data processing information group”. That is, the data processing information group includes one or more data processing information to be set.
  • new data processing information 1201 having the value input in the processing group ID area 2110 in the processing group ID 1210 is generated. Is done.
  • the value input to the priority area 2120 is set as the priority 1220 of the data processing information 1201.
  • the value input to the data source ID area 2130 is set as the data source ID 1020 of the new data set information 1001.
  • This new data set information 1001 is newly registered in the data set information table 1000.
  • the data processing setting screen 2000 displays “Check” for determining whether or not the input data source ID is valid (whether or not the data source can be accessed based on the specified information).
  • a button 2131 may be provided. For example, when the administrator presses the “Check” button 2131 after inputting a value in the data source ID area 2130, the check result may be displayed on the data processing setting screen 2000.
  • the value input in the root directory area 2140 is set in the root directory 1030 of the new data set information 1001 described above.
  • the data processing setting screen 2000 has a GUI for setting data processing information corresponding to the sequence number 1230 for each of the plurality of data processing information 1201 included in the data processing information group.
  • the data processing setting screen 2000 has a tab area 2200 for setting data processing information for each sequence number.
  • Each tab 2201, 2202, 2203 may display a sequence number.
  • a tab 2201 is a sequence number “1”
  • a tab 2202 is a sequence number “2”
  • a tab 2203 is a tab area 2200 for setting data processing information of a sequence number “3”.
  • FIG. 9 shows that the tab area 2200 for setting the data processing information of the sequence number “1” is selected.
  • the data processing information corresponding to the sequence number of the selected tab in the target data processing information is referred to as “target data processing information”.
  • Tabs may be added and deleted arbitrarily. For example, in FIG. 9, when the “+” button 2204 is pressed, a new tab (sequence number) is added, and when the “ ⁇ ” button 2205 is pressed, the last tab (sequence number) (or active tab) is added. ) May be deleted.
  • the value input to the program area 2210 is set in the program 1240 in the target data processing information.
  • the administrator inputs a path name or a program name where the program is stored in the program area 2210.
  • the path name storing the program input in the program area 2210 is searched from the file system, and the result may be displayed.
  • the value input in the execution trigger area 2220 is set in the execution trigger 1250 in the target data processing information.
  • an execution opportunity area 2220 may be added so that a plurality of process execution triggers can be input.
  • the “ ⁇ ” button 2222 is pressed, one of the processing execution triggers may be deleted.
  • the value input to the virtual machine number area 2230 is set to the virtual machine number 1260 in the target data processing information.
  • the physical resources allocated to each virtual machine are input as follows.
  • the value input to the CPU area 2240 is set to the CPU number 1261 in the target data processing information.
  • the value input to the memory area 2241 is set in the memory capacity 1262 in the target data processing information.
  • the value input in the disk type area 2242 is set in the disk type 1263 in the target data processing information.
  • the value input to the disk capacity area 2243 is set to the disk capacity 1264 in the target data processing information.
  • the value input to the network area 2244 is set in the network 1265 in the target data processing information.
  • Information related to the INPUT data set is input as follows.
  • the value input to the INPUT data narrowing condition area 2250 is set in the INPUT data narrowing condition 1271 in the target data processing information.
  • the value input to the INPUT local access value area 2251 is set to the INPUT local access value 1272 in the target data processing information.
  • the value input to the OUTPUT local access value area 2260 is set to the OUTPUT local access value 1281 in the target data processing information.
  • a recommended value may be automatically set in the INPUT local access value 1272 and / or the OUTPUT local access value 1281.
  • the recommended value of the INPUT local access value 1272 may be smaller as the sequence number is smaller, and may be larger as the sequence number is larger. For example, when a process composed of two stages is set, the recommended value of the INPUT local access value of the first stage (sequence number “1”) is set to 50%, and the process is performed using the output result of the first stage.
  • the recommended value of the INPUT local access value in the second stage may be 100%.
  • the frequency of local access can be increased in the case where the data access range is narrower and the access is performed more frequently as the subsequent processing. Thereby, processing overhead in the entire multistage processing can be reduced.
  • the system automatically sets (presents) the recommended value of the INPUT local access value 1272, thereby reducing the burden on the administrator. That is, the administrator is freed from the burden of setting a local access value in each process in consideration of the number of stages in the processing sequence in the multistage process.
  • the target data processing information in which the value input above is set is newly registered in the data processing information table 1200. At this time, if data processing information having the same processing group ID is already registered in the data processing information table 1200, a new registration error may be displayed.
  • the target data processing information in which the value input above is set is updated and registered in the data processing information table 1200. At this time, if data processing information having the same processing group ID is not registered in the data processing information table 1200, an update registration error may be displayed.
  • the value input in the target data processing information may be verified. If the values are inconsistent or it is difficult to cope with the current physical resource, an error to that effect may be displayed.
  • values that can be input from the data processing setting screen 2000 may be imported into the distributed system 1 as a predetermined setting file.
  • a setting file name is input to the setting file import area 2510 of FIG. 9 and the “Import” button 2512 is pressed, the contents of this setting file are registered in the data processing information table 1200 as target data processing information. Also good.
  • the “Ref” button 2511 is pressed, the path name in which the setting data input to the setting file import area 2510 is stored is searched from the file system, and the result may be displayed.
  • FIG. 10 shows a configuration example of the job setting screen 4000.
  • the job setting screen 4000 is configured as a kind of GUI, and may be used by an administrator to register the job schedule information 1601 in the job schedule information table 1600. For example, when the administrator accesses a certain node 111 (or management machine 51) of the distributed system 1 via the client 50, the job setting screen 4000 is displayed on a predetermined display of the client 50. In the job setting screen 4000, values set in the job schedule information table 1600 may be displayed. When not set, a default value may be displayed on the job setting screen 4000.
  • the job setting screen 4000 has an input area for setting field values of the job schedule information 1601.
  • job schedule information 1601 having the input value in the job ID 1610 is specified in the job schedule information table 1600.
  • the specified job schedule information 1601 is referred to as “target job schedule information”. That is, the target job schedule information is job schedule information to be set.
  • new job schedule information having the value input to the job ID area 4110 in the job ID 1610 may be generated.
  • existing job schedule information having the value input to the job ID area 4110 in the job ID 1610 is extracted, and the extracted job Values already set in the schedule information may be displayed in each input area described later.
  • the value input to the processing group ID area 4120 is set as the processing group ID 1620 of the target job schedule information.
  • the value input in the sequence number area 4130 is set as the sequence number 1630 of the target job schedule information.
  • the value input in the execution form area 4140 is set as the execution form 1650 of the target job schedule information.
  • the value input in the execution trigger area 4150 is set in the execution date 1640 of the target job schedule information.
  • the operation when the “+” button 4113 and the “ ⁇ ” button 4114 are pressed may be the same as the “+” button 2221 and the “ ⁇ ” button 2222 in the execution trigger area 2220 in FIG.
  • the value input in the priority area 4160 is set in the priority 1670 of the target job schedule information.
  • the target job schedule information having the value input in the above is updated and registered in the job schedule information table 1600.
  • an update registration error may be displayed.
  • the job schedule information 1601 having the input job ID 1610 value may be deleted from the job schedule information table 1600.
  • GUI has been described as means for inputting, updating, and displaying values, but other means may be used. Examples of other means include CLI (Command Line Interface) or API (Application Programming Interface).
  • CLI Common Line Interface
  • API Application Programming Interface
  • FIG. 11 is a flowchart showing an example of processing related to registration of data processing information.
  • the orchestration control unit 570 receives the registration processing group including the data processing information input on the data processing setting screen 2000 (S101).
  • the orchestration control unit 570 refers to the physical resource information table 1300 (S102) and determines whether or not the physical resource requested by the registration processing group can be secured (S103). Details of the determination process will be described later (see FIG. 12).
  • the orchestration control unit 570 proceeds to the process of S107 described later.
  • the orchestration control unit 570 proceeds to the next process of S104.
  • the orchestration control unit 570 determines whether the physical resource requested by the registration processing group can be secured by releasing the physical resource secured by the data processing information having a lower priority than the priority of the registration processing group. (S104). For example, the determination is made as follows.
  • the orchestration control unit 570 next extracts data processing information 1201 having a priority lower than the priority of the registered processing group from the data processing information table 1200. To do. When such data processing information cannot be extracted, the orchestration control unit 570 ends this processing as an error (S104: No).
  • the orchestration control unit 570 next moves the virtual machine related to the extracted low-priority data processing information 1201 to another node 111 to request the registration processing group. It is determined whether a physical resource to be secured can be secured. This determination is the second determination.
  • the orchestration control unit 570 specifies the physical resource assigned to the migration target virtual machine. In addition, the orchestration control unit 570 extracts a node that is a movement destination candidate of the movement target virtual machine. Then, the orchestration control unit 570 proceeds to the process of S105 (S104: Yes).
  • the orchestration control unit 570 then releases the physical resource allocated to the virtual machine related to the extracted low priority data processing information (that is, this If the virtual machine is stopped), it is determined whether or not the physical resource requested by the registration processing group can be secured. This determination is the third determination.
  • the orchestration control unit 570 specifies the physical resource assigned to the virtual machine to be released. Then, the orchestration control unit 570 proceeds to the process of S105 (S104: Yes).
  • the orchestration control unit 570 ends this processing as an error (S104: No).
  • the orchestration control unit 570 reflects the release of the physical resource accompanying the movement or stop of the virtual machine in the physical resource information table 1300 (S105).
  • the orchestration control unit 570 requests the job control unit 550 to perform reprovisioning processing (S106).
  • the reprovisioning process is a process for changing the allocation of physical resources. Details of the reprovisioning process will be described later (see FIG. 15).
  • the orchestration control unit 570 reflects the reservation of physical resources related to the registration processing group in the physical resource information table 1300 (S107).
  • the orchestration control unit 570 requests the job control unit 550 to perform provisioning processing (S108).
  • provisioning processing S108
  • the resource allocation control unit 540 Upon receiving the provisioning process request, the resource allocation control unit 540 generates a virtual machine to which the physical resource requested (reserved) requested from the node is allocated, and installs analysis processing software in this virtual machine. These processes may be executed by the hypervisor control unit 530 that has received a request from the resource control unit 540.
  • the orchestration control unit 570 registers the data processing information included in the registration processing group in the data processing information table 1200 (S109).
  • the orchestration control unit 570 waits for the completion of the provisioning process in S108 (S110: No). When the provisioning process is completed (S110: Yes), the orchestration control unit 570 proceeds to the next process of S111.
  • the orchestration control unit 570 reflects the result of the provisioning process in S108 and the reprovisioning process in S106 in the virtual machine information table 1400 (S111).
  • the orchestration control unit 570 creates a data storage location (root directory) on the distributed file system 200 (S112).
  • the root directory for the initial data set may be a value input in the root directory area 2140 of the data processing setting screen 2000.
  • the root directory for other data sets may be automatically determined by the distributed system 1.
  • the orchestration control unit 570 updates the data set information table 1000 (S113) and ends this process.
  • an environment for executing processing related to the registration processing group input through the data processing setting screen 2000 is constructed in the distributed system 1.
  • FIG. 12 is a flowchart showing an example of processing related to determination of securing physical resources. This process corresponds to the determination process of S103 or S104 of FIG.
  • the orchestration control unit 570 selects whether the physical resource reservation is determined by the bottom-up method or the top-down method (S121). This selection may be made by the administrator, or the distributed system 1 may automatically select based on the setting.
  • the bottom-up method refers to whether or not physical resources necessary for processing related to the target data processing information can be secured in order from the target data processing information with the smallest sequence number among the plurality of target data processing information belonging to the same processing group. It is a method to evaluate.
  • the target data processing information related to the previous stage of the multi-stage process is evaluated first, and therefore, the processes related to the previous stage of the multi-stage process are generally collected in a specific physical node group.
  • Top-down method refers to whether or not resources necessary for processing related to target data processing information can be secured in order from target data processing information having a larger sequence number among a plurality of target data processing information groups belonging to the same processing group It is a method to evaluate.
  • the target data processing information related to the subsequent stage of the multi-stage process is evaluated first, and thus the processes related to the subsequent stage of the multi-stage process are generally aggregated into a specific physical node group.
  • the orchestration control unit 570 executes a bottom-up process (S122). Details of the bottom-up process will be described later (see FIG. 13).
  • the orchestration control unit 570 executes a top-down process (S123). Details of the top-down process will be described later (see FIG. 14).
  • the orchestration control unit 570 determines whether the bottom-up process (S122) or the top-down process (S123) is normally completed (S124). When the error ends (S124: No), the orchestration control unit 570 determines that the physical resource cannot be secured (S129), and returns to the processing illustrated in FIG.
  • the orchestration control unit 570 determines whether or not the processing of S125 to S127 has been completed for all data processing information in the registration processing group (S125).
  • the orchestration control unit 570 determines that physical resources can be secured (S128), and the determination result is shown in FIG. And return to the processing of FIG. At this time, the orchestration control unit 570 also passes information necessary for updating in the updating process of the physical resource information table 1300 performed after returning to the process shown in FIG. 11 to the process shown in FIG. That is, the orchestration control unit 570 passes the determination result of S128 and information on the physical resource to be secured together to the process illustrated in FIG.
  • physical resource information to be passed to the processing shown in FIG. 11 virtual machine allocation physical node identification information created in each processing sequence regarding the data processing content, the number of virtual machines to be created, and the virtual machine There is information on computer resources (CPU, memory, disk, network, etc.) to be used.
  • the orchestration control unit 570 selects one of the unprocessed data processing information (S126). That is, one of the unprocessed sequence numbers in the registration processing group is selected.
  • the orchestration control unit 570 calculates the number of nodes on which the virtual machine 121 related to the selected data processing information is arranged. That is, the orchestration control unit 570 knows the number of nodes used for the processing related to the sequence number of the selected data processing information. The number of nodes on which the virtual machine is arranged may be calculated based on information included in the node list.
  • the node list is generated in the bottom-up process in S122 or the top-down process in S123. Although details will be described later, in the node list, a node ID, a sequence number, and a value of a physical resource secured in the node are registered in association with each other.
  • the orchestration control unit 570 determines whether or not the number of nodes on which virtual machines are arranged is equal to or less than a threshold (S127).
  • a threshold S127
  • the orchestration control unit 570 may determine whether or not the number of replica data is equal to or less than a threshold value. This is to prevent a large amount of replica data from being generated and a large amount of disk resources from being consumed.
  • This threshold value may be set as a default value or may be set individually by the administrator.
  • the orchestration control unit 570 When the number of nodes on which the virtual machine is arranged is equal to or smaller than the threshold (S127: Yes), the orchestration control unit 570 returns to the process of S125. When the number of nodes on which virtual machines are arranged is greater than the threshold (S127: No), the orchestration control unit 570 determines that physical resources cannot be secured (S129), and the process illustrated in FIG. Return to.
  • FIG. 13 is a flowchart showing an example of bottom-up processing. This process corresponds to S122 in FIG.
  • the orchestration control unit 570 ends the process when the processes of S141 to S151 have been completed for all the data processing information in the registration process group (S141: Yes).
  • the orchestration control unit 570 selects the data processing information with the smallest sequence number among the unprocessed (S142). That is, the following processing is executed in order from the previous data processing information in the multi-stage processing.
  • the orchestration control unit 570 determines whether or not the sequence number of the selected data processing information is “1” (S143).
  • the sequence number indicates the number of stages of multistage processing.
  • the orchestration control unit 570 substitutes the number of nodes constituting the distributed system 1 (maximum number of nodes) into the variable PN1.
  • the variable PN1 is subtracted when the node is selected. Thereby, when the variable PN1 is “0”, it can be determined that there is node capable of securing the physical resource. That is, the value of the variable PN1 can be used as one of the end conditions of this process.
  • the orchestration control unit 570 initializes the node list (S144). Then, the orchestration control unit 570 proceeds to the process of S146.
  • the node list indicates the number of virtual machines created in the node and the physical resource information (CPU, memory, disk, network, etc.) allocated to each virtual machine for each sequence number of the data processing information in this processing. And manage.
  • the initialization of the node list may be to make the information registered in the node list empty (NULL). Identification information of a node selected as a virtual machine creation target from among a group of nodes belonging to the computer system is appropriately added to the node list.
  • the orchestration control unit 570 refers to the node list at the end of this process, thereby creating how many virtual machines for each sequence number for each node registered in the node list. It is possible to determine whether or not it is necessary to allocate the physical resources for creating each virtual machine.
  • the orchestration control unit 570 substitutes the number of currently available nodes for the variable PN1 (S145), and proceeds to the process of S146.
  • PNS indicates the number of nodes added to the current node list.
  • IVA1 indicates the INPUT local access value of the data processing information selected in the current loop processing. That is, the INPUT local access value related to the processing of the sequence number of the main stage in the multi-stage processing is shown.
  • the variable PN1 is a smaller one of “PNS / ILA1-PNS” and “maximum number of nodes ⁇ PNS”.
  • the value calculated by the expression “PNS / ILA1-PNS” means that the current loop is determined in consideration of the INPUT local access value of the data processing information selected in the current loop processing of this processing. Indicates the number of nodes that can be selected for processing to be newly added to the node list. For example, when the value of ILA1 is “100%”, the value of Equation 1 is “0”.
  • the value calculated by the expression “maximum number of nodes ⁇ PNS” means the maximum value of the nodes to which no physical resource is allocated among the nodes belonging to the computer system.
  • Formula 1 sets the maximum value to the variable PN1 when the value calculated by the formula “PNS / ILA1-PNS” exceeds the maximum value (that is, “maximum number of nodes ⁇ PNS”). As a result, a value that is impossible on the system is prevented from being set in the variable PN1.
  • the orchestration control unit 570 substitutes each value of the requested resource information included in the selected data processing information into the first variable (S146).
  • variables V, C, M, DT, DS, and N included in the first variable are assigned to variables V, C, M, DT, DS, and N included in the first variable, respectively.
  • the number of virtual machines in the requested resource information is substituted for variable V.
  • the number of CPUs of the requested resource information is substituted for variable C.
  • the memory capacity of the requested resource information is substituted for variable M.
  • the disk type of the requested resource information is assigned to the variable DT.
  • the disk capacity of the requested resource information is substituted for the variable DS.
  • the network bandwidth of the requested resource information is substituted for variable N.
  • the orchestration control unit 570 determines whether or not there is a node that has not been selected and can be used in S148 described later in the node list (S147).
  • An available node is, for example, a node that still has available physical resources. If the process is for the sequence number “1”, the node list has been initialized, and it is determined No in S147.
  • the orchestration control unit 570 selects one node from the list, Each value indicating the physical resource available in the selected node is substituted into the second variable (S148). In this step, the node that set the preceding virtual machine is preferentially selected as another virtual machine setting node. Each value indicating an available physical resource may be calculated based on physical resource information of the selected node.
  • variables C1, M1, DT1, DS1, and M1 included in the second variable are assigned to variables C1, M1, DT1, DS1, and M1 included in the second variable, respectively.
  • the number of CPUs available at the selected node is substituted into the variable C1.
  • the memory capacity available at the selected node is substituted into the variable M1.
  • the variable DT1 is assigned a disk type that can be used in the selected node.
  • the disk capacity that can be used in the selected node is substituted into the variable DS1.
  • a network bandwidth that can be used in the selected node is assigned to the variable N1.
  • the orchestration control unit 570 determines whether the requested resource indicated by the first variable can be secured from the available physical resources indicated by the second variable (S149). That is, it can be said that the orchestration control unit 570 determines whether or not a virtual machine for executing the process related to the data processing information selected in S142 can be arranged in the node selected in S148.
  • the orchestration control unit 570 satisfies the conditions “C ⁇ C1”, “M ⁇ M1”, “DT and DT1 match”, “DS ⁇ DS1”, and “N ⁇ N1”. If the node can be used for virtual machine setting, the determination in S149 is “Yes”, and the process proceeds to S150.
  • the orchestration control unit 570 subtracts “1” from the number of virtual machines in the first variable.
  • the orchestration control unit 570 associates the node list with the node ID of the selected node, the sequence number selected in S142, and the value of the physical resource reserved in the node (for example, the first variable). Append and add (S150). That is, since the orchestration control unit 570 has decided to create a virtual machine by actually allocating a physical resource in the node, the orchestration control unit 570 is associated with information on the physical resource to be actually allocated and processing using the virtual machine.
  • the sequence number (that is, information indicating what level the process is performed when performing multi-stage processing) is added to the node list in association with the identification information of the node.
  • the orchestration control unit 570 may add information indicating that a copy of the target data set is redundantly stored in the node and another node to the node list.
  • the orchestration control unit 570 subtracts “1” from each value of the second variable. For example, the orchestration control unit 570 subtracts each value of the first variable from each value of the second variable as follows. The variable C is subtracted from the variable C1. The variable M is subtracted from the variable M1. The variable DS is subtracted from the variable DS1. The variable N is subtracted from the variable N1.
  • the orchestration control unit 570 determines whether or not the number of virtual machines in the first variable is “0” (S151). That is, the orchestration control unit 570 determines whether or not physical resource reservation has been completed for all virtual machines requested by the data processing information selected in S142.
  • the orchestration control unit 570 If the number of virtual machines in the first variable is not “0” (S151: No), the orchestration control unit 570 returns to the process of S149. When the number of virtual machines in the first variable is “0” (S151: Yes), the orchestration control unit 570 returns to the process of S141 and selects another data processing information.
  • the orchestration control unit 570 determines whether or not the variable PN1 is greater than “0” (S156). That is, it is determined whether or not there is a node in which a virtual machine can be placed. If such a node does not exist (S156: No), it is determined that it is impossible to allocate a physical resource for a virtual machine that satisfies a predetermined condition in this process, and this process ends as an error. If such a node exists (S156: Yes), the process proceeds to the next step S152.
  • the orchestration control unit 570 determines whether there is an unselected node (not limited to the node list) (S152). That is, the orchestration control unit 570 determines whether or not a node in which a virtual machine for executing a process related to the selected data processing information can be arranged exists in the computer system.
  • the orchestration control unit 570 subtracts “1” from the variable PN1 (S153). That is, the orchestration control unit 570 reduces the number of available nodes.
  • the orchestration control unit 570 selects one node from among them, and substitutes each value indicating a physical resource available in the selected node into the second variable (S154). This process is the same as the process of S148. Then, the orchestration control unit 570 proceeds to the process of S149.
  • the orchestration control unit 570 determines whether the OUTPUT local access value of the selected data processing information is 100% (S155). That is, the orchestration control unit 570 determines whether or not the output destination of the process related to the selected data processing information is limited to the local node.
  • the orchestration control unit 570 terminates the process, assuming that an error has occurred. This is because the determination in S152 is “No” and the condition that the OUTPUT local access value is 100% cannot be satisfied.
  • the orchestration control unit 570 proceeds to the process of S154 described above.
  • the orchestration control unit 570 determines whether the OUTPUT local access value is 100% (that is, even if the determination in S155 is “Yes”) or S154. You may proceed to the process.
  • a node list is generated for data processing information belonging to the registration processing group.
  • the orchestration control unit 570 can determine whether or not physical resources can be secured in the processing shown in FIG.
  • FIG. 14 is a flowchart showing an example of top-down processing. This process corresponds to S123 in FIG.
  • S162 corresponding to S142
  • S163 corresponding to S143
  • S165 corresponding to S145
  • the orchestration control unit 570 selects data processing information having the largest sequence number among unprocessed (S162). That is, processing is executed in order from the subsequent data processing information in the multi-stage processing.
  • the orchestration control unit 570 determines whether or not the sequence number of the selected data processing information is “maximum value” (S163).
  • the orchestration control unit 570 substitutes the number of nodes available at the current stage for the variable PN1 (S165), and proceeds to the processing of S166.
  • this variable PN1 may be calculated by a method different from S145 of FIG. 13 as follows.
  • variable ILA2 indicates the INPUT local access value of the data processing information selected in the previous loop processing. That is, the INPUT local access value related to the processing of the sequence number of the preceding stage in the multistage processing is shown. As a result, the number of nodes that can be used for the processing of the main stage can be calculated based on the INPUT local access value of the processing of the previous stage.
  • Other variables are as described in FIG.
  • a node list is generated for data processing information belonging to the registration processing group.
  • the orchestration control unit 570 can determine whether or not physical resources can be secured in the processing shown in FIG.
  • Whether the physical resource can be secured can be determined by either bottom-up processing or top-down processing, but depending on the selected processing, the node on which the virtual machine related to each data processing information is arranged, and its virtual The physical resources provided to the machine may be different.
  • a virtual machine is generated (arranged) in the node, and software related to analysis processing is installed in the virtual machine.
  • FIG. 15 is a flowchart illustrating an example of the reprovisioning process. This process corresponds to the process of S106 in FIG.
  • the resource allocation control unit 540 When the resource allocation control unit 540 receives the request for the reprovisioning process, it executes the following process (S301).
  • the resource allocation control unit 540 determines whether or not the processing of S302 to S306 has been completed for all requested nodes (S302). When all are completed (S302: Yes), the resource allocation control unit 540 ends the process.
  • the resource allocation control unit 540 selects one of the unprocessed nodes (S303).
  • the resource allocation control unit 540 determines whether a virtual machine to be moved or deleted exists in the selected node (S304).
  • the resource allocation control unit 540 returns to S302 and performs the same processing for the remaining unprocessed nodes.
  • the resource allocation control unit 540 identifies a virtual machine to be moved or deleted in the selected node (S305).
  • the resource allocation control unit 540 moves or deletes the specified virtual machine (S306).
  • the resource allocation control unit 540 may request this processing from the hypervisor control unit 530.
  • the hypervisor control unit 530 moves or deletes the specified virtual machine from the node selected in S303. That is, the hypervisor control unit 530 releases the physical resources allocated to the specified virtual machine in the node selected in S303.
  • the resource allocation control unit 540 returns to the process of S302 and performs the same process for the remaining unprocessed nodes.
  • FIG. 16 is a flowchart showing an example of data storage processing.
  • This data block may be divided from a data set transmitted as a storage request from the client 50.
  • the distributed file system control unit 520 determines whether or not a data set ID corresponding to the data block to be stored exists in the data set information table 1000 (S503).
  • the distributed file system control unit 520 performs a normal data block storage process (S504), and ends the process. That is, a new data block is stored.
  • the distributed file system control unit 520 selects a storage destination node of the data block to be stored (S505). For example, the distributed file system control unit 520 selects a condition (for example, a node stored in the primary data storage node 1040) from the nodes set in the data set information including the data set ID conformed in S503 (for example, the node stored in the primary data storage node 1040). And nodes that meet the conditions of the primary data storage method 1050).
  • a condition for example, a node stored in the primary data storage node 1040
  • the distributed file system control unit 520 determines whether or not the storage target data block has been stored in the node 111 for the storage number 1550 included in the adapted data set information (S506). That is, the distributed file system control unit 520 determines whether or not the number of data blocks to be stored and the number of replica data thereof match the stored number 1550.
  • the distributed file system control unit 520 stores the data block to be stored in the storage destination node (S507).
  • the distributed file system control unit 520 may request the file system control unit 510 of the storage destination node to store the data block. After the storage process is completed, the distributed file system control unit 520 returns to the process of S506.
  • the distributed file system control unit 520 updates the data block storage information table 1500 (S508), and ends the processing. For example, the distributed file system control unit 520 registers the storage location of the data block in the storage location 1560.
  • the storage target data block and replica data are distributed and stored in each node.
  • each software and data related to the multistage analysis process can be appropriately arranged in each node. Thereby, the load with respect to the network band between nodes can be reduced. In addition, it is possible to reduce overhead generated during data access in the execution of processing.
  • the orchestration control unit 570 may be executed on any node.
  • the node that executes the orchestration control unit 570 may be determined according to a predetermined condition. Only some of the plurality of nodes may have the orchestration control unit 570.
  • the orchestration control unit 570 may be included in a management machine connected to at least one of a plurality of nodes. In this case, any node may not have the orchestration control unit 570.
  • the management machine is connected to at least one of the plurality of nodes via a communication network to which the plurality of nodes are connected or another communication network.
  • distributed system 110 network 111: node 121: virtual machine 200: distributed file system 700: storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 複数の物理マシンから構成される分散システムにおいて、第1処理によって出力された出力ファイルが第2処理に入力される多段処理を実行するとき、第1処理と第2処理の関係性に基づいて、第1処理を実行する第1仮想マシンの配置先の物理マシンと、出力ファイルを構成する各データブロックの格納先の物理マシンと、第2処理を実行する第2仮想マシンの配置先の物理マシンと、を決定する。

Description

分散システム、計算機、及び、仮想マシンの配置方法
 本発明は、概して、分散システム、計算機、及び、仮想マシンの配置方法の技術に関する。
 複数の物理マシンをクラスタリングした分散システムに、Hadoopを利用した分散ファイルシステムと、複数の仮想マシンとを構築し、大規模データを分散処理する技術が知られている。特許文献1には、HDFS(Hadoop Distributed File System)におけるレプリカデータが1つの物理マシンにのみ格納されたりしないようにする技術、及び、ローカルの物理マシンに格納されているレプリカデータが優先的にリードされるようにする技術が開示されている。
US2014/0059310
 HDFSにおける1つのファイルは、1又は2以上のデータブロックに分割される。複数のファイルを構成する複数のデータブロックが、複数の物理マシンに分散されて格納される。1つのファイルを構成する2以上のデータブロックが、2以上の物理マシンに分散することもある。したがって、物理マシン上で稼働する仮想マシンは、所定の処理を実行するとき、HDFSを通じてリモートの物理マシンからデータブロック(レプリカデータも含む)を収集し、その処理に使用される入力ファイルを構成する場合がある。
 データブロックは、通信ネットワーク(以下「ネットワーク」という)を通じて収集されるので、このデータブロックからファイルを構成する処理は、ネットワーク帯域に対する負荷を高める。さらに、ネットワークを通じてリモートの物理マシンからデータブロックを取得することは、ローカルの物理マシンからデータブロックを取得することに比べて、応答時間が長くなってしまう。
 そこで、本発明の目的は、ネットワーク帯域に対する負荷を低減する分散システム、物理マシン及び仮想マシンの配置方法を提供することにある。また、本発明の別の目的は、ローカルの物理マシンのデータブロックがアクセスされる可能性を高める分散システム、物理マシン及び仮想マシンの配置方法を提供することにある。
 本発明の一実施形態に係る分散システムは、複数のファイルを構成する複数のデータブロックを分散して記憶するようになっており、通信ネットワークに接続され複数の仮想マシンを実行する複数の物理マシンと、複数の物理マシンのうちの少なくとも1つに接続された管理マシンとを有する。
 そして、複数の物理マシン及び管理マシンのうちの少なくとも1つである対象マシンが、第1処理とその第1処理によって出力されるファイルである出力ファイルを入力とする第2処理とを含んだ多段処理における第1処理と第2処理との関係性に基づいて、第1処理を実行する第1仮想マシンの配置先の物理マシンと、出力ファイルを構成する1以上のデータブロックの格納先とする1以上の物理マシンと、第2処理を実行する第2仮想マシンの配置先の物理マシンと、を決定する。
 本発明によれば、分散システムにおいて、ネットワーク帯域に対する負荷を低減することができる。また、本発明によれば、分散システムにおいて、ローカルの物理マシンのデータブロックがアクセスされる可能性を高めることができる。
本実施形態に係る分散システムの動作概要を示す。 分散システムの構成例を示す。 ノードの構成例を示す。 データセット情報テーブルの構成例を示す。 データ処理情報テーブルの構成例を示す。 物理リソース情報テーブルの構成例を示す。 仮想マシン情報テーブルの構成例を示す。 データブロック格納情報テーブルの構成例を示す。 データ処理設定画面の構成例を示す。 ジョブ設定画面の構成例を示す。 データ処理情報の登録に関する処理の例を示すフローチャートである。 物理リソースの確保の判定に関する処理の例を示すフローチャートである。 ボトムアップ処理の例を示すフローチャートである。 トップダウン処理の例を示すフローチャートである。 リプロビジョニング処理の例を示すフローチャートである。 データ格納処理の例を示すフローチャートである。
 以下、実施形態を説明する。以下の説明では、「xxxテーブル」又は「xxxリスト」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」又は「xxxリスト」を「xxx情報」と呼ぶことができる。
 また、以下の説明では、「xxx部」を主語として処理を説明する場合があるが、「xxx部」は、コンピュータプログラム(「プログラム」という)の一種であってもよい。プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及びネットワークインターフェイスデバイスの内の少なくとも1つを用いながら行うため、処理の主語が、プロセッサ、そのプロセッサを有する装置とされてもよい。プロセッサが行う処理の一部又は全部が、ハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)など)で行われてもよい。プログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。また、プロセッサ及びメモリをまとめてコントローラと呼んでもよい。
 また、以下の説明では、同種の要素を区別して説明する場合には、「ノード111a」、「ノード111b」のように、参照符号を使用し、同種の要素を区別しないで説明する場合には、「ノード111」のように参照符号の内の共通番号のみを使用することがある。
 図1は、本実施形態に係る分散システム1の動作概要を示す。
 ノード111a、111b、111c、111dは、ネットワーク110を通じて、相互にデータを送受信できる。ノード111a、111b、111c、111d及びネットワーク110によって構成されるシステムを、分散システム1という。ノード111は、電子計算機の一種である物理マシンである。なお、以下の説明において、処理の主語が「分散システム1」の場合は、1つのノード111が、又は、2以上のノード111が協調して、その処理を行うとしてもよい。
 電子計算機の一種であるクライアント50は、分散システム1に対して、分析対象であるデータの分析処理を依頼する。分散システム1は、分析ソフトウェア910a、910bを実行して分析処理を行う。そして、分散システム1は、BI(Business Intelligence)ソフトウェア930を実行して、分析ソフトウェア910a、910bの分析結果を参照及び利用する。すなわち、第1段階(前段)の処理である分析ソフトウェア910a、910bの出力データ(分析結果)が、第2段階(後段)の処理であるBIソフトウェア930の入力データとなる。このように、分析対象のデータを複数の段階に分けて処理することを、多段処理という。
 多段処理は、多段になった複数の処理で構成される。多段処理では、第1処理(前段処理)とその第1処理によって出力されたファイルを入力とする第2処理(後段処理)とで構成された処理セットを少なくとも1つ有する。多段処理において、始点処理(始点としての処理)が、第1処理であり、終点処理(終点としての処理)が、第2処理であり、始点処理と終点処理の間にある処理が、第1処理でもあり第2処理でもある。多段処理は、カスケード状(ツリー状)の複数の処理でもよいし、再帰的な処理(或る処理の結果が所定の条件を満たした場合に終了する処理)でもよい。
 次に、図1について説明する。分析ソフトウェア910aは、ファイルf1(データブロックb11及びb12)と、ファイルf3(データブロックb31及びb32)とを入力データとし、その分析結果としてファイルf5(データブロックb51)を出力する機能を有する。
 分析ソフトウェア910bは、ファイルf2(データブロックb21及びb22)と、ファイルf4(データブロックb41及びb42)とを入力データとし、その分析結果としてファイルf6(データブロックb61)を出力する機能を有する。
 BIソフトウェア930は、分析ソフトウェア910aの分析結果であるf5(データブロックb51)と、分析ソフトウェア910bの分析結果であるファイルf6(データブロックb61)とを入力データとし、その分析結果としてファイルf7(データブロックb71)を出力する機能を有する。
 クライアント50は、分散システム1(の或るノード111)に対して、ファイルf1、f2、f3、f4に含まれる情報の分析処理を依頼する。
 分散システム1(の或るノード111。以下同じ)は、クライアント50から依頼されたファイルf1~f4の各々を、1又は2以上のデータブロックに分割する。すなわち、分散システムは、ファイルf1をデータブロックb11及びb12に、ファイルf2をデータブロックb21及びb22に、ファイルf3をデータブロックb31及びb32に、ファイルf4をデータブロックb41及びb42に分割する。
 ここで、これらの分割したデータブロックb11、b12、b21、…のそれぞれを何れのノード111(の記憶装置700。以下同じ)に格納するか、及び、これらのソフトウェア910a、01b、930のそれぞれを何れのノード111で実行するか、が重要である。その理由は次の通りである。
 ノードは、自ノードで実行されるソフトウェアの入力ファイルを、複数のデータブロックから再構成する必要がある。このとき、他のノード(つまり、リモートのノード)に格納されているデータブロックについては、自ノードは、ネットワーク110を通じて取得する必要がある。しかし、上述の通り、ネットワーク110を通じてリモートのノードからデータブロックを取得することは、自ノード(つまり、ローカルのノード)からデータブロックを取得することと比較して、時間を要する上、ネットワーク帯域に対する負荷を高める。
 そこで、分散システム1は、ソフトウェアの入力ファイルを構成する複数のデータブロックと、そのソフトウェアとが、できるだけ1つのノードに存在するようにする。すなわち、分散システム1は、入力ファイルを構成する複数のデータブロックを、各ノードにランダムに格納するのではなく、できるだけ多く、1つのノードに格納する。また、分散システム1は、その多くのデータブロックが格納されたノードで、その入力ファイルに係るソフトウェアが実行されるようにする。例えば、ハイパーバイザ202上に構築された仮想マシン121においてそのソフトウェアが実行される構成の場合、分散システム1は、その仮想マシン121を、その多くのデータブロックが格納されたノード111に配置する。
 ここで、ソフトウェアに入力される複数のデータブロックの内、そのソフトウェアが実行されているローカルのノードに格納されているデータブロックの割合に関する値を、「ローカルアクセス値」という。
 分析ソフトウェア910aのローカルアクセス値を50%以上とする、という条件が設定されている場合、分散システム1は、クライアント50から入力されたファイルf1(データブロックb11及びb12)、f3(データブロックb31及びb32)を、分析ソフトウェア910aのローカルアクセス値が50%以上となるように、各ノードに格納してもよい。分散システム1は、データブロックb11及びb12を、分析ソフトウェア910aが実行されるノード111gに格納してもよい。
 BIソフトウェア930のローカルアクセス値を90%以上とする、という条件が設定されている場合、分散システム1は、分析ソフトウェア910a及び910bから出力されたファイルf5(データブロックb51)及びf6(データブロックb61)を、BIソフトウェア930のローカルアクセス値が90%以上となるように、各ノードに格納してもよい。
 分散システム1は、BIソフトウェア930に入力されるデータブロックb51及びb61の90%以上が1つのノードに格納されるように、分散ファイルシステム200を制御してもよい。そして、分散システム1は、そのデータブロックb51及びb61の90%以上が格納されるノードに、BIソフトウェア930(仮想マシン121c)を配置してもよい。
 分散システム1は、BIソフトウェア930(仮想マシン121c)の配置先を先に決定してもよい。そして、分散システム1は、BIソフトウェア930に入力されるデータブロックb51及びb61の90%以上が、BIソフトウェア930の実行されるローカルのノードに格納されるように、分散ファイルシステム200を制御してもよい。
 分散システム1は、多段処理を構成する各処理の入出力に係るデータセット(ファイル群)に関する設定情報を含む「データセット情報」を管理してよい。分散システム1は、1つのデータ処理情報に1つのデータセット情報を対応付けてもよい。データセット情報は、データセットの格納に関する条件(例えば、ローカルアクセス値など)を含んでよい。
 分散システム1は、多段処理を構成する各処理の順番及びその処理内容、並びに各処理の入出力データに関する設定情報を含む「データ処理情報」を管理してよい。分散システム1は、1つのデータ処理情報に、1つのソフトウェアを対応付けてもよい。データ処理情報は、多段処理における当該処理の順番と、当該処理を実行するソフトウェアと、そのソフトウェアの実行に必要とされる仮想マシンのスペックと、当該処理の入出力に係るデータセット情報とを含んでよい。
 分散システム1は、データ処理情報に含まれるソフトウェアを、そのデータ処理情報に対応するデータセット情報に基づくノード群で実行してよい。分散システム1は、ローカルアクセス値がより高くなるように、データブロックを格納するノードを選択してよい。
 分散システム1は、1つのファイルから分割された複数のデータブロックが、できるだけ1つのノードに格納されるようにしてもよい。例えば、図1において、分散システム1は、ファイルf1から分割されたデータブロックb11及びb12をノード111a(記憶装置700a)に、ファイルf2から分割されたデータブロックb21及びb22をノード111c(記憶装置700c)に格納している。
 分散システム1は、第1段階の処理で出力された複数のデータブロックが、できるだけ1つのノードに格納されるようにしてもよい。例えば、図1において、分散システム1は、分析ソフトウェア910a及び910bから出力されたデータブロックb51及びb61を、1つのノード111a(記憶装置700a)に格納している。
 本実施形態に係る分散システム1は、事前に設定されたデータ処理情報及びデータセット情報に基づいて、分析対象の複数のデータブロックを適切なノードに格納し、分析処理に関するソフトウェアを実行する仮想マシンを、適切なノードにプロビジョニングすることができる。
 図2は、分散システムの変形例を示す。
 分散システムは、図1の構成に限らず、ネットワークが多段に構成されてもよい。例えば、図2に示すように、ノード111e及び111fがネットワーク110aに接続され、ノード111g及び111hがネットワーク110bに接続される。同じネットワーク110a(又は110b)に接続されているノード111e及び110f(又は、110g及び110h)を、ノードグループ11a(又は11b)と呼ぶ。ネットワーク110a及び110bは、上流のネットワーク110cに接続される。ノード110e~110hは、ネットワーク110a、110b及び110cを通じて相互にデータを送受信できる。
 分散システムには、当該分散システムを管理するための管理マシン51が含まれてもよい。管理マシン51は、一以上の計算機で構成されてよい。具体的には、例えば、管理計算機が情報を表示する場合(具体的には、管理計算機が自分の表示デバイスに情報を表示する、或いは、管理計算機が表示用情報を遠隔の表示用計算機に送信する場合)、管理計算機が管理マシン51である。また、例えば、複数の計算機で管理計算機と同等の機能が実現されている場合は、当該複数の計算機(表示を表示用計算機が行う場合は表示用計算機を含んでよい)が、管理マシン51である。
 分散システムには、当該分散システムを利用するクライアント50が含まれてもよい。管理マシン51又はクライアント50は、分散システムにおける或るノード111又は或る仮想マシン121であってもよい。
 図2では、複数のノードが1つのノードグループを構成しているが、ノードグループはこのような構成に限られない。例えば、複数のノードグループが、さらに1つのノードグループを構成してもよい。このように、ノードグループを多段に構成することにより、管理者は、分散システムをノードグループの単位で柔軟に管理することができる。
 図3は、ノード111の構成例を示す。なお、図3に示す構成は一例であり、例えば、ある構成要素(例えばxxx部又はxxxテーブル)は複数の構成要素に分割されていてもよく、複数の構成要素が1つの構成要素に統合されていてもよい。
 ノード111は、CPU400と、メモリ500と、ネットワークI/F600と、記憶装置700とを備え、これらの要素は、双方向にデータ送受信が可能なバス800で接続されている。バス800の一例としては、PCIe(PCI express)などがある。記憶装置700は、ノード111の内部又は外部の何れに備えられてもよい。
 記憶装置700には、データブロックが格納される。記憶装置700は、所定のコマンドに基づき、データブロックのライト、リード、コピー、移動及び削除などを行う。記憶装置700の一例としては、HDD(Hard Disk Drive)、SSD(Solid State Drive)及びフラッシュメモリなどがある。
 ネットワークI/F(Interface)600は、ノード111をネットワーク110に接続させるためのI/Fである。ネットワークI/F600の一例としては、ファイバチャネルアダプタ及びNIC(Network Interface Card)などがある。
 CPU400は、メモリ500に記憶されているコンピュータプログラムを実行し、本実施形態で述べる様々な機能を実現する。
 メモリ500は、CPU400、ネットワークI/F600及び記憶装置700などからアクセスされるコンピュータプログラム及びデータなどを記憶する。メモリ500の一例としては、DRAM(Dynamite Random Access Memory)、MRAM(Magnetic Random Access Memory)及びFeRAM(Ferroelectric Random Access Memory)などがある。
 メモリ500には、コンピュータプログラムの一種として、ファイルシステム制御部510と、分散ファイルシステム制御部520と、ハイパーバイザ制御部530と、リソース割当制御部540と、ジョブ制御部550と、データセット制御部560と、オーケストレーション制御部570とが格納されている。さらに、メモリ500には、情報の一種として、データセット情報テーブル1000と、データ処理情報テーブル1200と、物理リソース情報テーブル1300と、仮想マシン情報テーブル1400と、データブロック格納情報テーブル1500と、ジョブスケジュール情報テーブル1600とが格納される。これらテーブルの詳細については後述する。
 ファイルシステム制御部510は、ローカルのノード111の記憶装置700に関するファイルシステムを制御する。すなわち、ファイルシステム制御部510は、ファイルシステムを通じて、記憶装置700に格納されているデータへアクセスできるようにする。ファイルシステムの一例としては、FAT、NTFS及びext3などがある。
 分散ファイルシステム制御部520は、分散システム1に関する分散ファイルシステム200(図1参照)を制御する。すなわち、分散ファイルシステム制御部520は、分散ファイルシステム200を通じて、ローカル又はリモートを問わず、分散システム1を構成する何れかのノード111の記憶装置700に格納されているデータへ、シームレスにアクセスできるようにする。分散ファイルシステム制御部520は、リモートのノードのファイルシステム制御部510と連携して、分散ファイルシステム200を実現する。これにより、仮想マシン121及びソフトウェアなどは、分散ファイルシステム200を通じて、アクセス対象のデータが何れのノード111に格納されているかを意識することなく、そのデータにアクセスすることができる。また、分散システム1に分散ファイルシステム200を適用することにより、分散システム1は、ノードの追加及び削除を柔軟に行うことができる。分散ファイルシステム200の一例としては、HDFSなどがある。
 分散ファイルシステム制御部520は、必要に応じて、データブロックを複製したレプリカデータを生成し、他のノードに格納してもよい。データブロックを冗長化し、分散システム1の可用性を高めるためである。
 ハイパーバイザ制御部530は、ノード111の有するハイパーバイザ202(図1参照)を制御する。ハイパーバイザ202は、仮想マシン121の実行環境を提供する。また、ハイパーバイザ202は、ノード111(物理マシン)の有する物理リソースと、仮想マシン121に割り当てられる仮想リソースとの間を、適宜調整する。ハイパーバイザ202の一例としては、KVM(Kernel-based Virtual Machine)などがある。
 ハイパーバイザ制御部530は、ハイパーバイザ202の制御を通じて、ノード111における仮想マシン121を制御する。ハイパーバイザ制御部530は、仮想マシン121の起動、停止、再起動及びノード間の移動などを行ってもよい。
 リソース割当制御部540は、ノード11の有する物理リソースを仮想マシン121に割り当てる。例えば、ハイパーバイザ制御部530は、ノード111の有する物理リソース(演算リソース、メモリリソース及びネットワークリソースなど)を、どの仮想マシン121にどのくらい割り当てるか(確保するか)、などを制御する。例えば、リソース割当制御部540は、仮想マシン121に割り当てられる物理リソースを、予め確保する。或る仮想マシンに割り当てられた物理リソースが、他の仮想マシンから勝手に横取りされないようにするためである。
 ジョブ制御部550は、ノード111で実行されるジョブを制御する。ジョブ制御部550は、スケジュールに基づいてジョブを制御してよい。ジョブ内容の一例としては、分散ファイルシステム200に係るデータのバックアップ及びマイグレーション、ハイパーバイザ202に係る仮想マシンの作成、再起動、削除及び移動、仮想マシンで実行される各種ソフトウェアの開始及び停止、定期的に実行されるバッチ型処理の開始及び停止、適宜実行される対話型処理の開始及び停止などがある。
 データセット制御部560は、データセット情報テーブル1000を制御する。データセット情報は、複数のデータブロックを1つのデータセットとしてグループ化するための設定情報(定義情報)を有する。データセット情報は、データセットの格納場所及び格納方法などの設定情報(定義情報)を有してもよい。「データセット」と「処理」を対応付けることにより、そのデータセットに含まれる複数のデータブロックをまとめて1つのノードに格納し易くなる。複数のデータブロックをまとめて1つのノードに格納することにより、ファイルの再構成の際に発生し得る、リモートのノード111からデータブロックを取得する処理が低減され得る。つまり、ノード間のネットワーク帯域に対する負荷が低減され得る。
 オーケストレーション制御部570は、分散システム1で実行される多段処理及び分散処理を制御する。
 オーケストレーション制御部570は、ノード111で実行される処理が、できるだけ所定の条件を満たす形でデータブロックにアクセスできるようにする。例えば、オーケストレーション制御部570は、ノード111で実行される処理が、ローカルアクセス値以上の割合で、ローカルのデータブロックにアクセスできるように、その処理を実行する仮想マシン121及び/又はその処理で使用されるデータブロックの配置を制御する。オーケストレーション制御部570は、各テーブル1000、1200、1300、1400、1500、1600の情報を用いて、各制御部510、520、530、540、550、560と連携しながら、この制御を行ってよい。
 1又は2以上の第1処理によって出力される1又は2以上のファイル(「出力ファイル」という)が、1又は2以上の第2処理の入力に用いられるような多段処理において、オーケストレーション制御部570は、以下の機能を有してよい。
 オーケストレーション制御部570は、第1処理と第2処理との関係性に基づいて、第1処理を実行する第1仮想マシンの配置先のノードと、出力ファイルを構成する1以上のデータブロックの格納先とする1以上のノード111(の記憶装置700。以下同じ)と、第2処理を実行する第2仮想マシンの配置先のノード111とを、決定してよい。
 上記の第1処理と第2処理の関係性とは、第2処理が要求するローカルアクセス値を満たすことであってよい。ここで、ローカルアクセス値とは、第2処理に入力される出力ファイルを構成する複数のデータブロックの内、第2仮想マシンの配置先のノード111に格納されるデータブロックの割合に関する値であってよい。これにより、第2処理は、ローカルアクセス値以上の割合で、ローカルのノード111のデータブロックにアクセスできる。つまり、ノード間のネットワーク帯域に対する負荷を低減することができると共に、第2処理の実行速度を向上させることができる。ローカルアクセス値の詳細については後述する。
 オーケストレーション制御部570は、第2処理が要求するローカルアクセス値を満たすように、第1仮想マシン及び第2仮想マシンの配置先、並びに、第1処理の出力ファイルを構成する各データブロックの格納先を決定できない場合、出力ファイルを構成する一部のデータブロックのレプリカであるレプリカデータを、第2仮想マシンの配置先のノードに格納してよい。このとき、レプリカデータを所定数以上作成しなければ、第2処理が要求するローカルアクセス値を満たすことができない場合、オーケストレーション制御部570は、その旨のエラーを出力してもよい。必要以上にレプリカデータが作成されると、記憶装置700の容量が大量に消費されてしまうからである。
 オーケストレーション制御部570は、第2仮想マシン(又は、第2仮想マシンで実行される処理)が要求するリソースを提供可能なノード111の中から、その第2仮想マシンを配置するノード111を決定してよい。
 オーケストレーション制御部570は、1つのファイルを構成する複数のデータブロックの内の所定数以上のデータブロックを、1つのノード111に格納してもよい。これにより、複数のデータブロックから1つのファイルを再構成するにあたり、リモートのノード111からデータブロックを取得する処理が低減する。よって、ノード間のネットワーク帯域に対する負荷が低減される。
 オーケストレーション制御部570は、第2処理が要求するローカルアクセス値が、第1処理が要求するローカルアクセス値よりも大きくなるように、自動的に設定してもよい。なぜなら、大規模データを幾つかの段階に分けて処理を行う多段処理の場合、後段の処理ほど、データに対するアクセス頻度が高くなることが多いためである。
 なお、第1処理はバッチ型の処理であり、第2処理は対話型の処理であってもよい。なぜなら、多段処理の一例として、第1処理として、日次バッチ的に原データのフィルタリング処理及びラベリング処理、及び、毎時バッチ的に第1処理の結果の集計及び集約処理などを行い、第2処理として、第1処理の結果を用いて対話的に日々の分析業務を行うような処理がある。このように、前段の処理で大規模データに対して低頻度にバッチ型の処理を行い、後段の処理で高頻度に対話型の処理を行う場合、後段の対話型の処理は、前段のバッチ型の処理と比べて、データに対するアクセス頻度が高いからである。
 図4は、データセット情報テーブル1000の構成例を示す。
 データセット情報テーブル1000は、データセット情報1001をレコードとして管理する。データセット情報1001は、多段処理を構成する各処理の入出力に係るデータセット(ファイル群)に関する設定情報である。
 データセット情報1001は、フィールド値として、データセットID1010と、データソースID1020と、ルートディレクトリ1030と、プライマリデータ格納ノード1040と、プライマリデータ格納方法1050と、セカンダリデータ格納ノード1060と、セカンダリデータ格納方法1070とを含んでよい。
 データセットID1010は、分散システム1において、データセットを一意に識別するための情報である。データセットID1010は、数字若しくは文字列、又はこれらの組み合わせであってよい。一意性を保証するために、分散システム1の全体で同期をとってから、新たなデータセットに、新たなデータセットID1010を付与してもよい。又は、重複しない複数のIDを各ノードに配布しておき、各ノードは、その配布された複数のIDの内の未使用の1つを、新たなデータセットのデータセットID1010に付与してもよい。
 データソースID1020は、データセットID1010のデータセットの提供元(データソース)を識別するための情報である。データソースID1020は、データセットの提供元のマシンの識別情報、又は、図5に示すデータ処理情報の識別情報などであってよい。
 マシンの識別情報の一例としては、IPアドレス(10.20.1.1)又はマシン名(Client-PC)などがある。データ処理情報の識別情報の一例としては、データ処理情報の処理グループID1210とシーケンス番号1230の組合せ(PG1-1)などがある。
 ルートディレクトリ1030は、分散ファイルシステム200において、データセットID1010のデータセットが格納されるルートディレクトリを示す。ルートディレクトリ1030は、フルパス名又はURLなどで表現されてよい。
 ルートディレクトリ1030は、分散ファイルシステム200上のディレクトリに限らず、任意のノードにおけるローカルファイルシステム上のディレクトリであってもよい。例えば、ルートディレクトリ1030は、ノードIDと、そのノードIDのノードにおけるファイルシステム上のディレクトリのフルパス名又はURLと、の組み合わせであってもよい。
 プライマリデータ格納ノード1040は、データセットID1010のデータセットの内のプライマリデータが格納されているノードを表す。プライマリデータとは、分析処理に関するソフトウェアが優先的にアクセスするデータである。プライマリデータ格納ノード1040のノードにおいて実行されるソフトウェアは、当該ノードに格納されているデータ(つまり、プライマリデータ)に優先的にアクセスする。したがって、データセットID101のデータセットを分析するソフトウェアが実行される仮想マシン121は、プライマリデータ格納ノード1040のノードに配置又は構築されることが望ましい。
 プライマリデータ格納方法1050は、プライマリデータ格納ノード1040のノードに、データを格納する方法を示す。プライマリデータ格納方法1050には、プライマリデータ格納ノード1040のノードで実行されるソフトウェアに対するローカルアクセス値(例えば「ローカルアクセス値≧50%」など)が設定されてよい。
 1つのファイルから分割された複数のデータブロックを、できるだけ1つのノードに格納したい場合(つまり、ノード間のネットワーク帯域に対する負荷を低減したい場合)、プライマリデータ格納ノード1040には、「集約格納」が設定されてよい。
 1つのファイルから分割された複数のデータブロックを、できるだけ異なるノードに格納したい場合(つまり、複数のノードにストライピング配置したい場合)、プライマリデータ格納ノード1040には、「拡散格納」が設定されてよい。
 複数のデータブロックがどのノードに格納されてもよい場合、プライマリデータ格納ノード1040には、「分散格納」が設定されてよい。
 セカンダリデータ格納ノード1060は、データセットID1010のデータセットの内のセカンダリデータが格納されているノードを表す。セカンダリデータとは、データセットを構成するデータ群の中から、プライマリデータを除いた部分のデータである。セカンダリデータ格納ノード1060には、格納先を示す情報として、1又は2以上のノードが直接的に設定される他、「全ノード」又は「プライマリデータ格納ノード以外」などが設定されてもよい。
 セカンダリデータ格納方法1070は、セカンダリデータ格納ノード1060のノードに、データを格納する方法を示す。セカンダリデータ格納方法1070の設定は、プライマリデータ格納方法1050の設定と同様であってよい。
 図5は、データ処理情報テーブル1200の構成例を示す。
 データ処理情報テーブル1200は、分散システム1における、1又は2以上のデータ処理情報1201をレコードとして管理する。データ処理情報1201は、分析対象のデータの処理に関する情報である。
 データ処理情報1201は、フィールド値として、処理グループID1210と、優先度1220と、シーケンス番号1230と、プログラム1240と、実行契機1250と、要求リソース情報とを含んでよい。
 要求リソース情報は、データ処理情報に係る処理に要する物理リソースに関する情報である。要求リソース情報は、フィールド値として、仮想マシン数1260と、CPU数1261と、メモリ容量1262と、ディスクタイプ1263と、ディスク容量1264と、ネットワーク帯域1265と、INPUTデータセットID1270と、INPUTデータ絞込条件1271と、INPUTローカルアクセス値1272と、OUTPUTデータセットID1280と、OUTPUTローカルアクセス値1281とを含む。
 処理グループID1210は、分散システム1において、処理グループを一意に識別するための情報である。処理グループとは、所定の分析を行うための一連の処理(多段処理)をグループ化したものである。処理グループID1210は、数字若しくは文字列、又はこれらの組み合わせであってよい。処理グループID1210は、上記のデータセットID1010の場合と同様に、一意性が保証されてもよい。
 優先度1220は、当該優先度1220に係るデータ処理情報の優先度の高さを示す値である。本実施形態では、優先度1220の値が大きいほど、優先度が高いとする。分散システム1の有する物理リソースは有限である。したがって、優先度1220の高いデータ処理情報1201に係る処理(例えば、プログラム1240)に対して、分散システム1の有する物理リソースが優先的に割り当てられたり、又は、優先的に実行されたりしてもよい。したがって、優先度1220の低いデータ処理情報1201に係る処理は、そのデータ処理情報1201の示す通りに(例えば、要求リソース情報の通りに)物理リソースが割り当てられること、又は、実行契機1250の示す通りにプログラム1240が実行されることが、必ずしも保証されない。
 シーケンス番号1230は、処理グループID1210の処理グループに属するそれぞれのデータ処理情報1201を識別するための値である。よって、1つの処理グループID1210に、1又は2以上のシーケンス番号1230が対応付けられてよい。同じ処理グループに属するデータ処理情報1201に係る処理は、シーケンス番号1210の順番に実行されてよい。つまり、シーケンス番号1230は、多段処理を構成する各処理の順序(前段後段の関係)を示しているといってもよい。
 プログラム1240は、データ処理情報1201に係る処理において実行されるプログラムを識別するための値である。例えば、プログラム1240には、プログラムの格納されているパス名又はプログラム名などが設定される。プログラム1240には、複数のプログラムのIDが設定されてもよい。この場合、データ処理情報1201に係る処理において、これらの複数のプログラムが実行されてよい。プログラム1240には、複数のプログラムの実行順序が記述されたスクリプトのIDが設定されてもよい。この場合、データ処理情報1201に係る処理において、このスクリプトに記述された順番で、これら複数のプログラムが実行されてよい。
 実行契機1250は、データ処理情報1201に係る処理が実行される契機を表す値である。例えば、実行契機1250に「5AM,everyday」が設定されている場合、プログラム1240のプログラムが、毎日午前5時に(定期的に)実行される。例えば、実行契機1250に「ALL」が設定されている場合、プログラム1240のプログラムが常に実行される。
 次に、要求リソース情報について説明する。要求リソース情報は、データ処理情報1201に係る処理に要する物理リソースに関する情報である。
 要求リソース情報は、フィールド値として、仮想マシン数1260と、CPU数1261と、メモリ容量1262と、ディスクタイプ1263と、ディスク容量1264と、ネットワーク帯域1265と、INPUTデータセットID1270と、INPUTデータ絞込条件1271と、INPUTローカルアクセス値1272と、OUTPUTデータセットID1280と、OUTPUTローカルアクセス値1281とを含んでよい。
 仮想マシン数1260は、データ処理情報1201に係る処理を実行するために要する仮想マシンの数を示す値である。CPU数1261は、1つの仮想マシンに要求されるCPUの数(又はコアの数)を示す値である。メモリ容量1262は、1つの仮想マシンに要求されるメインメモリの容量を示す値である。
 ディスクタイプ1263は、1つの仮想マシンに要求されるディスクのタイプを示す値である。ディスクタイプ1263の一例としては、HDD及びSSDなどがある。ディスク容量1264は、1つの仮想マシンに要求されるディスクの容量を示す値である。
 ネットワーク帯域1265は、1つの仮想マシンに要求されるネットワークの帯域を示す値である。CPU数1261、メモリ容量1262、ディスクタイプ1263、ディスク容量1264及びネットワーク帯域1265は、仮想マシンの構成情報といってもよい。
 ノード111に仮想マシン121を構築する際、分散システム1は、そのノード111の利用可能な物理リソースから、構成情報の要求するリソースを確保できるか否か判定する。当該判定が肯定的な場合(確保可能な場合)、そのノード111は、仮想マシン121を構築し、構成情報の要求するリソースを、その仮想マシンに割り当てる。
 INPUTデータセットID1270は、INPUTデータセットを識別するための値である。INPUTデータセットは、データ処理情報1201に含まれるプログラム1240のプログラムに入力され得るデータセットである。
 INPUTデータ絞込条件1271は、INPUTデータセットID1270のINPUTデータセットの中から、入力の対象とするINPUTデータを絞り込む条件を示す値である。
 例えば、INPUTデータ絞込条件1271に「ALL」が設定されている場合、INPUTデータセットの全てが入力の対象となる。例えば、INPUTデータ絞込条件1271に、クエリ条件式が設定されている場合、そのクエリ条件式に適合するINPUTデータセットが入力の対象となる。例えば、ファイルの属性情報である最終更新日時が所定の日時以降である旨のクエリ条件式が設定されている場合、最終更新日時が所定の日時以降に更新されたINPUTデータが入力の対象となる。このときのクエリ条件式は、例えば、「最終更新日時が2010/01/01 12:00以降のファイル」のように表現されてよい。また、特定のキーワードで絞り込むクエリ条件式は、例えば「ファイル内の文字列に『テスト』という文字列を含むファイル」のように表現されてよい。
 INPUTローカルアクセス値1272は、データ処理情報1201に係る処理に対するINPUTデータセットの内、当該処理が、ローカルのノード111の記憶装置700からアクセス可能なINPUTデータセットの割合を示す値である。INPUTローカルアクセス値1272は、厳守すべき値ではなく、いわゆる目標値であってよい。
 例えば、INPUTローカルアクセス値1272「100%」は、データ処理情報1201に係る処理に対する全てのINPUTデータセットが、当該処理の実行されるローカルのノード111に格納されるべきことを示す。例えば、INPUTローカルアクセス値1272「10%」は、データ処理情報1201に係る処理に対する全てのINPUTデータセットの内、10%以上のINPUTデータセットが、当該処理の実行されるローカルのノード111に格納されるべきことを示す。
 OUTPUTデータセットID1280は、OUTPUTデータセットを識別するための値である。OUTPUTデータセットは、データ処理情報1201に含まれるプログラム1240のプログラムから出力され得るデータセットである。
 OUTPUTローカルアクセス値1281は、データ処理情報に係る処理によるOUTPUTデータセットの内、当該処理が、ローカルのノード111の記憶装置700に格納するOUTPUTデータセットの割合を示す値である。OUTPUTローカルアクセス値1281も、厳守すべき値ではなく、いわゆる目標値であってよい。
 例えば、OUTPUTローカルアクセス値「100%」は、データ処理情報1201に係る処理によるOUTPUTデータセットは、全てローカルのノード111に格納されるべきことを示す。例えば、OUTPUTローカルアクセス値「Free」は、データ処理情報1201に係る処理によるOUTPUTデータセットは、任意のノード111に格納されて格納されてよいことを示す。
 図5において、データ処理情報1201aは、処理グループID1210「PG1」の処理グループに属しており、その処理グループにおけるシーケンス番号1230が「1」であることを表す。
 そして、データ処理情報1201aは、実行契機1250「毎日午前5時」に、プログラム1240「Hadoop2」及び「Spark/Shark」が、優先度1220「10」で実行されることを表す。
 そして、データ処理情報1201aに係る処理は、2つの仮想マシン(1260)で実行されることを表す。そして、1つの仮想マシンを構築するには、4つのCPU(1261)と、8GBのメモリ容量(1263)と、1TBのHDD(1263、1264)と、1Gbpsのネットワーク帯域(1265)と、が必要であることを表す。
 そして、データ処理情報1201aは、INPUTデータセットID1270「101」の全てのデータセット(1271)を、プログラム1240「Hadoop2」及び「Spark/Shark」に入力すると、OUTPUTデータセットID1280「102」のデータセットが出力されることを表す。そして、このデータセットの入出力において、INPUTデータセットの50%以上がローカルアクセスであるべきであり(1270)、OUTPUTデータセットの出力先は問わない(1261)ことを表す。
 図6は、物理リソース情報テーブル1300の構成例を示す。
 物理リソース情報テーブル1300は、分散システム1における、各ノード111の物理リソース情報1301をレコードとして管理する。物理リソース情報1301は、ノード111の有する物理リソースの諸元(性能)及び利用に関する情報である。
 物理リソース情報1301は、フィールド値として、ノードグループID1310と、ノードID1320と、CPUリソース1330と、メモリリソース1340と、ディスクリソース1350と、ネットワークリソース1360とを含んでよい。これらのフィールド値は、必要に応じて変更されてよい。
 ノードグループID1310は、分散システム1において、1又は2以上のノード111から構成されるノードグループを一意に識別するための値である。ノードグループID1310は、数字若しくは文字列、又はこれらの組み合わせであってよい。ノードグループID1310は、上記のデータセットID1010と同様の方法により、一意性が保証されてもよい。
 ノードID1320は、分散システム1において、ノード111を一意に識別するための値である。よって、1つのノードグループID1310に、1又は2以上のノードID1320が対応付けられてよい。ノードID1320の一例としては、IPアドレス、URL及びノード名などがある。ノードID1320は、上記のデータセットID101と同様の方法により、一意性が保証されてもよい。
 CPUリソース1330は、ノードID1320のノード111の有するCPUのリソースに関する情報である。CPUリソース1330は、サブフィールド値として、CPUの性能などを示すスペック1331と、CPU又はコアの数を示す総数1332と、総数1332に対する割り当て済み(使用中)のCPU又はコアの割合を示す割当率1333とを含んでよい。
 メモリリソース1340は、ノードID1320のノード111の有するメモリのリソースに関する情報である。メモリリソース1340は、サブフィールド値として、メモリ容量を示す総量1341と、総量1341に対する割り当て済み(確保済み)の容量の割合を示す割当率1342とを含んでよい。
 ディスクリソース1350は、ノードID1320のノード111の有するディスクのリソースに関する情報である。ディスクリソース1350は、サブフィールド値として、ディスクの種類などを示すスペック1351と、ディスクの容量を示す総量1352と、総量1352に対する割り当て済み(確保済み)の容量の割合を示す割当率1353とを含んでよい。
 1つのノードID1320に、複数のディスクリソース1350が対応付けられてもよい。例えば、1つのノードID1320のノード111に、SSD及びSATA(Serial ATA)のディスクが搭載されている場合、そのノードID1320に、それぞれSSD及びSATAのスペック1351を有するディスクリソース1350が対応付けられてよい。
 ネットワークリソース1360は、ノードID1320のノード111の有するネットワークのリソースに関する情報である。ネットワーク1360は、サブフィールド値として、ネットワークの種類などを示すスペック1361と、ネットワークの帯域を示す総量1362と、総量1362に対する割り当て済み(確保済み)の帯域の割合を示す割当率1363とを含んでよい。
 1つのノードID1320に、複数のネットワークリソース1360が対応付けられてもよい。例えば、1つのノードID1320のノード111が、Ethernet(登録商標)及びFibre Channelに対応している場合、そのノードID1320に、それぞれEthernet及びFibre Channelのスペック1361を有するネットワークリソース1360が対応付けられてよい。
 図7は、仮想マシン情報テーブル1400の構成例を示す。
 仮想マシン情報テーブル1400は、分散システム1における、各ノード111の仮想マシン情報1401をレコードとして管理する。仮想マシン情報1401は、ノード111の有する仮想マシンの諸元(性能)及び利用に関する情報である。
 仮想マシン情報111は、フィールド値として、仮想マシンID1410と、ノードID1420と、CPU数1430と、メモリ容量1440と、ディスク容量1450と、ネットワーク帯域1460と、利用状況1470とを含んでよい。これらのフィールド値は、必要に応じて変更されてよい。
 仮想マシンID1410は、分散システム1において、仮想マシン121を一意に識別するための値である。仮想マシンID1410は、上記のデータセットID1010と同様の方法により、一意性が保証されてもよい。
 ノードID1420は、仮想マシンID1410の仮想マシン121が格納されているノード111を一意に識別するための値である。ノードID1420と図6のノードID1320は、同じ体系のIDを使用してよい。
 CPU数1430は、仮想マシンID1410の仮想マシン121の有する(割り当てられた)仮想的なCPU又はコアの数を示す値である。
 メモリ容量1440は、仮想マシンID1410の仮想マシン121の有する(割り当てられた)仮想的なメモリの容量を示す値である。
 ディスク容量1450は、仮想マシンID1410の仮想マシン121の有する(割り当てられた)仮想的なディスクの容量を示す値である。
 ネットワーク帯域1460は、仮想マシンID1410の仮想マシンの有する(割り当てられた)仮想的なネットワークの帯域を表す値である。
 利用状況1470は、仮想マシンID1410の仮想マシン121で実行される処理を示す値である。この処理を示す値は、処理グループID1210及び/又はシーケンス番号1220であってよい。
 例えば、図7の仮想マシン情報1401aは、仮想マシンID1410「VM1」の仮想マシン121が、ノードID1420「Node1」のノード111に構築されていることを表す。そして、仮想マシン情報1401aは、仮想マシンID1410「VM1」の仮想マシン121が、「4つ」の仮想CPUと(1430)、「8GB」の仮想メモリと(1440)、「1TB」の仮想ディスクと(1450)、「1Gbps」の仮想ネットワーク帯域と(1460)を有していることを表す。そして、仮想マシン情報1401aは、仮想マシンID1410「VM1」の仮想マシン121で、処理グループID「PG1」(1470)に係る処理が実行されることを示す。
 図8は、データブロック格納情報テーブル1500の構成例を示す。
 データブロック格納情報テーブル1500は、分散システム1における、データブロック格納情報1501を、レコードとして管理する。データブロック格納情報1501は、ファイルから分割されたデータブロックの格納場所に関する情報である。
 データブロック格納情報テーブル1500は、各ノード111の分散ファイルシステム制御部520において管理され、必要に応じて、分散システム1内の各ノード111間で同期されてよい。
 データブロック格納情報1501は、フィールド値として、データブロックID1510と、ファイルID1520と、ファイルオフセット1530と、データセットID1540と、格納数1550と、格納場所1560とを含んでよい。
 データブロックID1510は、分散システム1において、ファイルから分割された各データブロックを一意に識別するための値である。データブロックID1510は、上記のデータセットID1010と同様の方法により、一意性が保証されてもよい。
 ファイルID1520は、分散システム1において、ファイルを一意に識別するための値である。ファイルID1520は、上記のデータセットID1010と同様の方法により、一意性が保証されてもよい。
 ファイルオフセット1530は、ファイルID1520のファイルにおける、データブロックID1510のデータブロックのオフセットの位置を示す値である。
 データセットID1540は、ファイルID1520のファイルが属するデータセットのデータセットIDを示す値である。データセットID1540と図4のデータセットID1010は、同じ体系のIDを使用してよい。
 格納数1550は、データブロックID1510のデータブロックが冗長して(複製されて)格納されている数を示す値である。冗長して格納される数は、分散システム1のデフォルト値として設定されてもよいし、データブロック毎に設定されてもよい。冗長して格納されたデータブロックを、レプリカデータという。格納数1550は、オリジナルのデータブロックとレプリカデータの合計であってもよいし、レプリカデータのみの数であってもよい。
 格納場所1560は、データブロックID1510のデータブロックが格納されている、ノード111及びパス名を示す値である。データブロックID1510のレプリカデータが複数存在する場合、格納情報1560には、その複数のレプリカデータの各々の格納場所が含まれてよい。
 図9は、データ処理設定画面2000の構成例を示す。
 データ処理設定画面2000は、GUI(Graphical User Interface)の一種として構成され、管理者がデータ処理情報テーブル1200に情報を登録するために使用されてよい。
 例えば、管理者が、クライアントマシン50を介して分散システム1の或るノード111(又は管理マシン51)にアクセスすると、クライアントマシン50の所定のディスプレイにデータ処理設定画面2000が表示される。データ処理設定画面2000には、データ処理情報テーブル1200に設定されている値が表示されてもよい。未設定の場合、データ処理設定画面2000には、デフォルト値が表示されてもよい。
 データ処理設定画面2000は、データ処理情報1201のフィールド値を設定するための入力領域を有する。
 処理グループID領域2110に値が入力されると、データ処理情報テーブル1200において、その入力された値を処理グループID1210とする1又は2以上のデータ処理情報1201が特定される。ここで、この特定された1又は2以上のデータ処理情報1201を、「データ処理情報グループ」という。すなわち、データ処理情報グループには、設定の対象となる1又は2以上のデータ処理情報が含まれる。
 管理者が、処理グループID領域2110に値を入力して、「New」ボタン2111を押下すると、処理グループID領域2110に入力された値を処理グループID1210に有する、新規のデータ処理情報1201が生成される。
 管理者が、処理グループID領域2110に値を入力して、「Show」ボタン2112を押下すると、処理グループID領域2110に入力された値を処理グループID1210に有する、既存のデータ処理情報1201が抽出され、その抽出されたデータ処理情報1201に設定済みの値が、後述する各入力領域に表示される。
 優先度領域2120に入力された値は、データ処理情報1201の優先度1220として設定される。
 初期データセット情報の項目において、データソースID領域2130に入力された値は、新規のデータセット情報1001のデータソースID1020として設定される。この新規のデータセット情報1001は、データセット情報テーブル1000に新規登録される。
 データ処理設定画面2000は、この入力されたデータソースIDが妥当であるか否か(指定された情報をもとに当該データソースにアクセス可能であるか否か)を判定するための「Check」ボタン2131を有してもよい。例えば、管理者が、データソースID領域2130に値を入力した後に「Check」ボタン2131を押下すると、そのチェック結果がデータ処理設定画面2000に表示されてもよい。
 初期データセット情報の項目において、ルートディレクトリ領域2140に入力された値は、上記の新規のデータセット情報1001のルートディレクトリ1030に設定される。
 データ処理設定画面2000は、データ処理情報グループに含まれる複数のデータ処理情報1201の各々について、シーケンス番号1230に対応するデータ処理情報を設定するためのGUIを有する。例えば、データ処理設定画面2000は、シーケンス番号毎にデータ処理情報を設定するためのタブ領域2200を有する。各タブ2201、2202、2203には、シーケンス番号が表示されてよい。
 例えば、図9において、タブ2201はシーケンス番号「1」の、タブ2202はシーケンス番号「2」の、タブ2203はシーケンス番号「3」のデータ処理情報を設定するためのタブ領域2200を示す。そして、図9は、シーケンス番号「1」のデータ処理情報を設定するためのタブ領域2200が選択されていることを表す。ここで、対象データ処理情報の内、選択されているタブのシーケンス番号に対応するデータ処理情報を、「対象データ処理情報」という。
 タブ(シーケンス番号)は、任意に追加及び削除できてよい。例えば、図9において、「+」ボタン2204が押下されると、新規タブ(シーケンス番号)が追加され、「-」ボタン2205が押下されると、最後のタブ(シーケンス番号)(又はアクティブなタブ)が削除されてよい。
 プログラム領域2210に入力された値は、対象データ処理情報におけるプログラム1240に設定される。例えば、管理者は、プログラム領域2210に、プログラムの格納されているパス名又はプログラム名などを入力する。
 「Ref」ボタン2211が押下されると、ファイルシステムから、プログラム領域2210に入力されたプログラムの格納されているパス名が探索され、その結果が表示されてもよい。
 実行契機領域2220に入力された値は、対象データ処理情報における実行契機1250に設定される。「+」ボタン2221が押下されると、実行契機領域2220が追加され、複数の処理実行契機が入力できるようになってよい。「-」ボタン2222が押下されると、複数の処理実行契機の中の1つが削除されてよい。
 仮想マシン数領域2230に入力された値は、対象データ処理情報における仮想マシン数1260に設定される。
 各仮想マシンに割り当てる物理リソースは、次のように入力される。CPU領域2240に入力された値は、対象データ処理情報におけるCPU数1261に設定される。メモリ領域2241に入力された値は、対象データ処理情報におけるメモリ容量1262に設定される。
 ディスクタイプ領域2242に入力された値は、対象データ処理情報におけるディスクタイプ1263に設定される。ディスク容量領域2243に入力された値は、対象データ処理情報におけるディスク容量1264に設定される。「+」ボタン2245が押下されると、ディスクタイプ領域2242及びディスク容量領域2243が追加され、複数のディスクタイプ及びディスク容量が入力できるようになってよい。「-」ボタン2246が押下されると、複数のディスクタイプ及びディスク容量の中の1つが削除されてよい。
 ネットワーク領域2244に入力された値は、対象データ処理情報におけるネットワーク1265に設定される。
 INPUTデータセットに係る情報は、次のように入力される。INPUTデータ絞込条件領域2250に入力された値は、対象データ処理情報におけるINPUTデータ絞込条件1271に設定される。
 INPUTローカルアクセス値領域2251に入力された値は、対象データ処理情報におけるINPUTローカルアクセス値1272に設定される。OUTPUTローカルアクセス値領域2260に入力された値は、対象データ処理情報におけるOUTPUTローカルアクセス値1281に設定される。
 INPUTローカルアクセス値1272及び/又はOUTPUTローカルアクセス値1281には、自動的に推奨値が設定されてもよい。INPUTローカルアクセス値1272の推奨値は、シーケンス番号が小さいほど小さくなり、シーケンス番号が大きいほど大きくなるとしてもよい。例えば、2段階から構成される処理を設定する場合、1段目(シーケンス番号「1」)のINPUTローカルアクセス値の推奨値を50%とし、1段目の出力結果を利用して処理を行う2段目(シーケンス番号「2」)のINPUTローカルアクセス値の推奨値を100%としてもよい。
 INPUTローカルアクセス値1272をこのように設定することで、後段の処理ほどデータアクセス範囲が狭く、且つ、高頻度にアクセスするケースにおいて、ローカルアクセスの頻度を高めることができる。それにより、多段処理の全体における処理のオーバーヘッドを低減することができる。
 また、INPUTローカルアクセス値1272の推奨値をシステムが自動的に設定(提示)することにより、管理者の負担が軽減される。すなわち、管理者は、多段処理における処理シーケンスの段数などを考慮した上で、各処理におけるローカルアクセス値を設定するという負担から解放される。
 「Create」ボタン2001が押下されると、上記において入力された値の設定された対象データ処理情報が、データ処理情報テーブル1200に新規登録される。このとき、同じ処理グループIDを有するデータ処理情報が既にデータ処理情報テーブル1200に登録されている場合、新規登録エラーが表示されてもよい。
 「Update」ボタン2002が押下されると、上記において入力された値の設定された対象データ処理情報が、データ処理情報テーブル1200に更新登録される。このとき、同じ処理グループIDを有するデータ処理情報がデータ処理情報テーブル1200に登録されていない場合、更新登録エラーが表示されてもよい。
 また、上記の新規登録及び更新登録時に、対象データ処理情報に入力された値の検証が行われてもよい。そして、値が不整合な場合又は現在の物理リソースで対応が困難な場合には、その旨のエラーが表示されてもよい。
 また、処理グループID領域2110に値が入力され、「Delete」ボタン2003が押下されると、その入力された処理グループID1210の値を有するデータ処理情報が、データ処理情報テーブル1200から削除されてもよい。
 なお、データ処理設定画面2000から入力可能な値は、所定の設定ファイルとして分散システム1にインポートされてもよい。例えば、図9の設定ファイルインポート領域2510に設定ファイル名が入力され、「Import」ボタン2512が押下されると、この設定ファイルの内容が対象データ処理情報として、データ処理情報テーブル1200に登録されてもよい。また、「Ref」ボタン2511が押下されると、ファイルシステムから、設定ファイルインポート領域2510に入力された設定データの格納されているパス名が検索され、その結果が表示されてもよい。
 図10は、ジョブ設定画面4000の構成例を示す。
 ジョブ設定画面4000は、GUIの一種として構成され、管理者がジョブスケジュール情報テーブル1600にジョブスケジュール情報1601を登録するために使用されてよい。例えば、管理者が、クライアント50を介して分散システム1の或るノード111(又は管理マシン51)にアクセスすると、クライアント50の所定のディスプレイにジョブ設定画面4000が表示される。ジョブ設定画面4000には、ジョブスケジュール情報テーブル1600に設定されている値が表示されてもよい。未設定の場合、ジョブ設定画面4000には、デフォルト値が表示されてもよい。
 ジョブ設定画面4000は、ジョブスケジュール情報1601のフィールド値を設定するための入力領域を有する。
 ジョブID領域4110に値が入力されると、ジョブスケジュール情報テーブル1600において、ジョブID1610にその入力された値を有するジョブスケジュール情報1601が特定される。この特定されたジョブスケジュール情報1601を、「対象ジョブスケジュール情報」という。すなわち、対象ジョブスケジュール情報とは、設定の対象となるジョブスケジュール情報である。
 ジョブID領域4110に値を入力して、「New」ボタン4111を押下すると、そのジョブID領域4110に入力された値をジョブID1610に有する、新規のジョブスケジュール情報が生成されてもよい。ジョブID領域4110に値を入力して、「Show」ボタン4112を押下すると、そのジョブID領域4110に入力された値をジョブID1610に有する、既存のジョブスケジュール情報が抽出され、その抽出されたジョブスケジュール情報に設定済みの値が、後述する各入力領域に表示されてもよい。
 処理グループID領域4120に入力された値は、対象ジョブスケジュール情報の処理グループID1620として設定される。
 シーケンス番号領域4130に入力された値は、対象ジョブスケジュール情報のシーケンス番号1630として設定される。
 実行形態領域4140に入力された値は、対象ジョブスケジュール情報の実行形態1650として設定される。
 実行契機領域4150に入力された値は、対象ジョブスケジュール情報の実行日時1640に設定される。「+」ボタン4113及び「-」ボタン4114が押下された場合の動作は、図9における、実行契機領域2220の「+」ボタン2221及び「-」ボタン2222と同様であってよい。
 優先度領域4160に入力された値は、対象ジョブスケジュール情報の優先度1670に設定される。
 プログラム領域4170に値が入力されると、ジョブID4110のジョブが実行されるとき、処理グループID領域4120に入力された処理グループIDについて設定されたプログラム2210に代えて、このプログラム領域4170に入力された値のプログラムが実行されてよい。
 「Ref」ボタン4115が押下されると、ファイルシステムから、プログラム領域4175に入力されたプログラムの格納されているパス名が検索され、その結果が表示される。
 「Create」ボタン4001が押下されると、上記において入力された値を有する対象ジョブスケジュール情報が、ジョブスケジュール情報テーブル1600に新規登録される。このとき、同じジョブIDを有するジョブスケジュール情報が既にジョブスケジュール情報テーブル1600に登録されている場合、新規登録エラーが表示されてもよい。
 「Update」ボタン4002が押下されると、上記において入力された値を有する対象ジョブスケジュール情報が、ジョブスケジュール情報テーブル1600に更新登録される。このとき、同じジョブIDを有するジョブスケジュール情報がジョブスケジュール情報テーブル1200に登録されていない場合、更新登録エラーが表示されてもよい。
 ジョブID領域4110に値が入力され、「Delete」ボタン4003が押下されると、その入力されたジョブID1610の値を有するジョブスケジュール情報1601が、ジョブスケジュール情報テーブル1600から削除されてもよい。
 上述では、値の入力、更新及び表示の手段としてGUIの例を説明したが、他の手段であってもよい。他の手段の一例としては、CLI(Command Line Interface)又はAPI(Application Programming Interface)などがある。
 図11は、データ処理情報の登録に関する処理例を示すフローチャートである。
 オーケストレーション制御部570は、データ処理設定画面2000に入力されたデータ処理情報を含む登録処理グループを受信する(S101)
 オーケストレーション制御部570は、物理リソース情報テーブル1300を参照し(S102)、登録処理グループの要求する物理リソースを確保できるか否かを判定する(S103)。当該判定処理の詳細については、後述する(図12参照)。
 登録処理グループの要求する物理リソースを確保できる場合(S103:Yes)、オーケストレーション制御部570は、後述するS107の処理に進む。
 登録処理グループの要求する物理リソースを確保できない場合(S103:No)、オーケストレーション制御部570は、次のS104の処理に進む。
 オーケストレーション制御部570は、登録処理グループの優先度よりも優先度の低いデータ処理情報よって確保されている物理リソースを解放すれば、登録処理グループの要求する物理リソースを確保できるか否か判定する(S104)。例えば、次のように判定する。
 まず、分散システム1の有する全ての物理リソースを対象にして、登録処理グループの要求する物理リソースを確保できるか否か判定する。この判定を第1判定とする。この第1判定は、後述の図12に相当する。第1判定において物理リソースを確保できないと判定した場合、オーケストレーション制御部570は、本処理をエラーとして終了する(S104:No)。
 第1判定において物理リソースを確保できると判定した場合、次にオーケストレーション制御部570は、データ処理情報テーブル1200の中から、登録処理グループの優先度よりも低い優先度のデータ処理情報1201を抽出する。このようなデータ処理情報を抽出できない場合、オーケストレーション制御部570は、本処理をエラーとして終了する(S104:No)。
 このようなデータ処理情報を抽出できる場合、次にオーケストレーション制御部570は、この抽出した低い優先度のデータ処理情報1201に係る仮想マシンを別のノード111に移動すれば、登録処理グループの要求する物理リソースを確保できるか否か判定する。この判定を第2判定とする。
 第2判定において物理リソースを確保できると判定した場合、オーケストレーション制御部570は、この移動対象の仮想マシンに割り当てられている物理リソースを特定する。また、オーケストレーション制御部570は、この移動対象の仮想マシンの移動先候補となるノードを抽出する。そして、オーケストレーション制御部570は、S105の処理に進む(S104:Yes)。
 第2判定において物理リソースを確保できないと判定した場合、次にオーケストレーション制御部570は、この抽出した低い優先度のデータ処理情報に係る仮想マシンに割り当てられている物理リソースを解放(つまり、この仮想マシンを停止)すれば、登録処理グループの要求する物理リソースを確保できるか否か判定する。この判定を第3判定とする。
 第3判定において物理リソースを確保できると判定した場合、オーケストレーション制御部570は、この解放対象の仮想マシンに割り当てられている物理リソースを特定する。そして、オーケストレーション制御部570は、S105の処理に進む(S104:Yes)。
 第3判定において物理リソース群を確保できないと判定した場合、オーケストレーション制御部570は、本処理をエラーとして終了する(S104:No)。
 S105において、オーケストレーション制御部570は、仮想マシンの移動又は停止に伴う物理リソースの解放を、物理リソース情報テーブル1300に反映する(S105)。
 オーケストレーション制御部570は、ジョブ制御部550に対して、リプロビジョニング処理を依頼する(S106)。リプロビジョニング処理は、物理リソースの割り当てを変更するための処理である。リプロビジョニング処理の詳細については、後述する(図15参照)。
 オーケストレーション制御部570は、登録処理グループに関する物理リソースの確保を、物理リソース情報テーブル1300に反映する(S107)。
 オーケストレーション制御部570は、ジョブ制御部550に対して、プロビジョニング処理を依頼する(S108)。プロビジョニング処理の依頼を受信したリソース割当制御部540は、ノードから要求された(確保された)物理リソースの割り当てられた仮想マシンを生成し、この仮想マシンに分析処理のソフトウェアをインストールする。これらの処理はリソース制御部540から依頼を受けた、ハイパーバイザ制御部530が実行してもよい。
 オーケストレーション制御部570は、登録処理グループに含まれるデータ処理情報を、データ処理情報テーブル1200に登録する(S109)。
 オーケストレーション制御部570は、S108のプロビジョニング処理の完了を待つ(S110:No)。プロビジョニング処理が完了すると(S110:Yes)、オーケストレーション制御部570は、次のS111の処理に進む。
 S111において、オーケストレーション制御部570は、S108のプロビジョニング処理及びS106のリプロビジョニング処理の結果を、仮想マシン情報テーブル1400に反映する(S111)。
 オーケストレーション制御部570は、分散ファイルシステム200上に、データ格納場所(ルートディレクトリ)を作成する(S112)。初期データセットに対するルートディレクトリは、データ処理設定画面2000のルートディレクトリ領域2140に入力された値であってよい。それ以外のデータセットに対するルートディレクトリは、分散システム1によって自動的に決定されてもよい。
 オーケストレーション制御部570は、データセット情報テーブル1000を更新し(S113)、本処理を終了する。
 以上の処理により、データ処理設定画面2000を通じて入力された登録処理グループに係る処理を実行するための環境が、分散システム1に構築される。
 図12は、物理リソースの確保の判定に関する処理例を示すフローチャートである。本処理は、図11のS103又はS104の判定処理に相当する。
 オーケストレーション制御部570は、物理リソースの確保の判定を、ボトムアップ方式又はトップダウン方式の何れで行うかを選択する(S121)。この選択は、管理者に選択させてもよいし、設定に基づいて、分散システム1が自動的に選択してもよい。
 ボトムアップ方式とは、同じ処理グループに属する複数の対象データ処理情報の内、シーケンス番号の小さい対象データ処理情報から順に、その対象データ処理情報に係る処理に必要な物理リソースを確保できるか否かを評価する方法である。ボトムアップ方式は、多段処理の前段に係る対象データ処理情報を先に評価するため、多段処理の前段に係る処理が、概して、特定の物理ノード群に集約される。
 トップダウン方式とは、同じ処理グループに属する複数の対象データ処理情報群の内、シーケンス番号の大きい対象データ処理情報から順に、その対象データ処理情報に係る処理に必要なリソースを確保できるか否かを評価する方法である。トップダウン方式は、多段処理の後段に係る対象データ処理情報を先に評価するため、多段処理の後段に係る処理が、概して、特定の物理ノード群に集約される。
 ボトムアップ方式を選択する場合(S121:Yes)、オーケストレーション制御部570は、ボトムアップ処理(S122)を実行する。当該ボトムアップ処理の詳細については、後述する(図13参照)。
 トップダウン方式を選択する場合(S121:No)、オーケストレーション制御部570は、トップダウン処理(S123)を実行する。当該トップダウン処理の詳細については、後述する(図14参照)。
 その後、オーケストレーション制御部570は、ボトムアップ処理(S122)又はトップダウン処理(S123)が正常終了であるか否かを判定する(S124)。エラー終了の場合(S124:No)、オーケストレーション制御部570は、物理リソースの確保が不可能であると判定し(S129)、図11に示す処理に戻る。
 正常終了の場合(S124:Yes)、オーケストレーション制御部570は、登録処理グループ内の全てのデータ処理情報について、S125~S127の処理を完了したか否か判定する(S125)。
 登録処理グループ内の全てのデータ処理情報について処理を完了した場合(S125:Yes)、オーケストレーション制御部570は、物理リソースの確保が可能であると判定し(S128)、その判定結果を図11に示す処理に渡すと共に、図11の処理に戻る。このとき、オーケストレーション制御部570は、図11に示す処理に戻った後に行われる物理リソース情報テーブル1300の更新処理おいて更新に要する情報も、図11に示す処理に渡す。すなわち、オーケストレーション制御部570は、S128の判定結果と確保対象となる物理リソースの情報とを一緒に、図11に示す処理に渡す。ここで図11に示す処理に渡す物理リソースの情報の一例としては、当該データ処理内容に関する各処理シーケンスにおいて作成する仮想マシンの割り当て物理ノード識別情報と、作成する仮想マシン数と、その仮想マシンが利用する計算機資源(CPU、メモリ、ディスク、ネットワークなど)の情報などがある。
 登録処理グループ内に未処理のデータ処理情報が残っている場合(S125:No)、オーケストレーション制御部570は、未処理のデータ処理情報の1つの選択する(S126)。つまり、登録処理グループ内の未処理のシーケンス番号の1つを選択する。
 次に、オーケストレーション制御部570は、その選択したデータ処理情報に係る仮想マシン121が配置されるノード数を算出する。すなわち、オーケストレーション制御部570は、その選択したデータ処理情報のシーケンス番号に係る処理に使用されるノード数を知る。仮想マシンが配置されるノード数は、ノードリストに含まれる情報に基づいて算出されてよい。ノードリストは、S122のボトムアップ処理又はS123のトップダウン処理において生成される。詳細については後述するが、ノードリストには、ノードIDと、シーケンス番号と、そのノードにおいて確保された物理リソースの値とが、対応付けて登録されている。
 そして、オーケストレーション制御部570は、仮想マシンが配置されるノード数が、閾値以下であるか否か判定する(S127)。ここで、仮想マシン121の配置されるノード毎にレプリカデータが配置される場合、オーケストレーション制御部570は、レプリカデータ数が閾値以下であるか否かを判定してもよい。レプリカデータが大量に生成され、ディスクリソースが大量に消費されることを防ぐためである。この閾値は、デフォルト値として設定されていてもよいし、管理者によって個別に設定されてもよい。
 仮想マシンが配置されるノード数が閾値以下である場合(S127:Yes)、オーケストレーション制御部570は、S125の処理に戻る。仮想マシンが配置されるノード数が閾値よりも多い場合(S127:No)、オーケストレーション制御部570は、物理リソースの確保が不可能である旨の判定を行い(S129)、図11に示す処理に戻る。
 以上の処理により、登録処理グループに関する処理に対して、物理リソースの確保が可能か否か判定される。
 図13は、ボトムアップ処理の例を示すフローチャートである。本処理は、図12のS122に相当する。
 オーケストレーション制御部570は、登録処理グループ内の全てのデータ処理情報について、S141~S151の処理を完了している場合(S141:Yes)、処理を終了する。
 未処理のデータ処理情報が残っている場合(S141:No)、オーケストレーション制御部570は、未処理の中でシーケンス番号が最小のデータ処理情報を選択する(S142)。つまり、多段処理における前段のデータ処理情報から順に、以下の処理を実行する。
 次に、オーケストレーション制御部570は、選択したデータ処理情報のシーケンス番号が「1」であるか否か判定する(S143)。シーケンス番号は多段処理の段数を示す。
 シーケンス番号が「1」である場合(S143:Yes)、オーケストレーション制御部570は、変数PN1に分散システム1を構成するノードの数(最大ノード数)を代入する。ここで、変数PN1は、本処理において、シーケンス番号がNの場合(S144ではN=1)における仮想マシン向け物理リソース確保処理において、計算機システムに属するノード群の中から、物理リソース確保対象として選択可能なノードの数を示す。本処理では、後述する通り、所定の条件に適合するノードが適宜選択され、その選択されたノードから必要な物理リソースが確保される。変数PN1は、ノードが選択されたときに減算される。これにより、変数PN1が「0」の場合は、物理リソース確保可能なノードが存在しないと判別することができる。すなわち、変数PN1の値を、本処理の終了条件の一つとして利用することができる。
 また、オーケストレーション制御部570は、ノードリストを初期化する(S144)。そして、オーケストレーション制御部570は、S146の処理に進む。ここで、ノードリストは、本処理において、データ処理情報のシーケンス番号ごとに、ノードに作成される仮想マシンの数と、各仮想マシンに割り当てる物理リソースの情報(CPU、メモリ、ディスク、ネットワーク等)とを管理する。ノードリストの初期化とは、ノードリストに登録されている情報を空(NULL)にすることであってよい。ノードリストには、計算機システムに属するノード群の中から仮想マシンの作成対象として選択されたノードの識別情報が、適宜追加される。また、ノードに実際に物理リソースを割り当てて仮想マシンを作成することが決定された場合、ノードリストにおいて、実際に割り当てる物理リソースの情報と、仮想マシンを利用する処理に関連付けられているシーケンス番号(すなわち、多段処理を行う際に、当該処理が何段目に行われるのかを示す情報)と、ノードの識別情報とが、関連付けられて管理される。これにより、オーケストレーション制御部570は、本処理を終了した段階でノードリストを参照することにより、ノードリストに登録されている各ノードについて、どのシーケンス番号の処理向けに何個の仮想マシンを作成する必要があるのか、及び、各仮想マシンを作成するにあたりどれだけの物理リソースを割り当てればよいのかなどを判別することができる。
 シーケンス番号が「1」でない場合(S143:No)、オーケストレーション制御部570は、変数PN1に現在利用可能なノードの数を代入し(S145)、S146の処理に進む。
 例えば、オーケストレーション制御部570は、
PN1 = min(PNS/ILA1-PNS,最大ノード数-PNS) …(式1)
を算出する。
 ここで、「PNS」は、現在のノードリストに追加されているノード数を示す。「ILA1」は、今回のループ処理で選択されたデータ処理情報のINPUTローカルアクセス値を示す。つまり、多段処理における、本段のシーケンス番号の処理に関するINPUTローカルアクセス値を示す。
 「min」は、複数の値の内、最小の値を返す関数である。よって、変数PN1は、「PNS/ILA1-PNS」と「最大ノード数-PNS」の内の何れか小さい方の値となる。ここで、「PNS/ILA1-PNS」の式で算出される値が意味するものは、本処理の今回のループ処理で選択されたデータ処理情報のINPUTローカルアクセス値を鑑みた上で今回のループ処理で新たにノードリストに追加するために選択可能なノードの数を示す。例えば、ILA1の値が「100%」の場合、式1の値は「0」になる。この場合、今回のループ処理では、前段のループ処理までに選択されノードリストに追加されたノードの中から仮想マシン向けに必要な物理リソースの割り当てが可能か否かを判断する必要がある。なぜならば、そうしなければINPUTローカルアクセス値「100%」の条件を満たすことができないためである。同様の例として、ILA1の値が「50%」であって、PNSの値が「1」である場合、式1の値は「1」となる。この場合、今回のループ処理では、前段のループ処理までに選択されノードリストに追加された1つのノードに加えて、もう1つのノードを対象に、仮想マシン向けに必要な物理リソースの割り当てが可能か否かを判断する必要がある。
 「最大ノード数-PNS」の式で算出される値が意味するものは、計算機システムに属するノードの中で物理リソースが未割り当てのノードの最大値である。式1は、「PNS/ILA1-PNS」の式で算出される値が最大値(つまり、「最大ノード数-PNS」)を超えてしまった場合に、最大値を変数PN1に設定する。これにより、システム上ありえない値が変数PN1に設定されることを防止している。
 S146において、オーケストレーション制御部570は、選択したデータ処理情報に含まれる要求リソース情報の各値を、第1変数に代入する(S146)。
 例えば、第1変数に含まれる変数V、C、M、DT、DS、Nには、それぞれ以下の値が代入される。
変数Vに、要求リソース情報の仮想マシン数が代入される。
変数Cに、要求リソース情報のCPU数が代入される。
変数Mに、要求リソース情報のメモリ容量が代入される。
変数DTに、要求リソース情報のディスクタイプが代入される。
変数DSに、要求リソース情報のディスク容量が代入される。
変数Nに、要求リソース情報のネットワーク帯域が代入される。
 次に、オーケストレーション制御部570は、ノードリスト内に、後述のS148で未選択、且つ、利用可能なノードが存在するか否か判定する(S147)。利用可能なノードとは、例えば、利用可能な物理リソースがまだ残っているノードである。シーケンス番号「1」についての処理であれば、ノードリストは初期化されており、S147はNoと判定される。
 シーケンス番号「2」以降の処理であって前段で選択されたノードがノードリストに追加されている場合(S147:Yes)、オーケストレーション制御部570は、その中からノードを1つ選択し、その選択したノードにおいて利用可能な物理リソースを示す各値を、第2変数に代入する(S148)。本ステップにより前段の仮想マシンを設定したノードが優先的に他の仮想マシン設定ノードとして選択される。利用可能な物理リソースを示す各値は、その選択したノードの物理リソース情報に基づいて算出されてよい。
 例えば、第2変数に含まれる変数C1、M1、DT1、DS1、M1には、それぞれ以下の値が代入される。
変数C1に、選択したノードにおいて利用可能なCPU数が代入される。
変数M1に、選択したノードにおいて利用可能なメモリ容量が代入される。
変数DT1に、選択したノードにおいて利用可能なディスクタイプが代入される。
変数DS1に、選択したノードにおいて利用可能なディスク容量が代入される。
変数N1に、選択したノードにおいて利用可能なネットワーク帯域が代入される。
 オーケストレーション制御部570は、第2変数の示す利用可能な物理リソースから、第1変数の示す要求リソースを確保できるか否か判定する(S149)。すなわち、オーケストレーション制御部570は、S148で選択したノードに、S142で選択したデータ処理情報に係る処理を実行するための仮想マシンを配置できるか否かについて判定しているともいえる。
 例えば、オーケストレーション制御部570は、「C<C1」、「M<M1」、「DTとDT1が一致」、「DS<DS1」及び「N<N1」の全ての条件を満たすならば、当該ノードを仮想マシン設定に利用可能としてS149の判定を「Yes」としてS150に進み、何れかの条件を満たさないならば、S147に戻る。
 S150において、オーケストレーション制御部570は、第1変数の仮想マシン数から「1」を減算する。また、オーケストレーション制御部570は、ノードリストに、選択したノードのノードIDと、S142で選択したシーケンス番号と、そのノードにおいて確保された物理リソースの値(例えば、第1変数)とを、対応付けて追加する(S150)。すなわち、オーケストレーション制御部570は、当該ノードにおいて実際に物理リソースを割り当てて仮想マシンを作成することを決定したので、実際に割り当てる物理リソースの情報、及び、当該仮想マシンを利用する処理に関連付けられているシーケンス番号(すなわち、多段処理を行う際に、当該処理が何段目に行われるのかを示す情報)を、当該ノードの識別情報と関連付けてノードリストに追加する。また、ノードリストに新たなノードを追加する際、今回のループ処理(同一のシーケンス番号を有するデータ処理情報に関する処理)において、別のノードから物理リソースの割り当てを行う旨がノードリストに既に登録されている場合は、当該シーケンス番号における処理のINPUTローカルアクセス値の条件を満たすために、当該ノード及び別のノードに、INPUTデータの複製を保持させる必要がある。この場合、オーケストレーション制御部570は、ノードリストに、対象となるデータセットの複製が当該ノード及び別のノードに冗長して格納されている旨を示す情報を追加してよい。実際に各ノードに仮想マシンを作成するにあたり、この冗長格納を示す情報がノードリストに登録されている場合は、この冗長格納を示す情報に基づいて、各ノードに必要なINPUTデータを複製する処理が行われる。
 さらに、オーケストレーション制御部570は、第2変数の各値から「1」を減算する。例えば、オーケストレーション制御部570は、第2変数の各値から、第1変数の各値を、次のように減算する。
変数C1から、変数Cを減算する。
変数M1から、変数Mを減算する。
変数DS1から、変数DSを減算する。
変数N1から、変数Nを減算する。
 次に、オーケストレーション制御部570は、第1変数の仮想マシン数が「0」か否かを判定する(S151)。すなわち、オーケストレーション制御部570は、S142で選択したデータ処理情報が要求する全ての仮想マシンに対して、物理リソースの確保を完了したか否か判定する。
 第1変数の仮想マシン数が「0」でない場合(S151:No)、オーケストレーション制御部570は、S149の処理に戻る。第1変数の仮想マシン数が「0」である場合(S151:Yes)、オーケストレーション制御部570は、S141の処理に戻り、別のデータ処理情報を選択する。
 上記のS147の判定において、ノードリスト内に、S148で未選択、且つ、利用可能なノードが存在しない場合(S147:No)、オーケストレーション制御部570は、次のS156の処理に進む。
 オーケストレーション制御部570は、変数PN1が「0」より大きいか否かを判定する(S156)。すなわち、仮想マシンを配置することができるノードが残っているかどうかを判定する。そのようなノードが存在しない場合(S156:No)、本処理で所定の条件を満たす仮想マシン向けの物理リソースの割り当てが不可能と判定し、本処理をエラー終了とする。そのようなノードが存在する場合(S156:Yes)、次のS152の処理に進む。
 オーケストレーション制御部570は、未選択、且つ、(ノードリスト内に限らず)利用可能なノードが存在するか否か判定する(S152)。すなわち、オーケストレーション制御部570は、この選択したデータ処理情報に係る処理を実行するための仮想マシンを配置することができるノードが、計算機システム内に存在するか否か判定する。
 そのようなノードが存在する場合(S152:Yes)、オーケストレーション制御部570は、変数PN1から「1」を減算する(S153)。つまり、オーケストレーション制御部570は、利用可能なノード数を減らす。
 そして、オーケストレーション制御部570は、その中からノードを1つ選択し、その選択したノードにおいて利用可能な物理リソースを示す各値を、第2変数に代入する(S154)。この処理は、S148の処理と同様である。そして、オーケストレーション制御部570は、S149の処理に進む。
 S152において、そのようなノードが存在しない場合(S152:No)、オーケストレーション制御部570は、次の処理を行う。
 オーケストレーション制御部570は、選択したデータ処理情報のOUTPUTローカルアクセス値が100%であるか否か判定する(S155)。すなわち、オーケストレーション制御部570は、選択したデータ処理情報に係る処理の出力先が、ローカルのノードに限定されているか否か判定する。
 OUTPUTローカルアクセス値が100%である場合(S155:Yes)、オーケストレーション制御部570は、エラーが発生したとして処理を終了とする。なぜなら、S152の判定が「No」であり、且つ、OUTPUTローカルアクセス値を100%とする条件は、満たすことができないからである。
 OUTPUTローカルアクセス値が100%ではない場合(S155:No)、オーケストレーション制御部570は、上記のS154の処理に進む。
 なお、OUTPUTローカルアクセス値の条件が目標値である場合、オーケストレーション制御部570は、OUTPUTローカルアクセス値が100%であっても(つまり、S155の判定が「Yes」であっても)、S154の処理に進んでもよい。
 以上のボトムアップ処理により、登録処理グループに属するデータ処理情報に関し、ノードリストが生成される。これにより、オーケストレーション制御部570は、図12に示す処理において、物理リソースを確保可能か否か判定することができるようになる。
 図14は、トップダウン処理の例を示すフローチャートである。本処理は、図12のS123に相当する。
 図14に示すS161~S176の処理は、S162(S142に相当)、S163(S143に相当)及びS165(S145に相当)を除き、図13に示すS141~S156の処理と同様である。そこで、以下では、S162、S163及びS165の処理のみを説明し、図13と同様の処理については説明を省略する。
 S162において、オーケストレーション制御部570は、未処理の中でシーケンス番号が最大のデータ処理情報を選択する(S162)。つまり、多段処理における後段のデータ処理情報から順に処理を実行する。
 S163において、オーケストレーション制御部570は、選択したデータ処理情報のシーケンス番号が「最大値」であるか否か判定する(S163)。
 シーケンス番号が「最大値」である場合(S163:Yes)、オーケストレーション制御部570は、S164の処理に進む。シーケンス番号が「最大値」でない場合(S163:No)、オーケストレーション制御部570は、S165の処理に進む。
 S165において、オーケストレーション制御部570は、変数PN1に現段階で利用可能なノードの数を代入し(S165)、S166の処理に進む。ただし、この変数PN1は、以下のように、図13のS145とは異なる方法で算出されてよい。
 例えば、オーケストレーション制御部570は、
PN1 = min(PNS/ILA2-PNS,最大ノード数-PNS) …(式2)
を算出する。
 ここで、変数ILA2は、前回のループ処理で選択されたデータ処理情報のINPUTローカルアクセス値を示す。つまり、多段処理における、前段のシーケンス番号の処理に関するINPUTローカルアクセス値を示す。これにより、前段の処理のINPUTローカルアクセス値に基づいて、本段の処理に利用可能なノード数を算出することができる。他の変数については、図13で説明したとおりである。
 以上のトップダウン処理により、登録処理グループに属するデータ処理情報に関し、ノードリストが生成される。これにより、オーケストレーション制御部570は、図12に示す処理において、物理リソースを確保可能か否か判定することができるようになる。
 ボトムアップ処理及びトップダウン処理の何れによっても、物理リソースを確保可能か否か判断することができるが、選択される処理によって、各データ処理情報に係る仮想マシンが配置されるノード、及びその仮想マシンに提供される物理リソースなどが異なり得る。
 以上の処理により、ノードに仮想マシンが生成(配置)されると共に、その仮想マシンに分析処理に係るソフトウェアがインストールされる。
 図15は、リプロビジョニング処理の例を示すフローチャートである。本処理は、図11のS106の処理に相当する。
 リソース割当制御部540は、リプロビジョニング処理の依頼を受信すると、以下の処理を実行する(S301)。
 リソース割当制御部540は、依頼された全てのノードについて、S302~S306の処理を完了したか否か判定する(S302)。全て完了した場合(S302:Yes)、リソース割当制御部540は、処理を終了する。
 未処理のノードが残っている場合(S302:No)、リソース割当制御部540は、未処理のノードの1つを選択する(S303)。
 リソース割当制御部540は、その選択したノードに、移動又は削除の対象の仮想マシンが存在するか否か判定する(S304)。
 そのような仮想マシンが存在しない場合(S304:No)、リソース割当制御部540は、S302に戻り、残りの未処理のノードについて同様の処理を行う。
 そのような仮想マシンが存在する場合(S304:Yes)、リソース割当制御部540は、選択したノードにおける、移動又は削除の対象の仮想マシンを特定する(S305)。
 そして、リソース割当制御部540は、特定した仮想マシンの移動又は削除を行う(S306)。リソース割当制御部540は、この処理をハイパーバイザ制御部530に依頼してもよい。この依頼を受信したハイパーバイザ制御部530は、S303で選択されたノードから、特定された仮想マシンを移動又は削除する。つまり、ハイパーバイザ制御部530は、S303で選択されたノードにおいて、その特定された仮想マシンに割り当てられていた物理リソースを解放する。
 これらの処理が完了した後、リソース割当制御部540は、S302の処理に戻り、残りの未処理のノードについて同様の処理を行う。
 以上の処理により、ノードにおいて仮想マシンに確保されていた物理リソースが解放される。これにより、この物理リソースが解放されたノードに、新たな仮想マシン(例えば、優先度の高い)を生成することができるようになる。
 図16は、データ格納処理の例を示すフローチャートである。
 分散ファイルシステム制御部520は、データブロックの格納要求を受信すると、以下の処理を実行する(S501)。このデータブロックは、クライアント50から格納要求として送信されたデータセットから分割されたものであってよい。
 分散ファイルシステム制御部520は、データセット情報テーブル1000の中に、格納対象のデータブロックに対応するデータセットIDが存在するか否かを判定する(S503)。
 適合するデータセットIDが存在しない場合(S503:No)、分散ファイルシステム制御部520は、通常のデータブロックの格納処理を行い(S504)、処理を終了する。つまり、新規のデータブロックの格納処理を行う。
 適合するデータセットIDが存在する場合(S503:Yes)、分散ファイルシステム制御部520は、格納対象のデータブロックの格納先のノードを選定する(S505)。例えば、分散ファイルシステム制御部520は、S503において適合したデータセットIDを含むデータセット情報に設定されているノード(例えば、プライマリデータ格納ノード1040に格納されているノード)の中から、条件(例えば、プライマリデータ格納方法1050の条件)に適合するノードを選定する。
 次に、分散ファイルシステム制御部520は、格納対象のデータブロックを、その適合したデータセット情報に含まれる格納数1550の分、ノード111に格納し終えたか否か判定する(S506)。すなわち、分散ファイルシステム制御部520は、格納対象のデータブロックとそのレプリカデータの数が、格納数1550に一致したか否かを判定する。
 まだデータブロックを格納する必要がある場合(S506:No)、分散ファイルシステム制御部520は、格納対象のデータブロックを、格納先のノードに格納する(S507)。分散ファイルシステム制御部520は、格納先のノードのファイルシステム制御部510に、データブロックの格納処理を依頼してよい。格納処理が完了した後、分散ファイルシステム制御部520は、S506の処理に戻る。
 格納数1550の分、データブロックを格納し終えた場合(S506:Yes)、分散ファイルシステム制御部520は、データブロック格納情報テーブル1500を更新し(S508)、処理を終了する。例えば、分散ファイルシステム制御部520は、データブロックの格納先を、格納場所1560に登録する。
 以上の処理により、格納対象のデータブロック及びレプリカデータが、各ノードに分散格納される。
 本実施形態によれば、多段分析処理に関する各ソフトウェア及びデータを、各ノードに適切に配置することができる。これにより、ノード間のネットワーク帯域に対する負荷を低減することができる。また、処理の実行においてデータアクセス時に発生するオーバーヘッドを低減することができる。
 上述した実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
 オーケストレーション制御部570は、何れのノードで実行されてもよい。オーケストレーション制御部570を実行するノードは、所定の条件によって決定されてもよい。複数のノードの内の一部のノードだけがオーケストレーション制御部570を有してもよい。
 オーケストレーション制御部570は、複数のノードの内の少なくとも1つのノードに接続された管理マシンが有してもよい。この場合は、何れのノードもオーケストレーション制御部570を有さなくてもよい。管理マシンは、複数のノードが接続されている通信ネットワーク又は別の通信ネットワークを介して、複数のノードの内の少なくとも1つのノードに接続される。
 1:分散システム 110:ネットワーク 111:ノード 121:仮想マシン 200:分散ファイルシステム 700:記憶装置
 

 

Claims (10)

  1.  複数のファイルを構成する複数のデータブロックを分散して記憶するようになっており、通信ネットワークに接続され複数の仮想マシンを実行する複数の物理マシンと、
     前記複数の物理マシンのうちの少なくとも1つに接続された管理マシンと
    を有し、
     前記複数の物理マシン及び前記管理マシンのうちの少なくとも1つである対象マシンが、
      第1処理とその第1処理によって出力されるファイルである出力ファイルを入力とする第2処理とを含んだ多段処理における前記第1処理と前記第2処理との関係性に基づいて、前記第1処理を実行する第1仮想マシンの配置先の物理マシンと、前記出力ファイルを構成する1以上のデータブロックの格納先とする1以上の物理マシンと、前記第2処理を実行する第2仮想マシンの配置先の物理マシンと、を決定する
    分散システム。
  2.  前記第1処理と前記第2処理の関係性とは、前記第2処理が要求するローカルアクセス値を満たすことであり、
     前記ローカルアクセス値とは、前記第2処理に入力される前記出力ファイルを構成する複数のデータブロックの内、前記第2仮想マシンの配置先の物理マシンに格納されるデータブロックの割合に関する値である
    請求項1に記載の分散システム。
  3.  前記対象マシンは、前記第2処理が要求するローカルアクセス値を満たすように、前記第1仮想マシン及び前記第2仮想マシンの配置先、並びに、前記出力ファイルを構成する各データブロックの格納先を決定できない場合、前記出力ファイルを構成するデータブロックのレプリカであるレプリカデータを、前記第2仮想マシンの配置先の物理マシンに格納するようになっている
    請求項2に記載の分散システム。
  4.  前記対象マシンは、前記レプリカデータを所定数以上作成しなければ、前記第2処理が要求するローカルアクセス値を満たすことができない場合、その旨のエラーを出力するようになっている
    請求項3に記載の分散システム。
  5.  前記対象マシンは、前記第2仮想マシンが要求するリソースを提供可能な物理マシンの中から、前記第2仮想マシンの配置先の物理マシンを決定するようになっている
    請求項2に記載の分散システム。
  6.  前記対象マシンは、1つのファイルを構成する複数のデータブロックの内の所定数以上のデータブロックを、1つの物理マシンに格納するようになっている
    請求項3に記載の分散システム。
  7.  前記対象マシンは、前記第2処理が要求するローカルアクセス値を、前記第1処理が要求するローカルアクセス値よりも大きく設定するようになっている
    請求項2に記載の分散システム。
  8.  前記第1処理はバッチ型の処理であり、前記第2処理は対話型の処理である
    請求項7に記載の分散システム。
  9.  通信ネットワークに接続され複数のファイルを構成する複数のデータブロックを分散して記憶するようになっており、分散システムを構成する複数の物理マシンと、前記通信ネットワーク又は別の通信ネットワークを介して前記複数の物理マシンのうちの少なくとも1つの物理マシンに接続される管理マシンとのうちのいずれかである計算機であって、
     第1処理とその第1処理によって出力されるファイルである出力ファイルを入力とする第2処理とを含んだ多段処理における前記第1処理と前記第2処理との関係性を表す情報である管理情報を記憶する記憶資源と、
     前記記憶資源に接続されたプロセッサと
    を有し、
     前記プロセッサが、第1処理とその第1処理によって出力されるファイルである出力ファイルを入力とする第2処理とを含んだ多段処理における前記第1処理と前記第2処理との関係性に基づいて、前記第1処理を実行する第1仮想マシンの配置先の物理マシンと、前記出力ファイルを構成する1以上のデータブロックの格納先とする1以上の物理マシンと、前記第2処理を実行する第2仮想マシンの配置先の物理マシンと、を決定する
    計算機。
  10.  通信ネットワークに接続され複数のファイルを構成する複数のデータブロックを分散して記憶するようになっており、分散システムを構成する複数の物理マシンに仮想マシンを配置する方法であって、
     第1処理とその第1処理によって出力されるファイルである出力ファイルを入力とする第2処理とを含んだ多段処理における前記第1処理と前記第2処理との関係性を表す情報である管理情報から前記関係性を特定し、
     前記特定された関係性に基づいて、前記第1処理を実行する第1仮想マシンの配置先の物理マシンと、前記出力ファイルを構成する1以上のデータブロックの格納先とする1以上の物理マシンと、前記第2処理を実行する第2仮想マシンの配置先の物理マシンと、を決定する
    仮想マシンの配置方法。
     

     
PCT/JP2014/078972 2014-10-30 2014-10-30 分散システム、計算機、及び、仮想マシンの配置方法 WO2016067424A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US15/500,140 US10585691B2 (en) 2014-10-30 2014-10-30 Distribution system, computer, and arrangement method for virtual machine
JP2016556132A JP6212655B2 (ja) 2014-10-30 2014-10-30 分散システム、計算機、及び、仮想マシンの配置方法
PCT/JP2014/078972 WO2016067424A1 (ja) 2014-10-30 2014-10-30 分散システム、計算機、及び、仮想マシンの配置方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/078972 WO2016067424A1 (ja) 2014-10-30 2014-10-30 分散システム、計算機、及び、仮想マシンの配置方法

Publications (1)

Publication Number Publication Date
WO2016067424A1 true WO2016067424A1 (ja) 2016-05-06

Family

ID=55856808

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/078972 WO2016067424A1 (ja) 2014-10-30 2014-10-30 分散システム、計算機、及び、仮想マシンの配置方法

Country Status (3)

Country Link
US (1) US10585691B2 (ja)
JP (1) JP6212655B2 (ja)
WO (1) WO2016067424A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109949111A (zh) * 2019-03-06 2019-06-28 深圳市智税链科技有限公司 电子票据标识分配方法、电子票据生成方法、装置及系统

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015172107A1 (en) 2014-05-09 2015-11-12 Nutanix, Inc. Mechanism for providing external access to a secured networked virtualization environment
US10606499B2 (en) * 2015-09-11 2020-03-31 Hitachi, Ltd. Computer system, storage apparatus, and method of managing data
US10642896B2 (en) 2016-02-05 2020-05-05 Sas Institute Inc. Handling of data sets during execution of task routines of multiple languages
US10650045B2 (en) 2016-02-05 2020-05-12 Sas Institute Inc. Staged training of neural networks for improved time series prediction performance
US10650046B2 (en) * 2016-02-05 2020-05-12 Sas Institute Inc. Many task computing with distributed file system
US10795935B2 (en) 2016-02-05 2020-10-06 Sas Institute Inc. Automated generation of job flow definitions
US11579861B2 (en) 2016-02-12 2023-02-14 Nutanix, Inc. Virtualized file server smart data ingestion
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
US11195100B2 (en) * 2016-08-17 2021-12-07 International Business Machines Corporation Determining applications based on interactions of different electronic devices
US10824455B2 (en) 2016-12-02 2020-11-03 Nutanix, Inc. Virtualized server systems and methods including load balancing for virtualized file servers
US11562034B2 (en) 2016-12-02 2023-01-24 Nutanix, Inc. Transparent referrals for distributed file servers
US11568073B2 (en) 2016-12-02 2023-01-31 Nutanix, Inc. Handling permissions for virtualized file servers
US11294777B2 (en) 2016-12-05 2022-04-05 Nutanix, Inc. Disaster recovery for distributed file servers, including metadata fixers
US11281484B2 (en) 2016-12-06 2022-03-22 Nutanix, Inc. Virtualized server systems and methods including scaling of file system virtual machines
US11288239B2 (en) 2016-12-06 2022-03-29 Nutanix, Inc. Cloning virtualized file servers
USD898059S1 (en) 2017-02-06 2020-10-06 Sas Institute Inc. Display screen or portion thereof with graphical user interface
USD898060S1 (en) 2017-06-05 2020-10-06 Sas Institute Inc. Display screen or portion thereof with graphical user interface
US10721294B2 (en) * 2017-07-12 2020-07-21 Telefonaktiebolaget Lm Ericsson (Publ) Apparatus and method for subscription-based resource throttling in a cloud environment
US11562223B2 (en) * 2018-04-24 2023-01-24 EMC IP Holding Company LLC Deep reinforcement learning for workflow optimization
US11086826B2 (en) 2018-04-30 2021-08-10 Nutanix, Inc. Virtualized server systems and methods including domain joining techniques
US11194680B2 (en) 2018-07-20 2021-12-07 Nutanix, Inc. Two node clusters recovery on a failure
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
US11694303B2 (en) * 2019-03-19 2023-07-04 Electronics And Telecommunications Research Institute Method and apparatus for providing 360 stitching workflow and parameter
US11093138B2 (en) * 2019-11-14 2021-08-17 Vmware, Inc. Optimizing virtual machine storage performance in a stretched cluster
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up
JP2022189454A (ja) * 2021-06-11 2022-12-22 株式会社日立製作所 ファイルストレージシステム、及び管理情報ファイル回復方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130318525A1 (en) * 2012-05-25 2013-11-28 International Business Machines Corporation Locality-aware resource allocation for cloud computing

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9020891B1 (en) * 2010-10-27 2015-04-28 Amazon Technologies, Inc. Reduced locking in a distributed data store
US8732118B1 (en) * 2012-01-13 2014-05-20 Amazon Technologies, Inc. Distributed performance of data aggregation operations
US9727383B2 (en) * 2012-02-21 2017-08-08 Microsoft Technology Licensing, Llc Predicting datacenter performance to improve provisioning
US9582221B2 (en) 2012-08-24 2017-02-28 Vmware, Inc. Virtualization-aware data locality in distributed data processing
US9342355B2 (en) * 2013-06-20 2016-05-17 International Business Machines Corporation Joint optimization of multiple phases in large data processing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130318525A1 (en) * 2012-05-25 2013-11-28 International Business Machines Corporation Locality-aware resource allocation for cloud computing

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109949111A (zh) * 2019-03-06 2019-06-28 深圳市智税链科技有限公司 电子票据标识分配方法、电子票据生成方法、装置及系统
JP2022501752A (ja) * 2019-03-06 2022-01-06 ▲騰▼▲訊▼科技(深▲セン▼)有限公司 電子手形識別子の割り当て方法、電子手形の生成方法、及びその装置とシステム、並びに、記憶媒体及びコンピュータプログラム
US11632441B2 (en) 2019-03-06 2023-04-18 Tencent Technology (Shenzhen) Company Limited Methods, systems, and devices for electronic note identifier allocation and electronic note generation
JP7271045B2 (ja) 2019-03-06 2023-05-11 ▲騰▼▲訊▼科技(深▲セン▼)有限公司 電子手形識別子の割り当て方法、電子手形の生成方法、及びその装置とシステム、並びに、記憶媒体及びコンピュータプログラム
CN109949111B (zh) * 2019-03-06 2023-12-08 深圳市智税链科技有限公司 电子票据标识分配方法、电子票据生成方法、装置及系统

Also Published As

Publication number Publication date
JP6212655B2 (ja) 2017-10-11
US20170277556A1 (en) 2017-09-28
JPWO2016067424A1 (ja) 2017-05-25
US10585691B2 (en) 2020-03-10

Similar Documents

Publication Publication Date Title
JP6212655B2 (ja) 分散システム、計算機、及び、仮想マシンの配置方法
JP5929196B2 (ja) 分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法
US9576039B2 (en) Resource provisioning systems and methods
US10298715B2 (en) Distributed processing system, task processing method, and storage medium
US8874751B2 (en) Candidate set solver with user advice
JP6215481B2 (ja) クラウド環境におけるitインフラ管理のための方法とその装置
US11620168B2 (en) Managing metadata for a distributed processing system with manager agents and worker agents
US20160371121A1 (en) Computer system and load leveling program
JP2016024612A (ja) データ処理制御方法、データ処理制御プログラムおよびデータ処理制御装置
JP2016091555A (ja) データステージング管理システム
JP2020173727A (ja) ストレージ管理装置、情報システム、及びストレージ管理方法
US9805109B2 (en) Computer, control device for computer system, and recording medium
US10671605B2 (en) Managing persistent database result sets
US10838949B2 (en) Shared resource update apparatus and shared resource update method
US10379780B2 (en) Statistics management for scale-out storage
US10083121B2 (en) Storage system and storage method
JP6878369B2 (ja) ボリューム配置管理装置、ボリューム配置管理方法、及びボリューム配置管理プログラム
JP5659751B2 (ja) 管理装置、管理方法、及びプログラム
US10824640B1 (en) Framework for scheduling concurrent replication cycles
JP2015095096A (ja) MapReduceジョブ実行システム、MapReduceジョブ実行方法
EP4113313A1 (en) Control method, information processing device, and control program
CN105518664B (zh) 管理数据库节点
JP2013088920A (ja) 計算機システム及びデータ管理方法
US11249952B1 (en) Distributed storage of data identifiers
JP6210501B2 (ja) データベース管理システム、計算機、データベース管理方法

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: 14905053

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15500140

Country of ref document: US

ENP Entry into the national phase

Ref document number: 2016556132

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14905053

Country of ref document: EP

Kind code of ref document: A1