WO2012131927A1 - 計算機システム及びデータ管理方法 - Google Patents

計算機システム及びデータ管理方法 Download PDF

Info

Publication number
WO2012131927A1
WO2012131927A1 PCT/JP2011/057940 JP2011057940W WO2012131927A1 WO 2012131927 A1 WO2012131927 A1 WO 2012131927A1 JP 2011057940 W JP2011057940 W JP 2011057940W WO 2012131927 A1 WO2012131927 A1 WO 2012131927A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
division
key
data set
divided
Prior art date
Application number
PCT/JP2011/057940
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 PCT/JP2011/057940 priority Critical patent/WO2012131927A1/ja
Priority to US13/977,849 priority patent/US20130297788A1/en
Priority to JP2013506934A priority patent/JP5342087B2/ja
Publication of WO2012131927A1 publication Critical patent/WO2012131927A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • 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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving

Definitions

  • the present invention relates to a technique for combining data in a computer system that processes a large amount of data.
  • the sort / merge join technique is a method of sorting the tables to be joined based on the key values, reading the rows of each table from the top, and merging the rows having the corresponding key values.
  • each table is divided at a position corresponding to the same key value to generate a divided region corresponding to each table, and a sort / merge join technique is performed for each divided region. It is described that tables are joined using. Further, Patent Document 1 describes that a divided area is allocated to processors so that the processor load in the system is not biased.
  • Patent Document 2 describes a matrix index that associates data storage positions with combinations of two or more keys.
  • Patent Document 3 describes a method of leveling the usage amount of each storage area while suppressing the amount of data movement from the existing storage area to the newly added storage area when adding the storage area.
  • data acquired periodically is accumulated, and analysis processing is executed by combining the accumulated data as necessary.
  • FIG. 20 is an explanatory diagram showing an example of data processed in a conventional data analysis system.
  • FIG. 21 is an explanatory diagram showing an example of a schema in conventional data.
  • 22A to 22C are explanatory diagrams illustrating an example of data processed in the conventional analysis processing.
  • the movement history of the user is shown.
  • the data includes a user ID for identifying the user, a position X and a position Y that are coordinate information specifying the position of the user, and a time stamp that is a time when the user moves to the position.
  • the data is converted based on the schema as shown in FIG. Further, the converted data is grouped for each user ID as shown in FIG. 22A, and analysis processing such as tabulation is executed.
  • data composed of one or more records is described as a data set. Further, a data set as shown in FIG. 20 is described as raw data, and data having a structure as shown in FIG. 21 is described as structured data.
  • data in the format shown in FIG. 20 is collected periodically (for example, in units of months), converted into data in the format in FIG. 22A, and then accumulated in the data analysis system. For this reason, when a plurality of data are aggregated and analysis processing for data for one year and analysis processing for a specific month in each year are executed, it is necessary to combine a plurality of data in the format shown in FIG. 22A. .
  • the data analysis system combines two pieces of data as shown in FIG. 22A and FIG. 22B to become data as shown in FIG. 22C.
  • the data that is periodically accumulated may have a different size distribution for each data. For example, in the data of a user whose service usage count differs from month to month, a difference in the size distribution of the data for each month occurs.
  • Patent Document 1 does not describe a method of determining a position (division position) for dividing a table. Generally, in order to divide a table equally, distribution information of keys included in the table is required. When acquiring the key distribution information, the method of scanning the entire table takes time to complete the processing.
  • a typical example of the invention disclosed in the present application is as follows. That is, a computer system in which a plurality of computers execute an analysis process on a data set including a plurality of data composed of keys and data values, wherein each of the computers includes a processor, a memory connected to the processor, A storage device connected to the processor; and a network interface connected to the processor, wherein each of the computers is a key indicating a division position of a divided area obtained by dividing the data set for each predetermined key range.
  • the division information for managing a certain division position key is held for each data set, and all the division position keys included in the division information of each data set are the same, and are stored on the storage area of the plurality of computers.
  • the computer system includes the analysis process.
  • a plurality of tasks are generated for each of the divided areas, the generated tasks are allocated to the respective computers, and the analysis processing is performed by combining the data included in the divided areas of the respective data sets.
  • the divided area having a data size larger than a predetermined threshold is used. It is determined whether or not a certain target area exists, and when it is determined that the target area exists, the target area is divided into a plurality of new divided areas.
  • FIG. 1 is a block diagram illustrating a system configuration of a data analysis system according to the first embodiment of the present invention.
  • the data analysis system includes a client node 10, a master node 20, and a slave node 30, and the nodes are connected to each other via a network 40.
  • the network 40 may be a SAN, LAN, WAN, or the like, but may be any network as long as each node can communicate. Each node may be directly connected.
  • a node indicates a computer.
  • the computer is referred to as a node.
  • the client node 10 is a node used by a user of the data analysis system.
  • the user transmits various instructions to the master node 20 and the slave node 30 using the client node 10.
  • the master node 20 is a node that manages the entire data analysis system.
  • the slave node 30 is a node that executes each process (task) in accordance with an instruction transmitted from the master node 20.
  • This data analysis system is a kind of parallel distributed processing system, and the processing performance of the system can be improved by increasing the number of slave nodes 30.
  • the hardware configuration of the client node 10, the master node 20, and the slave node 30 is the same, and details will be described later with reference to FIG.
  • Each node is connected to storage devices 11, 21, 31 such as HDDs.
  • Each of the storage devices 11, 21, and 31 stores a program for realizing a function included in each node such as an OS.
  • Each program is read from the storage devices 11, 21, and 31 by the CPU (see FIG. 2) and executed by the CPU (see FIG. 2).
  • FIG. 2 is a block diagram illustrating the hardware configuration of the node according to the first embodiment of the present invention.
  • FIG. 2 illustrates the client node 10 as an example, but the master node 20 and the slave node 30 also have the same hardware configuration.
  • the client node 10 includes a CPU 101, a network I / F 102, an input / output I / F 103, a memory 104, and a disk I / F 105, and the respective components are connected to each other via an internal bus or the like.
  • CPU 101 executes a program stored in memory 104.
  • the memory 104 stores a program executed by the CPU 101 and information necessary for executing the program. Note that the program stored in the memory 104 may be stored in the storage device 11. In this case, the data is read from the storage device 11 onto the memory 104 by the CPU 101.
  • the network I / F 102 is an interface for connecting to other nodes via the network 40.
  • the disk I / F 105 is an interface for connecting to the storage device 11.
  • the input / output I / F 103 is an interface for connecting input / output devices such as a keyboard 106, a mouse 107, and a display 108.
  • the user transmits an instruction to the data analysis system using the input / output device and confirms the analysis result.
  • the master node 20 and the slave node 30 do not have to include the keyboard 106, the mouse 107, and the display 108.
  • FIG. 3A is a block diagram illustrating the software configuration of the master node 20 in the first embodiment of the present invention.
  • the master node 20 includes a data management unit 21, a process management unit 22, and a file server (master) 23.
  • the data management unit 21, the processing management unit 22, and the file server (master) 23 are programs stored on the memory 104, and are executed by the CPU 101.
  • the CPU 101 is executing the program.
  • the data management unit 21 manages data processed by the data analysis system.
  • the data management unit 21 includes a data management table T100, a partition table T200, and a key size table T400.
  • the data management table T100 stores management information of data sets processed by the data analysis system. Details of the data management table T100 will be described later with reference to FIG.
  • the data set indicates data composed of a plurality of records.
  • the division table T200 stores management information of divided areas obtained by dividing the data set.
  • the divided area represents a record group in which the data set is divided for each predetermined key range. Details of the division table T200 will be described later with reference to FIG.
  • the key size table T400 stores management information on the data size of each divided area in the data set.
  • One key size table T400 corresponds to one data set.
  • a key size table T400 that manages the data size of the data set of the entire data analysis system. Details of the key size table T400 will be described later with reference to FIG.
  • the process management unit 22 manages parallel processing executed in a distributed manner on each slave node 30.
  • the process management unit 22 includes a program repository 24 that manages a program that generates processes (tasks) to be executed in parallel. That is, the process management unit 22 generates a task to be executed in each slave node 30 from the program repository 24 and instructs the slave node 30 to execute the generated task.
  • the file server (master) 23 manages files that store actual data.
  • the software configuration of the master node 20 may be realized using hardware.
  • FIG. 3B is a block diagram illustrating the software configuration of the slave node 30 according to the first embodiment of the present invention.
  • the slave node 30 includes a processing execution unit 31 and a file server (slave) 32.
  • the process execution unit 31 and the file server (slave) 32 are programs stored on the memory 104 and are executed by the CPU 101.
  • the process is described with the program as the subject, it is assumed that the CPU 101 is executing the program.
  • the process execution unit 31 receives a process (task) execution instruction from the process management unit 22 of the master node 20 and executes a predetermined process (task). That is, the process execution unit 31 generates a process for executing the process (task) based on the received execution instruction of the process (task). By executing the generated process, a plurality of tasks are executed on each slave node 30, and parallel distributed processing is realized.
  • the process execution unit 31 of the present embodiment includes a data addition unit (Map) 33 and a data addition unit (Reduce) 34 that execute the above-described task.
  • the data adding unit (Map) 33 reads data in record units from the input raw data (see FIG. 20), and outputs the read raw data to the data adding unit (Reduce) 34 for each key range.
  • a key range in charge of processing is set in advance.
  • the data adding unit (Map) 33 includes a partition table T300.
  • the data adding unit (Map) 33 specifies the data adding unit (Reduce) 34 that outputs the read data based on the partition table T300.
  • the partition table T300 will be described later with reference to FIGS. 7A and 7B.
  • the data adding unit (Reduce) 34 converts the input raw data into a predetermined format, that is, structured data (see FIG. 21), and outputs the structured data to the distributed file system.
  • the data adding unit (Reduce) 34 includes a key size table T400.
  • the key size table T400 is the same as the key size table T400 included in the data management unit 21. However, in the key size table T400, only the management information related to the divided area of the key range handled by the data adding unit (Reduce) 34 is stored.
  • the file server (slave) 32 manages distributed files.
  • the file server (master) 23 has a function of managing file metadata (directory structure, size, update date and time) and providing one file system in cooperation with the file server (slave) 32.
  • the data adding unit (Map) 33 and the data adding unit (Reduce) 34 access the file server (master) 23 to use the files on the file system and execute various tasks. That is, the data adding unit (Map) 33 and the data adding unit (Reduce) 34 can access the same file system.
  • FIG. 4 is an explanatory diagram illustrating an example of the data management table T100 according to the first embodiment of this invention.
  • the data management table T100 includes a data ID (T101) and a division table name T102.
  • the data ID (T101) stores the identifier of the data set.
  • the division table name T102 stores the name of the division table T200 corresponding to the data set.
  • Each entry of the data management table T100 corresponds to one data set managed by the data analysis system.
  • the data set corresponds to one table (relation) in a normal database.
  • 5A and 5B are explanatory diagrams illustrating an example of the division table T200 according to the first embodiment of the present invention.
  • FIG. 5A shows an example of a partition table T200 of a data set whose partition table name T102 is “log01.part”.
  • FIG. 5B shows an example of a partition table T200 whose partition table name T102 is “log02.part”.
  • the division table T200 stores management information indicating the division method of each data set processed by the data analysis system.
  • the division table T200 includes a division table name T201, a data file name T202, a key (T203), and an offset T204.
  • the division table name T201 stores the name of the division table T200.
  • the division table name T201 is the same as the division table name T102.
  • the data file name T202 stores the name of the file that stores the data corresponding to the divided area.
  • Key (T203) stores a key value indicating the key range of the divided area, that is, a key value indicating the division position of the data set.
  • the key (T203) stores a key value representing the end point in the divided area.
  • the offset T204 stores an offset corresponding to the value of the division position in the data set.
  • the offset of the key corresponding to the key (T203) is stored in the offset T204.
  • the start position of the divided area corresponds to the key (T203) and offset T204 of the previous entry. Since the key indicating the start position of the first divided area and the key indicating the end position of the last divided area are not defined, they are not described in the division table T200.
  • Each entry of each division table T200 corresponds to one division area managed by the data analysis system.
  • the division table name T101 is “log01.part”, and corresponds to the division table T200 shown in FIG. 5A.
  • the first entry of the division table T200 shown in FIG. 5A corresponds to the first division area.
  • the first entry indicates that the data of the divided area is stored in a file whose data file name T202 is “log01 / 001.dat”.
  • the key (T203) of the first entry is “034a”, it indicates that the key range of the first divided area is less than “034a”. Further, since the offset T204 of the first entry is “280”, this indicates that the data of the first divided area is stored in the range of the offset on the file “0 to 279”.
  • the key range of the corresponding division area is “034a” or more and less than “172d”, and the data file name T202 is “log01 / 002.dat”. Indicates that there is. Further, since the data file name T202 is different from the first entry, the offset is counted from “0”. Therefore, it indicates that the data of the divided area corresponding to the range where the offset is “0 to 218” is stored.
  • the key range of the corresponding division area is “172d” or more and less than “328b”, and the data file name T202 is “log01 / 002.dat”. Indicates that there is. Further, since the data file name T202 matches the second entry, it indicates that the data of the divided area corresponding to the range where the offset on the file is “219 to 455” is stored.
  • the division table name T101 is “log02.part”, and corresponds to the division table T200 shown in FIG. 5B.
  • the data file name T202 and offset T204 of each entry stored in the division table T200 shown in FIG. 5B are different from the entries in the division table T200 shown in FIG. 5A.
  • the keys (T203) representing the division positions of both division tables T200 coincide with each other.
  • the division positions of the divided areas in the data sets that may be combined are managed so as to be consistent.
  • two or more data sets can be combined in parallel. That is, it is possible to associate entries with the same key (T203) in the partition table T200 of the data set to be combined, and it is possible to execute the combining process in parallel for each divided region.
  • the file includes a plurality of records composed of one key and one or more values as shown in FIG. 22A.
  • Each file is stored in the distributed file system in a format sorted based on the key. As a result, when combining processing is performed for each divided region, it becomes possible to merge and combine the same keys.
  • the files that store the data of different divided areas may be the same.
  • the second entry and the third entry are the same file.
  • the key range of each entry is different.
  • the number of files is three, but the number of divided areas is four, which are different.
  • the number of files matches the degree of parallelism of data addition processing in the data analysis system.
  • the number of divided areas depends on the parallelism of data analysis processing. Accordingly, since the number of files and the number of divided areas depend on different processes, there is no dependency between them, and the number may be determined in any way.
  • FIG. 6 is an explanatory diagram illustrating an example of the partition table T300 according to the first embodiment of this invention.
  • the partition table T300 divides a newly added data set (raw data), and stores information used for distributing the data in a data adding unit (Reduce) 34 that executes a task.
  • the partition table T300 includes a key (T301) and a destination T302.
  • T301 stores a key value representing a division position of the input data set.
  • the destination T302 stores destination information indicating the position of the data adding unit (Reduce) 34 in charge of processing the divided data set.
  • the node and the data addition unit (Reduce) 34 are specified by destination information including an IP address and a port.
  • 7A and 7B are explanatory diagrams illustrating an example of the key size table T400 in the first embodiment of the present invention.
  • the key size table T400 stores the data size of the divided area.
  • the key size table T400 includes a key (T401) and a size T402.
  • T401 is the same as key (T203).
  • the size T402 stores the data size of the divided area with the key (T401) as the division position.
  • the size T402 stores the total value of the data sizes of the divided areas to be combined.
  • the key size table T400 is dynamically generated at the time of executing a combination process and an analysis process described later, and a data addition process.
  • FIG. 8 is a flowchart for explaining data combining processing and analysis processing in the first embodiment of the present invention.
  • the join process is always executed together with the analysis process. That is, after the data for one record is combined by the combining process, the analysis process is executed on the data.
  • the combination processing and analysis processing are executed by the data management unit 21 that has received an instruction from the user.
  • the instruction from the user includes the data ID of the data set to be combined.
  • the master node 20 creates a key size table T400 corresponding to the data set to be processed (step S101).
  • the data management unit 21 searches the data management table T100 based on the data ID included in the instruction transmitted from the user, and acquires the division table name T102 from the corresponding entry.
  • the data management unit 21 acquires a partition table T200 corresponding to the acquired partition table name T102.
  • the data management unit 21 specifies a key value indicating a division position for each division area based on the obtained division table T200, and calculates a data size of a data set to be combined.
  • the data management unit 21 creates a key size table T400 based on the above processing result.
  • the corresponding division tables T200 are as shown in FIGS. 5A and 5B, respectively.
  • the data management section 21 adds the data sizes of the two data sets for each divided region by executing the above-described processing, and creates a key size table T400 as shown in FIG. 7A.
  • the master node 20 generates a plurality of tasks composed of a combination process and an analysis process, and activates each task by assigning each generated task to each slave node 30 (step S102).
  • the process management unit 22 reads a program necessary for the process from the program repository 24 and generates tasks for the number of parallels designated by the user. Further, the process management unit 22 causes the generated task to be executed on each slave node 30.
  • the parallel number is smaller than the number of entries in the key size table T400 created in step S101, the number of entries is set as the parallel number, and tasks corresponding to the number of entries are executed on the slave node 30.
  • the master node 20 assigns a divided area to each task (step S103).
  • the data management unit 21 assigns a divided area corresponding to each entry of the key size table T400 created in step S101 to each task generated in step S102.
  • the data management unit 21 allocates a divided area to each task so that the data sizes are equal based on the size T402 of the key size table T400.
  • the data management unit 21 sorts the entries in the key size table T400 based on the size T402, and the task having the smaller allocated data size is performed in order from the larger data size.
  • An allocation method is conceivable.
  • the data management unit 21 transmits the data file name and the offset position of the file to be combined to the slave node 30 to which the task is allocated after the allocation of the divided areas is completed.
  • the master node 20 transmits a task execution instruction to each slave node 30 to which the task is assigned, and ends the process (step S104).
  • the data management unit 21 transmits a task execution instruction to each slave node 30 to which the task is assigned.
  • the slave node 30 that has received the instruction from the master node 20 accesses the file server (master) 23 and, based on the data file name and offset position received from the data management unit 21, designates the designated file with the designated offset. Read from position.
  • Each slave node 30 matches the key of each read file and executes a combination process. Further, the slave node 30 outputs the result of the combination processing for each record to the analysis processing task being executed in the same slave node 30.
  • a task is generated for each of the four divided areas, and the above-described combining process is executed by each task.
  • the data addition process is a process for adding a new data set when an existing data set is stored in the data set in which the data management table T100 and the partition table T200 are created, that is, the distributed file system. .
  • each divided area is different for each data set. For this reason, if the divided areas of the respective data sets are combined without correcting the dividing position, the data size varies between the divided areas. As a result, the processing amount of the task that executes the analysis processing varies, and the efficiency of parallel processing decreases.
  • the division position is controlled so that the data size of each divided area is equal to or less than a predetermined reference value when all data sets that can be combined are combined.
  • the data size of each divided area is below the reference value, and the difference in processing amount between tasks of analysis processing is leveled.
  • the divided area is subdivided and task control overhead of the join processing and analysis processing occurs, and if the allocated divided area becomes smaller, multiple tasks are assigned to the task to which the divided area is assigned. Areas are allocated and the amount of processing executed by one task can be increased.
  • the above-mentioned predetermined reference value affects the difference in task throughput, so it is desirable to determine it based on the allowable task throughput difference.
  • the predetermined reference value may be a data amount such that an execution time when one task processes a predetermined data amount is equal to or less than a time allowed as a difference in processing time between tasks.
  • the data added by the data addition process is input in a format as shown in FIG.
  • data in the format as shown in FIG. 22A is converted into a format grouped by user ID and stored in the distributed file system.
  • the data set in the format shown in FIG. 20 is referred to as raw data, and the data set in FIG.
  • FIG. 9 is a flowchart for explaining data addition processing in the first embodiment of the present invention.
  • the data addition processing is executed when the user inputs raw data to the distributed file system realized by the file server (master) 23 and the file server (slave) 32.
  • the data management unit 21 samples the input raw data and analyzes the appearance frequency of the key (step S201).
  • the data management unit 21 samples the records included in the raw data at random.
  • the data management unit 21 creates a key list in which the first field of the read record is the key.
  • the data management unit 21 can read data for one record by detecting a line feed code.
  • the data management unit 21 may execute the sampling processes in parallel. In this case, the data management unit 21 divides the raw data into a plurality of pieces so that the data sizes are equal, and a sampling process is executed for each divided raw data.
  • the data management unit 21 assigns the execution task of the sampling process to each slave node 30, and further assigns the raw data divided into the execution task.
  • the data management unit 21 receives the result of the sampling process from the process execution unit 31 of each slave node 30 and totals the results of the sampling process received from all the slave nodes 30 to create a key list.
  • the data management unit 21 determines a key value to be a division position of the raw data based on the created key list (step S202).
  • the division process is a division process for outputting input raw data in step S204 described later, and is a process different from the division process in the division table T200.
  • the existing division position is not changed in the process of step S204. Therefore, the division position of the raw data needs to match the division position of the division table T200 of the existing data set.
  • the data management unit 21 refers to the division table T200 and creates a key size table T400 including division positions of all existing data sets. For example, a key size table T400 as shown in FIG. 7A is created. However, at this time, no value is stored in the size T402.
  • the data management unit 21 specifies a divided area corresponding to each sampled key, and increments the data size of the data corresponding to the key to the size T402 of the corresponding entry in the key size table T400.
  • the data management unit 21 can obtain the distribution of the sampled keys.
  • the key is “125d” in the size T402 of the entry whose key (T401) is “172d”. Is incremented.
  • the data management unit 21 merges adjacent divided areas of the key size table T400 so that the parallel number specified by the user matches the number of divided areas. At this time, it is desirable that the data size of each divided area after merging is equal.
  • the key size table T400 whose key distribution is shown in FIG. 7B has four divided areas, so it is necessary to merge them into two divided areas. There is. Therefore, the data management unit 21 merges the entry whose key (T401) is “034a” and the entry “172d” into one divided area, and combines the entry whose key (T401) is “328b” and the blank entry. Merge as one divided area.
  • the data management unit 21 stores the merge result in the key (T301) of the partition table T300.
  • the merge process described above if the number of entries in the key size table T400 is equal to or greater than the parallel number specified by the user, the merge process is not executed and the number of entries is the parallel number.
  • step S202 The above is the processing in step S202.
  • the data management unit 21 calculates the data size of all data sets that may be combined in the analysis process (step S203). Further, the data management unit 21 creates a key size table T400 based on the calculation result.
  • the data management unit 21 refers to the data management table T100 and acquires the division table name T102 of each data set. Furthermore, the data management unit 21 acquires a list of the corresponding partition table T200 based on the acquired partition table name T102.
  • the data management unit 21 creates a key size table T400 including the key (T203) of the acquired division table T200. Further, the data management unit 21 calculates the data size of each divided area for each division table T200, and adds the calculated data size to the size (T402) of the created key size table T400.
  • the key size table T400 regarding all the existing data sets existing on the distributed file system can be created by executing the same processing for all the obtained divided tables T200.
  • a key size table T400 as shown in FIG. 7A is created by executing the above-described processing on the division table T200 shown in FIGS. 5A and 5B.
  • step S203 The above is the processing in step S203.
  • the data management unit 21 performs a grouping process on the raw data based on the partition table T300 representing the merge result in step S202 (step S204).
  • the grouping process is a process of collecting records included in the raw data for each key (user ID in the example shown in FIG. 20).
  • the data management unit 21, the data addition unit (Map) 33, and the data addition unit (Reduce) 34 execute processing in cooperation.
  • the data addition unit (Map) 33 and the data addition unit (Reduce) 34 each execute parallel processing in accordance with an instruction from the data management unit 21.
  • the number of entries in the partition table T300 is the degree of parallelism of the data adding unit (Reduce) 34 to which tasks are allocated.
  • the degree of parallelism of the data adding unit (Map) 33 to which tasks are assigned is irrelevant to the number of entries in the partition table T300 and is specified by the user.
  • Map Map
  • Reduce Reduce
  • the data management unit 21 divides the raw data so that the data size is constant according to the parallel number specified by the user. Further, the data management unit 21 calculates an offset position, which is each division position of the division area generated by dividing the raw data, and a data size of the division area. The offset position is adjusted by scanning a part of the raw data so as to coincide with the record boundary.
  • the data management unit 21 generates Map tasks for the number of parallels designated by the user in cooperation with the process management unit 22 and assigns the generated Map tasks to each data addition unit (Map) 33. At this time, each data adding unit (Map) 33 is transmitted with the offset position of the divided area, the data size of the divided area, and the file name of the raw data.
  • the data management unit 21 generates Reduce tasks for the number of entries in the partition table T300 in cooperation with the process management unit 22.
  • the data management unit 21 associates each entry of the partition table T300 with the data addition unit (Reduce) 34.
  • the data management unit 21 assigns a Reduce task for processing a divided region in the key range corresponding to the key (T301) to each associated data addition unit (Reduce) 34.
  • the data management unit 21 transmits the entry corresponding to the transmitted key range in the key size table T400 created in step S202, to the data addition unit (Reduce) 34.
  • the corresponding entry of the key size table T400 includes the first entry and the second entry of FIG. 7A. It is. Therefore, the data management unit 21 transmits the first entry and the second entry to the corresponding data addition unit (Reduce) 34.
  • the data management unit 21 acquires the destination information (address: port number) of the data adding unit (Reduce) 34 and stores the acquired destination information in the destination T302 of the corresponding entry in the partition table T300.
  • the process management unit 22 transmits the completed partition table T300 to all the data addition units (Maps) 33.
  • step S204 The above is the processing in step S204.
  • the data adding unit (Map) 33 and the data adding unit (Reduce) 34 in step S204 execute the data output process after the grouping process is executed. Details of the grouping process will be described later with reference to FIG. 10, and details of the data output process will be described later with reference to FIG.
  • the data management unit 21 updates the division table T200 and ends the process (step S205).
  • the data management unit 21 updates the division table T200 managed by itself based on the division table T200 received from each data addition unit (Reduce) 34.
  • the received division table T200 is a table after the data adding unit (Reduce) 34 has executed processing (see FIGS. 10 and 11) described later.
  • the data adding unit (Reduce) 34 processes only a data set in a part of the key range.
  • the present embodiment is characterized in that all the division tables T200 in the data analysis system are updated based on the division table T200 updated by one data addition unit (Reduce) 34.
  • the data management unit 21 merges the input raw data division table T200 received from each data addition unit (Reduce) 34 into one, and the merged table is input to the raw data division table T200. Manage as.
  • the data management unit 21 adds an entry corresponding to the raw data division table T200 to the data management table T100.
  • step S204 details of the grouping process in step S204 will be described.
  • FIG. 10 is a flowchart for explaining the details of the grouping process in the first embodiment of the present invention.
  • the slave node 30 performs a sort process on the input raw data (step S301).
  • the data adding unit (Map) 33 reads records one by one from the raw data.
  • the data adding unit (Map) 33 acquires the destination information of the data adding unit (Reduce) 34 from the partition table T300 based on the key of the read record. That is, the data adding unit (Reduce) 34 for processing the read record is specified.
  • the data adding unit (Map) 33 classifies each record read for each destination.
  • the record group classified for each destination is referred to as a segment.
  • the data adding unit (Map) 33 reads all the records included in the divided raw data that it is in charge of, and then sorts the records included in each segment based on the key.
  • step S301 The above is the processing in step S301.
  • the slave node 30 transmits the sorted segments to the data adding unit (Reduce) 34 (step S302).
  • the data adding unit (Map) 33 transmits the sorted segments to the data adding unit (Reduce) 34 corresponding to the destination information acquired in Step S301.
  • Each data adding unit (Reduce) 34 receives a segment transmitted from the data adding unit (Map) 33 of each slave node 30.
  • the slave node 30 that has received the segment from the data adding unit (Map) 33 merges the received segment based on the key, and ends the process (step S303).
  • the data adding unit (Reduce) 34 sequentially reads all received segments, and merges and joins the segments having the same key.
  • the data adding unit (Reduce) 34 converts the records included in the merged segment into structured data as shown in FIG. By the process described above, a plurality of records are collected into one record having the same key.
  • FIG. 11 is a flowchart for explaining data output processing in the first embodiment of the present invention.
  • the data adding unit (Reduce) 34 outputs structured data having a format as shown in FIG. 22A to the distributed file system by executing a data output process. Tasks are executed in the data adding unit (Reduce) by the number of parallelism. At this time, the file names output by the data adding unit (Reduce) 34 are different.
  • the data adding unit (Reduce) 34 adds the data size of the raw data to the key size table T400, and calculates the data size of each divided area after the raw data is added.
  • the data adding unit (Reduce) 34 executes a division process of the divided area when there is a divided area having a data size equal to or larger than a predetermined threshold.
  • the data adding unit (Reduce) 34 also updates the division table T200 of the existing data set managed by itself when the division process of the divided area is executed. Further, the data adding unit (Reduce) 34 transmits the updated division table T200 to the data management unit 21. Based on the updated division table T200, the data management unit 21 executes an update process (step S205) of the division table T200.
  • the data adding unit (Reduce) 34 creates a division table T200 for the input raw data, and transmits the division table T200 created after the processing is completed to the data management unit 21.
  • the data adding unit (Reduce) 34 creates a key size table T400 in which only the key included in the key size table T400 received from the data management unit 21 in step S204 is stored.
  • the created key size table T400 is a table in which the data size of a predetermined divided area of the raw data is stored.
  • the created key size table T400 is also referred to as an additional key size table T400.
  • the initial value of the size T402 is set to “0”.
  • the key size table T400 received from the data management unit 21 is a table for managing the data sizes of all data sets on the distributed file system included in the key range handled by the data addition unit (Reduce) 34.
  • the key size table T400 is referred to as an all data key size table T400.
  • the data adding unit (Reduce) 34 When the data output process is started, the data adding unit (Reduce) 34 outputs the record created in step S303, and determines whether or not the record is included in a divided area different from the record output last time. (Step S401).
  • the data adding unit (Reduce) 34 refers to the key (T402) of the key size table T400 for addition, and determines whether the output record is included in a different divided area from the record output last time. judge.
  • the records sorted based on the keys are sequentially output, it can be determined whether or not the output records are included in a predetermined key range, that is, a predetermined divided area.
  • the first output record is determined to be included in the same divided area.
  • the data adding unit (Reduce) 34 executes a process for confirming the data size of the divided area to which the previous record has been added (step S405), and proceeds to step S402. .
  • the data size confirmation process will be described later with reference to FIG.
  • the data adding unit (Reduce) 34 writes the record created in Step S303 to the distributed file system (Step S402).
  • the data adding unit (Reduce) 34 creates record statistical information including the key value of the written record, the offset position on the file in which the record is written, and the data size of the record, and the created record Save statistical information. This is record statistical information of raw data.
  • the data adding unit (Reduce) 34 updates the key size table T400 (step S403).
  • the data adding unit (Reduce) 34 specifies a divided area of the key range including the key of the record written in step S402.
  • the data adding unit (Reduce) 34 searches the addition key size table T400 and the total data key size table T400 for an entry corresponding to the specified divided area. Further, the data adding unit (Reduce) 34 adds the data size of the written record to the size T402 of the corresponding entry in each key size table T400.
  • the data adding unit (Reduce) 34 determines whether all records have been output (step S404).
  • the data adding unit (Reduce) 34 returns to Step S401 and executes the same processing.
  • step S406 the data size confirmation processing in step S406 is the same processing as step S405.
  • FIG. 12 is a flowchart for explaining the data size confirmation processing in the first embodiment of the present invention.
  • the data adding unit (Reduce) 34 refers to the entire data key size table T400 updated in step S403, and determines whether or not the data size of the target divided area is larger than a predetermined reference value (step S501). . That is, it is determined whether or not the divided area to which the raw data is added is larger than a predetermined reference value.
  • the target divided area is a divided area including the record input last time.
  • the target divided area is also referred to as a target area.
  • the data adding unit (Reduce) 34 refers to the size T402 of the corresponding entry in the all data key size table T400, and determines whether or not the data size of the target area is larger than a predetermined reference value.
  • the data adding unit (Reduce) 34 proceeds to step S506.
  • the data adding unit (Reduce) 34 acquires the existing data set division table T200 from the master node 20 (step S502).
  • the data adding unit (Reduce) 34 may store the division table T200 acquired from the master node 20 as a cache.
  • the data adding unit (Reduce) 34 specifies an end position of the target area in each acquired division table T200, that is, an offset (step S503).
  • the data adding unit (Reduce) 34 refers to each acquired division table T200 based on the key of the target area, and acquires an entry corresponding to the target area. That is, the data file name T202 and the offset T204 of the data corresponding to the target area are acquired. This process is executed for all the divided tables T200 acquired in step S502.
  • the data adding unit (Reduce) 34 Information is acquired from the first entry of the division table T200 shown in 5A and 5B.
  • (data file name, offset) (/ log01 / 001.dat, 280) in FIG. 5A, and (/log02/002.dat, 200) in FIG. 5B.
  • the acquired offset is the end position of the target area in each division table T200.
  • the data adding unit (Reduce) 34 analyzes the records included in the target area of each existing data set (step S504).
  • the data adding unit (Reduce) 34 reads a record included in the target area of each existing data set. For example, when there is a data set whose data ID (T101) is “log01” and “log02”, a record is read from the target area of the data set of “log01”, and the target area of the data set of “log02” Records are read from.
  • the data adding unit (Reduce) 34 acquires record statistical information including the key of the read record, the data size of the record, and the offset position of the record in the file.
  • the analysis processing of the record may be executed in parallel for each data set.
  • the data adding unit (Reduce) 34 combines the record statistical information of the raw data acquired in step S402 and the record statistical information of the existing data set to obtain record statistical information of all data sets on the distributed file system.
  • the data adding unit (Reduce) 34 determines the value of the key to be a division position for re-division based on the record statistical information of all the created data sets (step S505).
  • the data adding unit (Reduce) 34 calculates the data size in the target area based on the record statistical information of all data sets.
  • the data adding unit (Reduce) 34 calculates the number of divisions in the target area based on the calculated data size and a predetermined reference value.
  • the data adding unit (Reduce) 34 divides the data size of the target area by the calculated number of divisions, and calculates the data size of the divided areas after re-division.
  • the data adding unit (Reduce) 34 sorts the record statistical information entries of all data sets by key, and then calculates the cumulative value distribution of the data size of the records. That is, the distribution of the data size of each record included in the predetermined key range in the distributed file system is calculated.
  • the data adding unit (Reduce) 34 determines, based on the calculated cumulative value distribution, a point where the data size of the record is an integral multiple of the data size of the divided area after the division, as a division position for re-division. If it is not an integer multiple, the record closest to the data size is determined as the division position.
  • the key at the re-division position may be a key that exists as data, or a key that does not exist as data.
  • the data adding unit (Reduce) 34 specifies the offset corresponding to each determined key range with reference to the record statistical information of all data sets.
  • the data adding unit (Reduce) 34 adds an entry corresponding to the divided area after the re-division to each division table T200. Further, the data adding unit (Reduce) 34 deletes the entry corresponding to the divided area before the re-division from each division table T200.
  • a divided region whose key range is less than “034a” is divided into two divided regions: a divided region whose key range is less than “015d” and a divided region whose key range is “015d” or more and less than “034a”.
  • the division table T200 shown in FIGS. 5A and 5B is changed as shown in FIGS. 14A and 14B.
  • a portion indicated by a thick line in the figure is a changed portion.
  • the data adding unit (Reduce) 34 also changes the adding key size table T400 and the total data key size table T400 based on the record statistical information.
  • the table shown in FIG. 13 when the total data key size table T400 before re-division is the table shown in FIG. 13, the table is changed as shown in FIG. A portion indicated by a thick line in the figure is a changed portion.
  • the data adding unit (Reduce) 34 updates the division table T200 (step S506).
  • the data adding unit (Reduce) 34 stores the entry of the divided area corresponding to the raw data division table T200 based on the key size table for addition and the record statistical information of the raw data. That is, the raw data division table T200 is generated.
  • the data adding unit (Reduce) 34 deletes the record statistical information used in the above-described processing, and ends the processing (step S507).
  • the present invention can also support a storage method (column division storage method) in which data items are stored in different files.
  • the configuration of the data analysis system is the same as that of the first embodiment, and thus the description thereof is omitted.
  • the hardware configuration and software configuration of the master node 20 and the slave node 30 are the same as those in the first embodiment, and thus description thereof is omitted.
  • FIG. 16 is an explanatory diagram showing a record schema in the second embodiment of the present invention.
  • FIG. 17 is an explanatory diagram illustrating an example of a record according to the second embodiment of this invention.
  • the record of the second embodiment newly includes the age of the user.
  • the user ID is used as the key.
  • 18A, 18B, and 18C are explanatory diagrams showing files in the second embodiment of the present invention.
  • 18A, 18B, and 18C show examples in which the above-described data is stored in a file using the column division method.
  • the user ID is log / 001. key. dat (FIG. 18A)
  • the movement history is log / 001. rec. dat (FIG. 18B)
  • age is log / 001. age.
  • Each is stored in a file called dat (FIG. 18C).
  • FIG. 19 is an explanatory diagram showing an example of a division table T200 according to the second embodiment of the present invention.
  • the division table T200 in the second embodiment is different from the first embodiment in that the data file name T202 and the offset T204 are stored for each item (user ID, movement history, and age).
  • a key value representing a division position is stored in the key (T203).
  • step S101 when the key size table T400 is created, the data management unit 21 refers to the offset of the item used for the analysis processing in the division table T200 and calculates the size of each division area.
  • the size of the key size table is obtained using only the “uid” offset and the “age” offset. At this time, the offset for “rec” is not used.
  • each slave node 30 to which a task is assigned reads the files by the number of products of the number of files used for analysis processing and the number of items used for analysis processing.
  • step S203 the data management unit 21 creates the key size table T400 of the existing data set from the offset for each item of the split table T200 of all data sets that may be combined.
  • step S402 when each record is output to a file, each record is output to a separate file. Therefore, in step S402, record statistical information including the key value of the written record, the offset on the written file, and the data size is stored for each item.
  • step S403 the sum of the sizes of the divided areas of all items is added to the corresponding entry in the key size table T400.
  • the data adding unit (Reduce) 34 determines the key of the division position using the sum of the data sizes of the divided areas of all items as the data size of the data set.
  • the data adding unit (Reduce) 34 calculates the offset of the division position for each item using the determined key and record statistical information, and updates the division table T200.
  • the case where three items are processed has been described.
  • the number of items managed in the division table T200 can be changed to any number of items.
  • the data analysis system can execute the combining process in the analysis process in parallel because the division positions of the respective data sets are the same.
  • the divided area can be subdivided so that the processing amount between tasks becomes uniform. As a result, it is possible to eliminate processing imbalance between tasks and to combine records for each distributed area during the combining process.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 キー及びデータ値から構成されるデータを複数含むデータセットに対する分析処理を複数の計算機が並列実行する計算機システムであって、各計算機は、所定のキー範囲毎に前記データセットを分割した分割領域の分割位置を示すキーである分割位置キーを管理する分割情報をデータセット毎に保持し、各データセットの分割情報に含まれるすべての分割位置キーは同一であり、計算機システムは、ファイルシステムに新規データセットが格納された場合に、新規データセットが格納された後の各分割領域のデータサイズに基づいて、所定の閾値より大きいデータサイズの分割領域である対象領域が存在するか否かを判定し、対象領域が存在すると判定された場合、対象領域を複数の新たな分割領域に分割する。

Description

計算機システム及びデータ管理方法
 本発明は、大量データを処理する計算機システムにおいて、データを結合する技術に関わる。
 データベースにおける表(テーブル、リレーション等)の結合処理に関する技術として、ソート・マージ結合技術を用いて表の結合を並列処理する手法が知られている(例えば、特許文献1参照)。
 ソート・マージ結合技術とは、結合対象の表をキー値に基づいてソートした後、各表の行を先頭から読み出し、対応するキー値である行同士をマージする手法である。
 特許文献1には、処理を並列化するために、各表を同一のキー値に対応する位置で区分することによって表毎に対応する分割領域を生成し、分割領域毎にソート・マージ結合技術を利用して表を結合することが記載されている。さらに、特許文献1には、システム内のプロセッサ負荷に偏りが発生しないように、プロセッサへの分割領域の割り当てることが記載されている。
 データベースに関する基本的な技術として、キーの値と当該キーの値に対応するデータの格納位置を対応付けるテーブル(インデックス)を用意しておき、データの検索処理時に、キーの値を指定することによって高速にデータを取得する技術がある(例えば、特許文献2参照)。特許文献2では、2つ以上のキーの組み合わせに対して、データの格納位置を対応付けるマトリックス・インデックスについて記載されている。
 また、キーの値の範囲毎にデータを保存する格納領域を変更することによって、複数の格納領域を利用可能とする技術が一般的に利用されている(例えば、特許文献3参照)。特許文献3では、格納領域を追加するとき、既存の格納領域から新たに追加した格納領域へのデータの移動量を抑えつつ、各格納領域の使用量を平準化する方法について説明されている。
特公平7-111718 特開平6-52231号公報 特開2001-142751号公報
 データ分析システムでは、周期的に取得されたデータを蓄積し、必要に応じて蓄積されたデータを組み合わせて分析処理を実行する。
 ここで、図を用いてデータ分析システムによって処理されるデータの一例を示す。
 図20は、従来のデータ分析システムにおいて処理されるデータの一例を示す説明図である。図21は、従来のデータにおけるスキーマの一例を示す説明図である。図22Aから図22Cは、従来の分析処理において処理されるデータの一例を示す説明図である。
 図20に示す例では、ユーザの移動履歴を表す。具体的には、ユーザを識別するユーザID、ユーザの位置を特定する座標情報である位置X及び位置Y、並びに、ユーザが当該位置に移動した時間であるタイムスタンプから構成されるデータである。
 図20に示すようなデータに対する分析処理では、例えば、図21に示すようにスキーマに基づいてデータが変換される。さらに、変換されたデータは、図22Aに示すようにユーザID毎にグループ化され、集計等の分析処理が実行される。
 しかし、分析処理時に図20に示すようなデータを図22Aに示すようなデータに変換する処理に時間がかかるため、本データ分析システムでは、分析処理を効率化するため、予め図22Aに示すようなデータに変換されたデータが蓄積され、蓄積されたデータを用いて分析処理が実行される。
 なお、本明細書では、1以上レコードから構成されるデータをデータセットと記載する。また、図20に示すようなデータセットを素データと記載し、図21に示すような構造のデータを構造化データと記載する。
 蓄積処理では、図20に示す形式のデータが周期的(例えば月単位)に収集され、図22Aの形式のデータに変換された後、データ分析システムに蓄積される。このため、複数のデータを集計して、1年間のデータに対する分析処理、及び各年度の特定の月に対する分析処理を実行する場合には、図22Aに示す形式のデータを複数結合する必要がある。
 例えば、データ分析システムは、図22A及び図22Bに示すような2つデータを結合して、図22Cに示すようなデータになる。
 ここで、同一のユーザIDの行データ(レコード)をマージしていることから、データベースにおける結合(ジョイン)と同等の処理を行う必要がある。さらに、前述した例では結合対象となるデータは2つだけではなく、多数の表を結合する場合がある。
 また、周期的に蓄積されるデータは、データ毎にサイズ分布が異なる場合がある。例えば、月ごとのサービスの利用回数が異なるユーザのデータでは、各月のデータのサイズ分布の違いが発生する。
 特許文献1には、表を区分するときに区分する位置(分割位置)を決定する方法は記載されていない。一般に表を均等に区分するには表に含まれるキーの分布情報が必要になる。キーの分布情報を取得する場合に、表全体をスキャンする方法では処理完了までに時間がかかる。
 キーの分布情報を取得する他の方法としては、特許文献2に記載されたインデックスを用いる方法がある。インデックスは表には、すべてのキー値が含まれるため、インデックスをスキャンすることによってキーの分布情報を取得することができる。インデックスは表と比べてデータサイズが小さいため、処理時間を短くできる。
 しかし、多数の表を結合する場合には、表の数だけインデックスをスキャンする必要があり、処理時間が長くなる。また、対象とするデータが大量である場合、表の作成時にインデックスを作成する処理、及び、表の更新時にインデックスを更新する処理に時間がかかるという課題がある。
 これに対して、インデックスを利用せず、特許文献3に記載の方法を用いることが考えられる。すなわち、あらかじめ複数の分割領域に分割された表を管理しておき、各表の分割領域同士を対応させて、分割領域毎に並列にマージ結合処理を実行する方法を用いることが考えられる。
 しかし、一般に表の分割位置は表毎に異なるため、分割領域を対応させることができない。たとえ、すべての表の分割位置が一致するようにしていてもデータ更新時に各分割領域にデータサイズの偏りが発生するという別の課題がある。
 すなわち、周期的に蓄積されるデータ毎にデータサイズ分布が異なるため、予め固定された分割位置では、データの組み合わせによって各分割領域のデータサイズに偏りが発生する。したがって、並列して結合処理を実行する場合に処理量のばらつきが発生し、効率的に並列処理ができないという課題がある。
 本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、キー及びデータ値から構成されるデータを複数含むデータセットに対する分析処理を複数の計算機が並列実行する計算機システムであって、前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記のプロセッサに接続される記憶装置と、前記プロセッサに接続されるネットワークインタフェースとを有し、前記各計算機は、所定のキー範囲毎に前記データセットを分割した分割領域の分割位置を示すキーである分割位置キーを管理する分割情報を、前記データセット毎に保持し、前記各データセットの前記分割情報に含まれるすべての前記分割位置キーは同一であり、前記複数の計算機が有する記憶領域上には、前記データセットを格納するファイルシステムが構成され、前記計算機システムは、前記分析処理を実行する場合に、前記分割領域毎に複数のタスクを生成し、前記生成されたタスクを前記各計算機に割り当てて、前記各データセットの分割領域に含まれる前記データを結合して前記分析処理を実行し、前記ファイルシステムに新規データセットが格納された場合に、前記新規データセットが格納された後の各分割領域のデータサイズに基づいて、所定の閾値より大きいデータサイズの前記分割領域である対象領域が存在するか否かを判定し、前記対象領域が存在すると判定された場合、前記対象領域を複数の新たな分割領域に分割することを特徴とする。
 本発明の代表的な一形態によれば、インデックスを作成することなく、データセット間の結合処理を並列実行できる。また、新規データセットが追加された場合に、分割領域ごとのデータ量のばらつきを抑えることができるため結合処理を実行するタスク間の処理量の平準化できる。
本発明の第1の実施形態におけるデータ分析システムのシステム構成を説明するブロック図である。 本発明の第1の実施形態におけるノードのハードウェア構成を説明するブロック図である。 本発明の第1の実施形態におけるマスタノードのソフトウェア構成を説明するブロック図である。 本発明の第1の実施形態におけるスレーブノードのソフトウェア構成を説明するブロック図である。 本発明の第1の実施形態におけるデータ管理テーブルの一例を示す説明図である。 本発明の第1の実施形態における分割テーブルの一例を示す説明図である。 本発明の第1の実施形態における分割テーブルの一例を示す説明図である。 本発明の第1の実施形態におけるパーティションテーブルの一例を示す説明図である。 本発明の第1の実施形態におけるにキーサイズテーブルの一例を示す説明図である。 本発明の第1の実施形態におけるにキーサイズテーブルの一例を示す説明図である。 本発明の第1の実施形態におけるデータの結合処理及び分析処理を説明するフローチャートである。 本発明の第1の実施形態におけるデータ追加処理を説明するフローチャートである。 本発明の第1の実施形態におけるグルーピング処理の詳細を説明するフローチャートである。 本発明の第1の実施形態におけるデータ出力処理を説明するフローチャートである。 本発明の第1の実施形態のおけるデータサイズの確認処理を説明するフローチャートである。 本発明の第1の実施形態におけるにキーサイズテーブルの一例を示す説明図である。 本発明の第1の実施形態における分割後の分割テーブルの一例を示す説明図である。 本発明の第1の実施形態における分割後の分割テーブルの一例を示す説明図である。 本発明の第1の実施形態におけるに分割後のキーサイズテーブルの一例を示す説明図である。 本発明の第2の実施形態におけるレコードのスキーマを示す説明図である。 本発明の第2の実施形態におけるレコードの一例を示す説明図である。 本発明の第2の実施形態におけるファイルを示す説明図である。 本発明の第2の実施形態におけるファイルを示す説明図である。 本発明の第2の実施形態におけるファイルを示す説明図である。 本発明の第2の実施形態における分割テーブルの一例を示す説明図である。 従来のデータ分析システムにおいて処理されるデータの一例を示す説明図である。 従来のデータにおけるスキーマの一例を示す説明図である。 従来の分析処理おいて処理されるデータの一例を示す説明図である。 従来の分析処理おいて処理されるデータの一例を示す説明図である。 従来の分析処理おいて処理されるデータの一例を示す説明図である。
 [第1の実施形態]
 以下、本発明の第1の実施形態を説明する。
 図1は、本発明の第1の実施形態におけるデータ分析システムのシステム構成を説明するブロック図である。
 データ分析システムは、クライアントノード10、マスタノード20及びスレーブノード30から構成され、ネットワーク40を介して各ノードが相互に接続される。なお、ネットワーク40は、SAN、LAN及びWANなどが考えられるが、各ノードが通信できるものであればどのようなものであってもよい。また、各ノードが直接接続されてもよい。
 ここでノードとは計算機を示す。以降、計算機をノードと記載する。
 クライアントノード10は、データ分析システムの利用者が利用するノードである。利用者は、クライアントノード10を用いてマスタノード20及びスレーブノード30等に各種指示を送信する。
 マスタノード20は、データ分析システム全体を管理するノードである。スレーブノード30は、マスタノード20から送信される指示にしたがって、各処理(タスク)を実行するノードである。なお、本データ分析システムは、並列分散処理システムの一種であり、スレーブノード30の数を増やすことによって、システムの処理性能を向上することができる。
 なお、クライアントノード10、マスタノード20及びスレーブノード30のハードウェア構成は同一のものであり、詳細については図2を用いて後述する。
 各ノードには、HDD等の記憶装置11、21、31が接続される。各記憶装置11、21、31には、OS等の各ノードが備える機能を実現するためのプログラムが格納される。各プログラムは、CPU(図2参照)によって記憶装置11、21、31から読み出され、CPU(図2参照)によって実行される。
 図2は、本発明の第1の実施形態におけるノードのハードウェア構成を説明するブロック図である。
 図2ではクライアントノード10を例に説明するが、マスタノード20及びスレーブノード30も同一のハードウェア構成である。
 クライアントノード10は、CPU101、ネットワークI/F102、入出力I/F103、メモリ104、及びディスクI/F105を備え、内部バス等を介して各構成が互いに接続される。
 CPU101は、メモリ104に格納されるプログラムを実行する。
 メモリ104は、CPU101によって実行されるプログラム及び当該プログラムを実行するために必要な情報を格納する。なお、メモリ104に格納されるプログラムは、記憶装置11に格納されていてもよい。この場合、CPU101によって、記憶装置11からメモリ104上に読み出される。
 ネットワークI/F102は、ネットワーク40を介して他のノードと接続するためのインタフェースである。ディスクI/F105は、記憶装置11と接続するためのインタフェースである。
 入出力I/F103は、キーボード106、マウス107及びディスプレイ108などの入出力装置を接続するためのインタフェースである。利用者は、入出力装置を用いてデータ分析システムに指示を送信し、また、分析結果を確認する。
 なお、マスタノード20及びスレーブノード30は、キーボード106、マウス107及びディスプレイ108を備えていなくてもよい。
 次に、マスタノード20及びスレーブノード30のソフトウェア構成を説明する。
 図3Aは、本発明の第1の実施形態におけるマスタノード20のソフトウェア構成を説明するブロック図である。
 マスタノード20は、データ管理部21、処理管理部22及びファイルサーバ(マスタ)23を備える。
 データ管理部21、処理管理部22及びファイルサーバ(マスタ)23は、メモリ104上に格納されるプログラムであり、CPU101によって実行される。以下、プログラムを主体として処理を説明する場合には、CPU101によって当該プログラムが実行されているものとする。
 データ管理部21は、データ分析システムが処理するデータを管理する。データ管理部21は、データ管理テーブルT100、分割テーブルT200及びキーサイズテーブルT400を含む。
 データ管理テーブルT100は、データ分析システムが処理するデータセットの管理情報を格納する。データ管理テーブルT100の詳細については、図4を用いて後述する。ここで、データセットとは、複数のレコードから構成されるデータを示す。
 分割テーブルT200は、データセットを分割した分割領域の管理情報を格納する。ここで分割領域とは、所定のキー範囲ごとにデータセットが分割されたレコード群を表す。分割テーブルT200の詳細については、図5を用いて後述する。
 キーサイズテーブルT400は、データセットにおける各分割領域のデータサイズの管理情報を格納する。一つのデータセットに対して一つのキーサイズテーブルT400が対応する。また、データ分析システム全体のデータセットのデータサイズを管理するキーサイズテーブルT400も含まれる。キーサイズテーブルT400の詳細については、図7を用いて後述する。
 処理管理部22は、各スレーブノード30上で分散して実行される並列処理を管理する。処理管理部22は、並列実行される処理(タスク)を生成するプログラムを管理するプログラムリポジトリ24を含む。つまり、処理管理部22は、プログラムリポジトリ24から各スレーブノード30において実行すべきタスクを生成し、生成されたタスクの実行をスレーブノード30に指示する。
 ファイルサーバ(マスタ)23は、実際のデータを格納するファイルを管理する。
 なお、マスタノード20が備えるソフトウェア構成は、ハードウェアを用いて実現してもよい。
 図3Bは、本発明の第1の実施形態におけるスレーブノード30のソフトウェア構成を説明するブロック図である。
 スレーブノード30は、処理実行部31及びファイルサーバ(スレーブ)32を備える。
 処理実行部31及びファイルサーバ(スレーブ)32は、メモリ104上に格納されるプログラムであり、CPU101によって実行される。以下、プログラムを主体として処理を説明する場合には、CPU101によって当該プログラムが実行されているものとする。
 処理実行部31は、マスタノード20の処理管理部22から処理(タスク)の実行指示を受け付け、所定の処理(タスク)を実行する。つまり、処理実行部31は、受け付けた処理(タスク)の実行指示に基づいて、当該処理(タスク)を実行するためのプロセスを生成する。生成されたプロセスが実行されることによって、各スレーブノード30上で複数のタスクが実行され、並列分散処理が実現される。
 本実施形態の処理実行部31は、前述したタスクを実行するデータ追加部(Map)33及びデータ追加部(Reduce)34を含む。
 データ追加部(Map)33は、入力された素データ(図20参照)からレコード単位のデータを読み出し、key範囲毎にデータ追加部(Reduce)34に、読み出された素データを出力する。なお、データ追加部(Reduce)34は、処理を担当するkey範囲が予め設定されている。
 データ追加部(Map)33は、パーティションテーブルT300を含む。データ追加部(Map)33は、パーティションテーブルT300に基づいて、読み出されたデータを出力するデータ追加部(Reduce)34を特定する。なお、パーティションテーブルT300については、図7A及び図7Bを用いて後述する。
 データ追加部(Reduce)34は、入力された素データを所定の形式、すなわち、構造化データ(図21参照)に変換し、さらに、当該構造化データを分散ファイルシステムに出力する。
 データ追加部(Reduce)34は、キーサイズテーブルT400を含む。キーサイズテーブルT400は、データ管理部21に含まれるキーサイズテーブルT400と同一のものである。ただし、キーサイズテーブルT400には、データ追加部(Reduce)34が担当するkey範囲の分割領域に関する管理情報のみが格納される。
 ファイルサーバ(スレーブ)32は、分散配置されるファイルを管理する。ファイルサーバ(マスタ)23は、ファイルのメタデータ(ディレクトリ構造、サイズ、更新日時等)を管理し、ファイルサーバ(スレーブ)32と連携して一つのファイルシステムを提供する機能を備える。
 データ追加部(Map)33及びデータ追加部(Reduce)34は、ファイルサーバ(マスタ)23にアクセスすることによって、ファイルシステム上のファイルを利用し、各種タスクを実行する。すなわち、データ追加部(Map)33及びデータ追加部(Reduce)34は、同一のファイルシステムにアクセスすることができる。
 なお、スレーブノード30が備えるソフトウェア構成は、ハードウェアを用いて実現してもよい。
 次にデータ管理部21に含まれる各テーブルの詳細について説明する。
 図4は、本発明の第1の実施形態におけるデータ管理テーブルT100の一例を示す説明図である。
 データ管理テーブルT100は、データID(T101)及び分割テーブル名T102を含む。データID(T101)は、データセットの識別子を格納する。分割テーブル名T102は、データセットに対応する分割テーブルT200の名称を格納する。
 データ管理テーブルT100の各エントリは、本データ分析システムが管理する1つのデータセットに対応する。また、当該データセットは、通常のデータベースにおける1つのテーブル(リレーション)に対応する。
 図5A及び図5Bは、本発明の第1の実施形態における分割テーブルT200の一例を示す説明図である。
 図5Aは、分割テーブル名T102が「log01.part」であるデータセットの分割テーブルT200の一例を示す。図5Bは、分割テーブル名T102が「log02.part」である分割テーブルT200の一例を示す。
 分割テーブルT200は、本データ分析システムが処理する各データセットの分割方法を示す管理情報を格納する。分割テーブルT200は、分割テーブル名T201、データファイル名T202、key(T203)及びオフセットT204を含む。
 分割テーブル名T201は、分割テーブルT200の名称を格納する。分割テーブル名T201は、分割テーブル名T102と同一のものである。
 データファイル名T202は、分割領域に対応するデータを格納するファイルの名称を格納する。
 key(T203)は、分割領域のkey範囲を示すkeyの値、すなわち、データセットの分割位置を表すkeyの値を格納する。key(T203)には、分割領域における終了地点を表すkeyの値が格納される。
 オフセットT204は、データセットにおける分割位置の値に対応するオフセットを格納する。オフセットT204には、key(T203)に対応するkeyのオフセットが格納される。なお、データファイル名T202が異なる場合には、データが格納されるファイルが異なるため、対応するエントリのオフセットは「0」から改めてカウントされる。
 分割領域の開始位置は、1つ前のエントリのkey(T203)及びオフセットT204に対応する。そして、最初の分割領域の開始位置を表すkeyと、最後の分割領域の終了位置を表すkeyは定義されないため、これらは分割テーブルT200には記載されない。
 各分割テーブルT200の各エントリは、本データ分析システムが管理する1つの分割領域に対応する。
 例えば、図4に示すデータ管理テーブルT100の1つ目のエントリは、分割テーブル名T101が「log01.part」であり、図5Aに示す分割テーブルT200に対応する。
 図5Aに示す分割テーブルT200の1つ目のエントリが最初の分割領域に対応する。1つ目のエントリは、データファイル名T202が「log01/001.dat」であるファイルに、当該分割領域のデータが格納されていることを示す。
 また、1つ目のエントリのkey(T203)が「034a」であることから、最初の分割領域のkey範囲は「034a」未満であることを示す。また、1つ目のエントリのオフセットT204が「280」であることから、ファイル上のオフセットが「0~279」の範囲に最初の分割領域のデータが格納されていることを示す。
 また、図5Aに示す分割テーブルT200の2つ目のエントリは、対応する分割領域のkey範囲は「034a」以上かつ「172d」未満であり、データファイル名T202が「log01/002.dat」であることを示す。また、データファイル名T202が1つ目のエントリと異なるため、オフセットは「0」からカウントされる。したがって、オフセットが「0~218」の範囲に対応する分割領域のデータが格納されることを示す。
 また、図5Aに示す分割テーブルT200の3つ目のエントリは、対応する分割領域のkey範囲は「172d」以上かつ「328b」未満であり、データファイル名T202が「log01/002.dat」であることを示す。また、データファイル名T202が2つ目のエントリと一致するため、ファイル上のオフセットが「219~455」の範囲に対応する分割領域のデータが格納されることを示す。
 また、図4に示すデータ管理テーブルT100の2つ目のエントリは、分割テーブル名T101が「log02.part」であり、図5Bに示す分割テーブルT200に対応する。
 図5Bに示す分割テーブルT200に格納される各エントリのデータファイル名T202及びオフセットT204は、図5Aに示す分割テーブルT200の各エントリと異なる。しかし、両分割テーブルT200の分割位置を表すkey(T203)は共に一致する。
 本実施形態では、結合する可能性があるデータセットにおける分割領域の分割位置、すなわち、key(T203)は必ず一致するように管理される。これによって、2つ以上のデータセットの結合処理を並列化することができる。すなわち、結合対象となるデータセットの分割テーブルT200のkey(T203)が同一のエントリを対応付けることが可能となり、分割領域毎に結合処理を並列して実行することが可能となる。
 ファイルには、図22Aに示したように1つのkeyと1つ以上の値とから構成されるレコードが複数含まれる。また、各ファイルは、keyに基づいてソートされた形式で、分散ファイルシステムに格納される。これによって、分割領域毎に結合処理を行う場合に、同一のkeyをつき合わせてマージ結合することが可能となる。
 また、異なる分割領域のデータを格納するファイルは同一であってもよい。例えば、図5Aでは、2つ目のエントリと3つ目のエントリとは、同一のファイルである。ただし、それぞれのエントリのkey範囲が異なっている。
 前述のように図5Aでは、ファイルの数は3つであるが、分割領域の数は4つであり、それぞれ異なる。後述するように、ファイルの数は、本データ分析システムにおけるデータ追加処理の並列度に一致する。一方、分割領域の数は、データの分析処理の並列度に依存する。したがって、ファイルの数と分割領域の数とは、それぞれ異なった処理に依存するため、両者には依存関係はなく、どのように決めてもよい。
 図6は、本発明の第1の実施形態におけるパーティションテーブルT300の一例を示す説明図である。
 パーティションテーブルT300は、新たに追加されるデータセット(素データ)を分割して、タスクを実行するデータ追加部(Reduce)34に、当該データを振り分ける際に用いられる情報を格納する。パーティションテーブルT300は、key(T301)及び宛先T302を含む。
 key(T301)は、入力されたデータセットの分割位置を表すkeyの値を格納する。宛先T302は、分割されたデータセットの処理を担当するデータ追加部(Reduce)34の位置を示す宛先情報を格納する。図6に示す例では、IPアドレス及びポートを含む宛先情報によってノード及び当該データ追加部(Reduce)34が指定される。
 図7A及び図7Bは、本発明の第1の実施形態におけるにキーサイズテーブルT400の一例を示す説明図である。
 キーサイズテーブルT400は、分割領域のデータサイズを格納する。キーサイズテーブルT400は、key(T401)及びサイズT402を含む。
 key(T401)は、key(T203)と同一のものである。サイズT402は、key(T401)を分割位置とする分割領域のデータサイズを格納する。
 なお、サイズT402は、結合処理の対象となる分割領域のデータサイズの合計値が格納される。
 キーサイズテーブルT400は、後述する結合処理及び分析処理、並びに、データ追加処理の実行時に動的に生成される。
 次に、データの結合処理及び分析処理について説明する。
 図8は、本発明の第1の実施形態におけるデータの結合処理及び分析処理を説明するフローチャートである。
 結合処理は、必ず分析処理と共に実行される。すなわち、結合処理によって1レコード分のデータが結合された後、当該データに対して分析処理が実行される。
 結合処理及び分析処理は、利用者からの指示を受信したデータ管理部21によって実行される。なお、利用者からの指示には、結合対象であるデータセットのデータIDが含まれる。
 まず、マスタノード20は、処理対象となるデータセットに対応するキーサイズテーブルT400を作成する(ステップS101)。
 具体的には、以下のような処理が実行される。
 データ管理部21は、利用者から送信された指示に含まれるデータIDに基づいて、データ管理テーブルT100を検索し、対応するエントリから分割テーブル名T102を取得する。
 次に、データ管理部21は、取得された分割テーブル名T102に対応する分割テーブルT200を取得する。
 データ管理部21は、取得された分割テーブルT200に基づいて、分割領域毎の分割位置を示すkeyの値を特定し、また、結合対象であるデータセットのデータサイズを算出する。
 さらに、データ管理部21は、前述の処理結果に基づいて、キーサイズテーブルT400を作成する。
 例えば、データID(T101)が「log01」及び「log02」であるデータセットを結合する場合、対応する分割テーブルT200はそれぞれ図5A及び図5Bとなる。このとき、データ管理部21は、前述した処理を実行することによって、分割領域毎に2つのデータセットのデータサイズを足し合わせ、図7Aに示すようなキーサイズテーブルT400を作成する。
 次に、マスタノード20は、結合処理及び分析処理の組からなるタスクを複数生成し、生成された各タスクを各スレーブノード30に割り当てることによって当該タスクを起動する(ステップS102)。
 具体的には、処理管理部22が、プログラムリポジトリ24から処理に必要なプログラムを読み出し、利用者によって指定された並列数分のタスクを生成する。さらに、処理管理部22が、生成されたタスクを各スレーブノード30上で実行させる。
 なお、当該並列数がステップS101において作成されたキーサイズテーブルT400のエントリ数よりも小さい場合、当該エントリ数を並列数とし、エントリ数分のタスクをスレーブノード30上で実行させる。
 次に、マスタノード20は、各タスクに分割領域を割り当てる(ステップS103)。
 具体的には、データ管理部21は、ステップS101において作成されたキーサイズテーブルT400の各エントリに対応する分割領域を、ステップS102において生成された各タスクに割り当てる。
 なお、データ管理部21は、キーサイズテーブルT400のサイズT402に基づいて、データサイズが均等になるように、各タスクに分割領域を割り当てる。
 前述した分割領域の割り当て方法としては、例えば、データ管理部21が、キーサイズテーブルT400のエントリをサイズT402に基づいてソートし、データサイズが大きなエントリから順に、割り当てられたデータサイズが小さいタスクへ割り当てる方法が考えられる。
 データ管理部21は、分割領域の割り当てが終了した後、タスクが割り当てられたスレーブノード30に対して、結合すべきファイルのデータファイル名及びオフセット位置を送信する。
 例えば、図7AのキーサイズテーブルT400の1つ目のエントリに対応する分割領域が割り当てられたタスクの場合、対応する分割テーブルT200のエントリは、図5A及び図5Bのそれぞれ1つ目のエントリである。したがって、データ管理部21は、(データファイル名、開始位置、終了位置)=(log01/001.dat,0,280)、(log02/001.dat,0,200)を、当該タスクが割り当てられたスレーブノード30に送信する。
 次に、マスタノード20は、タスクが割り当てられた各スレーブノード30に対してタスクの実行指示を送信し、処理を終了する(ステップS104)。
 具体的には、データ管理部21は、タスクを割り当てた各スレーブノード30にタスクの実行指示を送信する。
 マスタノード20から指示を受信したスレーブノード30は、ファイルサーバ(マスタ)23にアクセスし、データ管理部21から受信したデータファイル名及びオフセット位置に基づいて、指定されたファイルを、指定されたオフセット位置から読み出す。
 各スレーブノード30は、読み出された各ファイルのkeyをつき合わせ、結合処理を実行する。さらに、スレーブノード30は、同一のスレーブノード30において、実行中の分析処理のタスクに1レコードずつ結合処理の結果を出力する。
 例えば、図5A及び図5Bに対応するデータセットに対する分析処理では、4つの分割領域毎にタスクが生成され、各タスクによって前述した結合処理が実行される。
 このとき、データセット毎に分割位置が異なると、重複するキー範囲について処理が実行されてしまうため並列処理が実現できない。しかし、本実施形態では、各データセットの分割位置が同一であるため、各データセットの分割領域における結合処理を並列実行できる。
 以上が、データの結合処理及び分析処理の説明である。
 次にデータ追加処理について説明する。
 データ追加処理は、データ管理テーブルT100及び分割テーブルT200が作成されているデータセット、すなわち、分散ファイルシステムに既存のデータセットが格納されている場合に、新規データセットを追加するための処理である。
 通常、データセット毎に各分割領域のデータサイズが異なる。そのため、分割位置を修正せずに各データセットの分割領域を結合すると、分割領域間のデータサイズのばらつきが発生する。この結果、分析処理を実行するタスクの処理量にばらつきが発生し、並列処理の効率が低下する。
 本発明では、前述した課題を解決するため、データ追加処理時に後述する処理を実行することによって、分割領域を再分割し、各分割領域のデータサイズを平準化する。
 具体的には、新規データセットが追加された後、結合対象となり得る全データセットを結合させた場合の各分割領域のデータサイズが所定の基準値以下になるように分割位置が制御される。これによって、全データセット利用時に並列実行される分析処理のタスク間における処理量の差を平準化させることができる。
 なお、一部のデータセットを結合する場合には、各分割領域のデータサイズは基準値以下になり、分析処理のタスク間の処理量の差は平準化される。
 分割領域を再分割することによって、結合処理及び分析処理のタスク制御のオーバーヘッドが発生した場合に、割り当てられている分割領域が小さくなった場合には、当該分割領域が割り当てられるタスクに複数の分割領域が割り当てられ、1つのタスクが実行する処理量を増やすことができる。
 なお、前述した所定の基準値は、タスクの処理量の差に影響することから、許容されるタスクの処理量の差に基づき決定することが望ましい。
 当該基準値を小さくしすぎると分割領域の数が増えるため、データ追加処理のオーバーヘッドが増える。一方、当該基準値を大きくしすぎるとタスク間の処理量の差が大きくなり、並列処理の効率が下がる。
 したがって、1つのタスクが所定のデータ量を処理するときの実行時間が、タスク間の処理時間の差として許容される時間以下になるようなデータ量を所定の基準値とすればよい。
 データ追加処理で追加されるデータは、図20に示すような形式で入力される。データ追加処理では、図22A示すような形式のデータをユーザIDでグループ化された形式に変換され、分散ファイルシステムに格納される。以下、図20の形式のデータセットを素データと記載し、図21の形式のデータを構造化データと記載する。
 以下、図9を用いて具体的に処理について説明する。
 図9は、本発明の第1の実施形態におけるデータ追加処理を説明するフローチャートである。
 利用者が、ファイルサーバ(マスタ)23及びファイルサーバ(スレーブ)32によって実現される分散ファイルシステムに対して、素データを入力することによってデータ追加処理が実行される。
 まず、データ管理部21は、入力された素データをサンプリングし、keyの出現頻度を解析する(ステップS201)。
 具体的には、データ管理部21は、素データに含まれるレコードをランダムにサンプリングする。データ管理部21は、読み出されたレコードの最初のフィールドをkeyとするkeyの一覧を作成する。
 なお、素データは1レコードが1行の形式のデータから構成されるため、データ管理部21は、改行コードを検出することによって1レコード分のデータを読み出すことができる。
 精度を向上するためにサンプリング数を増やす場合には、データ管理部21は、サンプリング処理を並列実行してもよい。この場合、データ管理部21は、素データをデータサイズが等しくなるように複数個に分割し、分割された素データ毎にサンプリング処理が実行される。
 具体的には、データ管理部21は、サンプリング処理の実行タスクを各スレーブノード30に割り当て、さらに、当該実行タスクに分割された素データを割り当てる。データ管理部21は、各スレーブノード30の処理実行部31からサンプリング処理の結果を受信し、すべてのスレーブノード30から受信したサンプリング処理の結果を集計してkeyの一覧を作成する。
 次に、データ管理部21は、作成されたkeyの一覧に基づいて、素データの分割位置となるkeyの値を決定する(ステップS202)。
 当該分割処理は、後述するステップS204における入力された素データを出力するための分割処理であり、分割テーブルT200における分割処理とは異なる処理である。
 ただし、ステップS204の処理では、既存の分割位置は変更されない。したがって、素データの分割位置は、既存のデータセットの分割テーブルT200の分割位置に一致させる必要がある。
 具体的には、以下のような処理が実行される。
 データ管理部21は、分割テーブルT200を参照し、既存の全データセットの分割位置を含むキーサイズテーブルT400を作成する。例えば、図7Aに示すようなキーサイズテーブルT400が作成される。ただし、この時点では、サイズT402には値は格納されていない。
 データ管理部21は、サンプリングされたkey毎に対応する分割領域を特定し、キーサイズテーブルT400の対応するエントリのサイズT402に、keyに対応するデータのデータサイズをインクリメントする。
 以上のような処理によって、データ管理部21は、サンプリングされたkeyの分布を求めることができる。
 例えば、サンプリングされたkeyが「125d」である場合、当該keyは、「034a」以上かつ「172d」未満であるため、key(T401)が「172d」であるエントリのサイズT402にkeyが「125d」であるデータのデータサイズがインクリメントされる。
 データ管理部21は、keyの分布を求めた後、利用者によって指定された並列数と分割領域の数とが一致するように、キーサイズテーブルT400の隣り合う分割領域をマージする。このとき、マージ後の各分割領域のデータサイズが均等になることが望ましい。
 例えば、利用者によって指定された並列数が「2」の場合、keyの分布が図7Bに示すようなキーサイズテーブルT400は4つの分割領域があるため、マージして2つの分割領域にする必要がある。そこで、データ管理部21は、key(T401)が「034a」のエントリと「172d」のエントリとを1つの分割領域としてマージし、key(T401)が「328b」のエントリと空欄のエントリとを1つの分割領域としてマージする。
 マージ処理が終了した後、データ管理部21は、マージ結果をパーティションテーブルT300のkey(T301)に格納する。
 なお、前述したマージ処理において、キーサイズテーブルT400のエントリ数が、利用者によって指定された並列数以上の場合、マージ処理は実行されず、当該エントリ数が並列数となる。
 以上がステップS202における処理である。
 次に、データ管理部21は、分析処理において結合対象となる可能性がある全データセットのデータサイズを算出する(ステップS203)。さらに、データ管理部21は、算出結果に基づいて、キーサイズテーブルT400を作成する。
 具体的には、以下のような処理が実行される。
 データ管理部21は、データ管理テーブルT100を参照して、各データセットの分割テーブル名T102を取得する。さらに、データ管理部21は、取得された分割テーブル名T102に基づいて、対応する分割テーブルT200の一覧を取得する。
 なお、結合対象となり得る各データセットの分割テーブルT200における分割位置は一致している。したがって、分析処理において分割領域の結合を並列実行できる。
 データ管理部21は、取得された分割テーブルT200のkey(T203)を含むキーサイズテーブルT400を作成する。さらに、データ管理部21は、分割テーブルT200毎に各分割領域のデータサイズを算出し、作成されたキーサイズテーブルT400のサイズ(T402)に、算出されたデータサイズを加算する。
 取得されたすべての分割テーブルT200に対して同様の処理を実行することによって、分散ファイルシステム上に存在するすべての既存のデータセットに関するキーサイズテーブルT400を作成できる。
 例えば、図5A及び図5Bに示す分割テーブルT200に対して前述した処理を実行することによって、図7Aに示すようなキーサイズテーブルT400が作成される。
 以上がステップS203における処理である。
 次に、データ管理部21は、ステップS202におけるマージ結果を表すパーティションテーブルT300に基づいて、素データに対するグルーピング処理を実行する(ステップS204)。
 ここで、グルーピング処理とは、素データに含まれるレコードをkey(図20に示す例ではユーザID)毎に集約する処理である。
 グルーピング処理では、データ管理部21、データ追加部(Map)33及びデータ追加部(Reduce)34が連携して処理を実行する。
 データ追加部(Map)33及びデータ追加部(Reduce)34は、データ管理部21からの指示にしたがって、それぞれ並列処理を実行する。
 なお、パーティションテーブルT300のエントリ数が、タスクを割り当てるデータ追加部(Reduce)34の並列度となる。一方、タスクを割り当てるデータ追加部(Map)33の並列度は、パーティションテーブルT300のエントリ数とは無関係であり、利用者によって指定される。
 以下、データ追加部(Map)33をMapタスクと記載し、データ追加部(Reduce)34に割り当てるタスクをReduceタスクとも記載する。
 具体的には以下のような処理が実行される。
 データ管理部21は、利用者によって指定された並列数にしたがって、データサイズが一定となるように素データを分割する。さらに、データ管理部21は、素データを分割して生成された分割領域の各分割位置であるオフセット位置、及び当該分割領域のデータサイズを算出する。なお、オフセット位置はレコード境界に一致するように素データの一部をスキャンして調整される。
 データ管理部21は、処理管理部22と連携して、利用者によって指定された並列数分のMapタスクを生成し、生成されたMapタスクを各データ追加部(Map)33に割り当てる。このとき、各データ追加部(Map)33には、分割領域のオフセット位置、分割領域のデータサイズ、及び素データのファイル名が送信される。
 さらに、データ管理部21は、処理管理部22連携して、パーティションテーブルT300のエントリ数分のReduceタスクを生成する。
 また、データ管理部21は、パーティションテーブルT300の各エントリをデータ追加部(Reduce)34と対応づける。データ管理部21は、対応づけられた各データ追加部(Reduce)34に、key(T301)に対応するkey範囲の分割領域を処理するためのReduceタスクを割り当てる。
 さらに、データ管理部21は、ステップS202において作成されたキーサイズテーブルT400のうち、送信されたkey範囲に対応するエントリをデータ追加部(Reduce)34送信する。
 例えば、図6に示すパーティションテーブルT300の最初のエントリのkey範囲は、「172d」未満であるため、対応するキーサイズテーブルT400のエントリは、図7Aの一つ目のエントリ及び2つ目のエントリである。したがって、データ管理部21は、一つ目のエントリ及び2つ目のエントリを対応するデータ追加部(Reduce)34に送信する。
 さらに、データ管理部21は、データ追加部(Reduce)34の宛先情報(アドレス:ポート番号)を取得し、パーティションテーブルT300の対応するエントリの宛先T302に取得された宛先情報を格納する。
 パーティションテーブルT300が作成された後、処理管理部22は、すべてのデータ追加部(Map)33に完成したパーティションテーブルT300を送信する。
 以上がステップS204における処理である。
 なお、ステップS204におけるデータ追加部(Map)33及びデータ追加部(Reduce)34は、グルーピング処理が実行された後、データの出力処理を実行する。グルーピング処理の詳細については図10を用いて後述し、また、データの出力処理の詳細については図11を用いて後述する。
 データ管理部21は、分割テーブルT200を更新し、処理を終了する(ステップS205)。
 具体的には、データ管理部21は、各データ追加部(Reduce)34から受信した分割テーブルT200に基づいて、自身が管理する分割テーブルT200を更新する。なお、受信した分割テーブルT200は、データ追加部(Reduce)34が後述する処理(図10及び図11参照)が実行された後のテーブルである。
 データ追加部(Reduce)34は、一部のkey範囲のデータセットのみを処理する。本実施形態では、一つのデータ追加部(Reduce)34によって更新された分割テーブルT200に基づいて、データ分析システムにおけるすべての分割テーブルT200が更新される点に特徴がある。
 また、データ管理部21は、各データ追加部(Reduce)34から受信した、入力された素データの分割テーブルT200を1つにマージし、マージされたテーブルを入力された素データの分割テーブルT200として管理する。
 これは、key範囲毎に、各データ追加部(Reduce)34において素データに対する処理が並列実行されていたため、各処理結果を集約する処理である。
 さらに、データ管理部21は、素データの分割テーブルT200に対応するエントリをデータ管理テーブルT100に追加する。
 次に、ステップS204におけるグルーピング処理の詳細について説明する。
 図10は、本発明の第1の実施形態におけるグルーピング処理の詳細を説明するフローチャートである。
 スレーブノード30は、入力された素データに対してソート処理を実行する(ステップS301)。
 具体的には以下の処理が実行される。
 データ追加部(Map)33は、素データから1つずつレコードを読み出す。データ追加部(Map)33は、読み出されたレコードのkeyに基づいて、パーティションテーブルT300からデータ追加部(Reduce)34の宛先情報を取得する。すなわち、読み出されたレコードを処理するデータ追加部(Reduce)34が特定される。
 データ追加部(Map)33は、宛先毎に読み出された各レコードを分類する。以下、宛先ごとに分類されたレコード群をセグメントと記載する。
 データ追加部(Map)33は、自身が担当する分割された素データに含まれるすべてのレコードを読み出した後、各セグメントに含まれるレコードをkeyに基づいてソートする。
 以上がステップS301における処理である。
 次に、スレーブノード30は、ソートされたセグメントをデータ追加部(Reduce)34に送信する(ステップS302)。
 具体的には、データ追加部(Map)33が、ステップS301において取得された宛先情報に対応するデータ追加部(Reduce)34に、ソートされたセグメントを送信する。各データ追加部(Reduce)34は、各スレーブノード30のデータ追加部(Map)33から送信されるセグメントを受信する。
 データ追加部(Map)33からセグメントを受信したスレーブノード30は、keyに基づいて受信したセグメントをマージし、処理を終了する(ステップS303)。
 具体的には、データ追加部(Reduce)34が、受信したすべてのセグメントを順に読み出し、keyが同一のセグメント同士をマージして結合する。
 さらに、データ追加部(Reduce)34は、マージされたセグメントに含まれるレコードを、図10に示すような構造化データに変換する。前述した処理によって、複数のレコードが、keyが同一の1つのレコードに集約される。
 次に、ステップS204において、データ追加部(Reduce)34が実行するデータ出力処理について説明する。
 図11は、本発明の第1の実施形態におけるデータ出力処理を説明するフローチャートである。
 まず、データ出力処理の概要について説明する。
 データ追加部(Reduce)34は、データ出力処理を実行することによって、図22Aに示すような形式の構造化データを分散ファイルシステムへ出力する。並列度の数だけ、データ追加部(Reduce)34においてタスクが実行される。このとき、データ追加部(Reduce)34が出力するファイル名はそれぞれ異なる。
 さらに、本発明では、データ追加部(Reduce)34は、素データのデータサイズをキーサイズテーブルT400に加算して、素データが追加された後の各分割領域のデータサイズを算出する。
 データ追加部(Reduce)34は、データサイズが所定の閾値以上である分割領域が存在する場合、分割領域の分割処理を実行する。
 データ追加部(Reduce)34は、分割領域の分割処理が実行された場合、自身が管理する既存のデータセットの分割テーブルT200も更新する。さらに、データ追加部(Reduce)34は、更新された分割テーブルT200をデータ管理部21に送信する。更新された分割テーブルT200に基づいて、データ管理部21が、分割テーブルT200の更新処理(ステップS205)を実行する。
 また、データ追加部(Reduce)34は、入力された素データの分割テーブルT200を作成し、処理終了後に作成された分割テーブルT200をデータ管理部21に送信する。
 以下、各処理の詳細について説明する。
 まず、データ追加部(Reduce)34は、データ出力処理を開始する前に、ステップS204においてデータ管理部21から受信したキーサイズテーブルT400に含まれるkeyのみが格納されたキーサイズテーブルT400を作成する。ここで、作成されたキーサイズテーブルT400は、素データの所定の分割領域のデータサイズが格納されるテーブルである。
 以下、作成されたキーサイズテーブルT400を追加用キーサイズテーブルT400とも記載する。なお、追加用キーサイズテーブルT400が作成された時点では、サイズT402の初期値は「0」に設定される。
 また、データ管理部21から受信したキーサイズテーブルT400は、データ追加部(Reduce)34が担当するkey範囲に含まれる分散ファイルシステム上の全データセットのデータサイズを管理するテーブルである。以下、当該キーサイズテーブルT400を全データ用キーサイズテーブルT400と記載する。
 データ出力処理が開始されると、データ追加部(Reduce)34は、ステップS303において作成されたレコードを出力し、前回出力されたレコードとは異なる分割領域に含まれるレコードであるか否かを判定する(ステップS401)。
 具体的には、データ追加部(Reduce)34は、追加用キーサイズテーブルT400のkey(T402)を参照し、出力されたレコードが前回出力されたレコードと異なる分割領域に含まれるか否かを判定する。
 本実施形態では、keyに基づいてソートされたレコードが順に出力されるため、出力されたレコードが所定のkey範囲、すなわち、所定の分割領域に含まれるか否かを判定できる。
 なお、最初に出力されるレコードの場合、同一の分割領域に含まれると判定される。
 異なる分割領域に含まれるレコードであると判定された場合、データ追加部(Reduce)34は、前回レコードが追加された分割領域のデータサイズの確認処理を実行し(ステップS405)、ステップS402に進む。なお、データサイズの確認処理については、図12を用いて後述する。
 同一の分割領域に含まれるレコードであると判定された場合、データ追加部(Reduce)34は、ステップS303において作成されたレコードを分散ファイルシステムに書き込む(ステップS402)。
 このとき、データ追加部(Reduce)34は、書き込まれたレコードのkeyの値、レコードが書き込まれたファイル上のオフセット位置、及びレコードのデータサイズを含むレコード統計情報を作成し、作成されたレコード統計情報を保存する。これは、素データのレコード統計情報である。
 次に、データ追加部(Reduce)34は、キーサイズテーブルT400を更新する(ステップS403)。
 具体的には、データ追加部(Reduce)34は、ステップS402において書き込まれたレコードのkeyが含まれるkey範囲の分割領域を特定する。データ追加部(Reduce)34は、特定された分割領域に対応するエントリを、追加用キーサイズテーブルT400及び全データキーサイズテーブルT400から検索する。さらに、データ追加部(Reduce)34は、各キーサイズテーブルT400の対応するエントリのサイズT402に、書き込まれたレコードのデータサイズを加算する。
 データ追加部(Reduce)34は、すべてのレコードを出力したか否かを判定する(ステップS404)。
 すべてのレコードが出力されていないと判定された場合、データ追加部(Reduce)34は、ステップS401に戻り、同様の処理を実行する。
 すべてのレコードが出力されたと判定された場合、データ追加部(Reduce)34は、最後の分割領域に対するデータサイズの確認処理を実行し、処理を終了する(ステップS406)。なお、ステップS406におけるデータサイズの確認処理は、ステップS405と同一の処理である。
 図12は、本発明の第1の実施形態のおけるデータサイズの確認処理を説明するフローチャートである。
 データ追加部(Reduce)34は、ステップS403において更新された全データキーサイズテーブルT400を参照し、対象となる分割領域のデータサイズが所定の基準値より大きいか否かを判定する(ステップS501)。すなわち、素データが追加された分割領域が、所定の基準値より大きいか否かが判定される。
 ここで、対象となる分割領域とは、前回入力されたレコードが含まれる分割領域である。以下、対象となる分割領域を、対象領域とも記載する。
 具体的には、データ追加部(Reduce)34は、全データキーサイズテーブルT400の対応するエントリのサイズT402を参照し、対象領域のデータサイズが所定の基準値より大きいか否かを判定する。
 対象領域のデータサイズが所定の基準値以下であると判定された場合、データ追加部(Reduce)34は、ステップS506に進む。
 対象領域のデータサイズが所定の基準値より大きいと判定された場合、データ追加部(Reduce)34は、マスタノード20から既存のデータセットの分割テーブルT200を取得する(ステップS502)。
 ここで、ステップS203においてマスタノード20が取得したすべての分割テーブルT200が取得される。なお、データ追加部(Reduce)34は、マスタノード20から取得された分割テーブルT200をキャッシュとして保存してもよい。
 次に、データ追加部(Reduce)34は、取得された各分割テーブルT200における対象領域の終了位置、すなわち、オフセットを特定する(ステップS503)。
 具体的には以下のような処理が実行される。
 データ追加部(Reduce)34は、対象領域のkeyに基づいて、取得された各分割テーブルT200を参照して、対象領域に対応するエントリを取得する。すなわち、対象領域に対応するデータのデータファイル名T202及びオフセットT204が取得される。なお、当該処理は、ステップS502において取得されたすべての分割テーブルT200に対して実行される。
 例えば、ステップS501において図13に示すような全データキーサイズテーブルT400であり、最初のエントリに対応する分割領域のデータサイズが所定の基準値より大きい場合、データ追加部(Reduce)34は、図5A及び図5Bに示す分割テーブルT200の1つ目のエントリから情報を取得する。
 この場合、図5Aでは(データファイル名、オフセット)=(/log01/001.dat,280)となり、図5Bでは(/log02/002.dat,200)となる。取得されたオフセットが、各分割テーブルT200における対象領域の終了位置となる。
 なお、対象領域の開始位置は、1つ目のエントリであるため開始位置のオフセットは「0」である。
 次に、データ追加部(Reduce)34は、各既存のデータセットの対象領域に含まれるレコードを解析する(ステップS504)。
 具体的には、データ追加部(Reduce)34は、各既存のデータセットの対象領域に含まれるレコードを読み出す。例えば、データID(T101)が「log01」及び「log02」のデータセットがある場合に、「log01」のデータセットの対象領域からレコードが読み出され、また、「log02」のデータセットの対象領域からレコードが読み出される。
 データ追加部(Reduce)34は、読み出されたレコードのkey、レコードのデータサイズ、及びレコードのファイル上のオフセット位置を含むレコード統計情報を取得する。
 なお、既存のデータセットは複数存在するため、当該レコードの解析処理をデータセット毎に並列実行してもよい。
 データ追加部(Reduce)34は、ステップS402において取得された素データのレコード統計情報と、既存データセットのレコード統計情報とを合わせて、分散ファイルシステム上における全データセットのレコード統計情報とする。
 次に、データ追加部(Reduce)34は、作成された全データセットのレコード統計情報に基づいて、再分割する分割位置となるkeyの値を決定する(ステップS505)。
 具体的には以下のような処理が実行される。
 データ追加部(Reduce)34は、全データセットのレコード統計情報に基づいて、対象領域におけるデータサイズを算出する。
 データ追加部(Reduce)34は、算出されたデータサイズ及び所定の基準値に基づいて、対象領域における分割数を算出する。
 次に、データ追加部(Reduce)34は、対象領域のデータサイズを、算出された分割数で除算して、再分割後の分割領域のデータサイズを算出する。
 データ追加部(Reduce)34は、全データセットのレコード統計情報のエントリをkeyでソートした後、レコードのデータサイズの累積値分布を算出する。すなわち、分散ファイルシステムにおける所定のkey範囲に含まれる各レコードのデータサイズの分布が算出される。
 データ追加部(Reduce)34は、算出された累積値分布に基づいて、レコードのデータサイズが分割後の分割領域のデータサイズの整数倍になっている地点を再分割の分割位置として決定する。整数倍になっていない場合、当該テータサイズと最も近いレコードが分割位置として決定される。
 再分割位置のkeyは、データとして存在するkeyを使ってもよいし、データとして存在しないkeyを使ってもよい。
 データ追加部(Reduce)34は、全データセットのレコード統計情報を参照して、決定された各key範囲に対応するオフセットを特定する。
 データ追加部(Reduce)34は、各分割テーブルT200に再分割後の分割領域に対応するエントリを追加する。また、データ追加部(Reduce)34は、各分割テーブルT200から再分割前の分割領域に対応するエントリを削除する。
 例えば、key範囲が「034a」未満である分割領域が、key範囲が「015d」未満である分割領域と、key範囲が「015d」以上かつ「034a」未満である分割領域との2つの分割領域に分割された場合、図5A及び図5Bに示す分割テーブルT200は、図14A及び図14Bのように変更される。図中の太線で示した部分が変更箇所である。
 データ追加部(Reduce)34は、レコード統計情報に基づいて、追加用キーサイズテーブルT400及び全データキーサイズテーブルT400も変更する。
 例えば、再分割前の全データキーサイズテーブルT400が図13に示すテーブルである場合、図15に示すように変更される。図中の太線で示した部分が変更箇所である。
 以上がステップS505の処理である。
 次に、データ追加部(Reduce)34は、分割テーブルT200を更新する(ステップS506)。
 具体的には、データ追加部(Reduce)34は、追加用キーサイズテーブル及び素データのレコード統計情報に基づいて、素データの分割テーブルT200に対応する分割領域のエントリを格納する。すなわち、素データの分割テーブルT200が生成される。
 なお、再分割処理が実行された場合には、新たに分割された分割領域に対応するエントリが格納される。
 データ追加部(Reduce)34は、前述した処理に用いたレコード統計情報を削除し、処理を終了する(ステップS507)。
 [第2の実施形態]
 第1の実施形態では、ファイルの内容は1つのファイルに保存されているため分析処理時に不要なデータも読み出される可能性がある。これに対して、第2の実施形態では、データ項目(列)毎に異なるファイルとして保存する方式を用いる。当該方式を用いることによって、分析処理時に必要な項目のみ読み出すことが可能となる。
 本発明は、データ項目毎に異なるファイルに保存する格納方式(列分割格納方式)にも対応することが可能である。
 以下、第1の実施形態との差異を中心に第2の実施形態について説明する。
 第2の実施形態では、データ分析システムの構成は第1の実施形態と同一であるため説明を省略する。また、マスタノード20及びスレーブノード30のハードウェア構成及びソフトウェア構成も第1の実施形態と同一であるため説明を省略する。
 図16は、本発明の第2の実施形態におけるレコードのスキーマを示す説明図である。図17は、本発明の第2の実施形態におけるレコードの一例を示す説明図である。
 第1の実施形態のレコードに対して、第2の実施形態のレコードにはユーザの年齢が新たに含まれる。
 レコードの項目は、ユーザID、移動履歴(位置X、位置Y、タイムスタンプの履歴)、及び年齢の3種類があり、本実施形態ではユーザIDがkeyとして使用される。
 図18A、図18B及び図18Cは、本発明の第2の実施形態におけるファイルを示す説明図である。
 図18A、図18B及び図18Cでは、列分割方式を用いて前述したデータがファイルに格納された例を表す。
 図18A、図18B及び図18Cに示すように、ユーザIDはlog/001.key.dat(図18A)、移動履歴はlog/001.rec.dat(図18B)、年齢はlog/001.age.dat(図18C)というファイルにそれぞれ格納される。
 データを読み出すときは、各ファイルの上から順にレコードが1つずつ読み出され、順に結合すれば図17に示したレコード全体を再構成することができる。
 図18A、図18B及び図18Cに示す例では、ファイルは1セットのみであるが、データが定期的に蓄積されていくことによって、ユーザID、移動履歴、及び年齢に対応するファイルを含むデータセットが増加する。
 実際の結合処理及び分析処理では並列して実行されるため、前述のファイルが分割された後、各スレーブノード30によって処理が実行される。
 図19は、本発明の第2の実施形態における分割テーブルT200の一例を示す説明図である。
 第2の実施形態における分割テーブルT200は、項目毎(ユーザID、移動履歴、及び年齢)にデータファイル名T202及びオフセットT204を格納する点が第1の実施形態と異なる。また、keyとして使用される項目には、key(T203)に分割位置を表すkeyの値が格納される。
 次に、第2の実施形態における結合処理及び分析処理について第1の実施形態との相違点を中心に説明する。
 ステップS101では、キーサイズテーブルT400が作成される場合に、データ管理部21が、分割テーブルT200の中で分析処理に用いる項目のオフセットを参照して、各分割領域のサイズを計算する。
 例えばユーザIDと年齢のみを使用する分析を行う場合は、「uid」のオフセットと「age」のオフセットのみを使ってキーサイズテーブルのサイズを求める。このとき、「rec」についてのオフセットは使用されない。
 これによって、一部の項目のみ利用する場合であっても、各分割領域のデータサイズを正確に算出できる。
 また、S104では、タスクが割り当てられた各スレーブノード30が、分析処理に用いるファイル数と、分析処理に用いる項目数との積の数分だけ、ファイルが読み出される。
 データ追加処理についても以下のような相違がある。
 ステップS203では、データ管理部21が、結合する可能性があるすべてのデータセットの分割テーブルT200の項目毎のオフセットから、既存データセットのキーサイズテーブルT400を作成する。
 ステップS402では、各レコードをファイル出力するとき、項目毎に別のファイルに出力される。したがって、ステップS402では項目毎に、書き込まれたレコードのkeyの値、書き込まれたファイル上のオフセット、及びデータサイズを含むレコード統計情報が保存される。
 また、ステップS403では、全項目の分割領域のサイズの和をキーサイズテーブルT400の対応するエントリに加算される。
 S506では、前述したレコード統計情報及びキーサイズテーブルT400を用いて、項目毎に分割位置のオフセット値を求めて分割テーブルT200を更新する。
 S504では、データに含まれる全項目に対応するファイルが読み出され、項目毎に、ファイルに書き込まれたレコードのkeyの値、書き込んだファイル上のオフセット位置、及びデータサイズを含むレコード統計情報が保存される。
 S505では、データ追加部(Reduce)34が、全項目の分割領域のデータサイズを足し合わせたものを当該データセットのデータサイズとして、分割位置のkeyを決定する。
 S506では、データ追加部(Reduce)34が、決定されたkey及びレコード統計情報を用いて、項目毎に分割位置のオフセットを算出し、分割テーブルT200を更新する。
 第2の実施形態では、3つの項目を処理する場合について説明したが、分割テーブルT200において管理される項目数を変更することによって任意の項目数にすることができる。
 本発明の一形態によれば、データ分析システムは、各データセットの分割位置が同一であるため分析処理における結合処理を並列に実行することができる。また、新たにデータセットが追加された場合に、タスク間の処理量が均一になるように分割領域を再分割することができる。これによって、タスク間の処理の不均衡を解消し、かつ、結合処理時に分散領域毎にレコードを結合することができる。
 以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。

Claims (16)

  1.  キー及びデータ値から構成されるデータを複数含むデータセットに対する分析処理を複数の計算機が並列実行する計算機システムであって、
     前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記のプロセッサに接続される記憶装置と、前記プロセッサに接続されるネットワークインタフェースとを有し、
     前記各計算機は、所定のキー範囲毎に前記データセットを分割した分割領域の分割位置を示すキーである分割位置キーを管理する分割情報を、前記データセット毎に保持し、
     前記各データセットの前記分割情報に含まれるすべての前記分割位置キーは同一であり、
     前記複数の計算機が有する記憶領域上には、前記データセットを格納するファイルシステムが構成され、
     前記計算機システムは、
     前記分析処理を実行する場合に、前記分割領域毎に複数のタスクを生成し、
     前記生成されたタスクを前記各計算機に割り当てて、前記各データセットの分割領域に含まれる前記データを結合して前記分析処理を実行し、
     前記ファイルシステムに新規データセットが格納された場合に、前記新規データセットが格納された後の各分割領域のデータサイズに基づいて、所定の閾値より大きいデータサイズの前記分割領域である対象領域が存在するか否かを判定し、
     前記対象領域が存在すると判定された場合、前記対象領域を複数の新たな分割領域に分割することを特徴とする計算機システム。
  2.  前記ファイルシステムに新規データセットを格納する場合に、前記新規データセットのキー分布を解析し、
     前記解析結果に基づいて、既存の前記データセットの分割情報に含まれるすべての前記分割位置キーと同一となるように、前記新規データセットの前記分割情報を生成することを特徴とする請求項1に記載の計算機システム。
  3.  前記対象領域が分割された後に、前記既存のデータセットの分割情報における前記分割位置キーを更新することを特徴とする請求項2に記載の計算機システム。
  4.  前記対象領域が存在するか否かを判定する場合に、すべての前記データセットの前記分割領域のデータサイズを合計して、前記計算機システムにおける前記分割領域のデータサイズである第1のデータサイズを算出し、
     前記算出された第1のデータサイズが、前記所定の閾値より大きい前記分割領域が存在するか否か判定し、
     前記対象領域を分割する場合に、前記すべてのデータセットの前記対象領域のデータサイズを合計することによって、前記計算機システムにおける前記対象領域のデータサイズである第2のデータサイズを算出し、
     前記所定の閾値、及び前記算出された第2のデータサイズに基づいて、前記対象領域の分割数を算出し、
     前記算出された分割数に基づいて、前記対象領域における新たな分割位置キーを決定し、
     前記既存のデータセットの分割情報の前記分割位置キーを更新する場合に、前記既存のデータセットの分割情報から、前記対象領域に対応する情報を削除し、前記決定された分割位置キーと前記新たな分割領域とを対応づけた情報を追加し、
     前記新データセットの分割情報を生成する場合に、前記更新された既存のデータセットの分割情報における前記分割キーと同一となるように前記新規データセットの分割情報を生成することを特徴とする請求項3に記載の計算機システム。
  5.  前記対象領域を分割する場合に、前記対象領域のデータサイズを前記算出された分割数で除算して第3のデータサイズを算出し、
     前記算出された第3のデータサイズに対応する前記データにおける前記キーを、前記分割位置キーとして決定することを特徴とする請求項4に記載の計算機システム。
  6.  前記所定の閾値は、前記新たな分割領域が割り当てられるタスクの処理時間が予め設定された許容時間以下となるデータサイズであることを特徴とする請求項4に記載の計算機システム。
  7.  前記データは、複数の項目毎のデータ値を含み、
     前記第1のデータサイズを算出する場合に、前記分割領域における全ての項目のデータサイズを合計することによって、前記第1のデータサイズを算出することを特徴とする請求項4に記載の計算機システム。
  8.  前記新規データセットのキー分布を解析する場合に、前記既存のデータセットの分割情報に含まれる前記分割位置キーのいずれかに一致する分割位置キーで前記新規データセットを分割して複数の処理用分割領域を生成し、
     前記生成された処理用分割領域毎に、前記新規データセットのキー分布を解析するためのタスクを生成して、当該タスクを並列に実行することを特徴とする請求項2に記載の計算機システム。
  9.  キー及びデータ値から構成されるデータを複数含むデータセットに対する分析処理を複数の計算機が並列実行する計算機システムにおけるデータ管理方法であって、
     前記各計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続される記憶装置と、前記プロセッサに接続されるネットワークインタフェースとを有し、
     前記各計算機は、所定のキー範囲毎に当該データセットを分割した分割領域の分割位置を示すキーである分割位置キーを管理する分割情報を、前記データセット毎に保持し、
     前記各データセットの前記分割情報に含まれる全てのすべての前記分割位置キーは同一であり、
     前記複数の計算機が有する記憶領域上には、前記データセットを格納するファイルシステムが構成され、
     前記方法は、
     少なくとも一つの前記計算機が、前記分析処理を実行する場合に、前記分割領域毎に複数のタスクを生成する第1のステップと、
     前記タスクを生成した前記計算機が、前記生成されたタスクを前記各計算機に割り当てて、前記各データセットの分割領域に含まれる前記データを結合して前記分析処理を実行させる第2のステップと、を含み、
     少なくとも一つの前記計算機が、前記ファイルシステムに新規データセットが格納された場合に、前記新規データセットが格納された後の各分割領域のデータサイズに基づいて、所定の閾値より大きいデータサイズの前記分割領域である対象領域が存在するか否かを判定する第3のステップと、
     前述した判定処理を実行した前記計算機が、前記対象領域が存在すると判定された場合、前記対象領域を複数の新たな分割領域に分割する第4のステップと、
     を含むことを特徴とするデータ管理方法。
  10.  前記第3のステップは、
     前記新規データセットのキー分布を解析する第5のステップと、
     前記解析結果に基づいて、既存の前記データセットの分割情報に含まれるすべての前記分割位置キーと同一となるように、前記新規データセットの前記分割情報を生成する第6のステップと、を含むことを特徴とする請求項9に記載のデータ管理方法。
  11.  前記第4のステップは、前記対象領域が分割された後に、前記既存のデータセットの分割情報における前記分割位置キーを更新する第7のステップを含むことを特徴とする請求項10に記載のデータ管理方法。
  12.  前記第3のステップは、
     すべての前記データセットの前記分割領域のデータサイズを合計して、前記計算機システムにおける前記分割領域のデータサイズである第1のデータサイズを算出する第8のステップと、
     前記算出された第1のデータサイズが、前記所定の閾値より大きい前記分割領域が存在するか否か判定する第9のステップと、を含み、
     前記第4のステップは、
     前記すべてのデータセットの前記対象領域のデータサイズを合計することによって、前記計算機システムにおける前記対象領域のデータサイズである第2のデータサイズを算出する第10のステップと、
     前記所定の閾値、及び前記算出された第2のデータサイズに基づいて、前記対象領域の分割数を算出する第11のステップと、
     前記算出された分割数に基づいて、前記対象領域における新たな分割位置キーを決定する第12のステップと、を含み、
     前記第7のステップは、前記既存のデータセットの分割情報から、前記対象領域に対応する情報を削除し、前記決定された分割位置キーと前記新たな分割領域とを対応づけた情報を追加する第13のステップを含み、
     前記第6のステップは、前記更新された既存のデータセットの分割情報における前記分割キーと同一となるように前記新規データセットの分割情報を生成する第14のステップを含むことを特徴とする請求項11に記載のデータ管理方法。
  13.  前記第12のステップは、
     前記対象領域のデータサイズを前記算出された分割数で除算して第3のデータサイズを算出するステップと、
     前記算出された第3のデータサイズに対応する前記データにおける前記キーを、前記分割位置キーとして決定するステップと、を含むことを特徴とする請求項12に記載のデータ管理方法。
  14.  前記所定の閾値は、前記新たな分割領域が割り当てられるタスクの処理時間が予め設定された許容時間以下となるデータサイズであることを特徴とする請求項12に記載のデータ管理方法。
  15.  前記データは、複数の項目毎のデータ値を含み、
     前記第8のステップでは、前記分割領域における全ての項目のデータサイズを合計することによって、前記第1のデータサイズを算出することを特徴とする請求項12に記載のデータ管理方法。
  16.  前記第5のステップは、
     前記既存のデータセットの分割情報に含まれる前記分割位置キーのいずれかに一致する分割位置キーで前記新規データセットを分割して複数の処理用分割領域を生成するステップと、
     前記生成された処理用分割領域毎に、前記新規データセットのキー分布を解析するためのタスクを生成して、当該タスクを前記各計算機上で並列に実行させるステップと、を含むことを特徴とする請求項10に記載のデータ管理方法。
PCT/JP2011/057940 2011-03-30 2011-03-30 計算機システム及びデータ管理方法 WO2012131927A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2011/057940 WO2012131927A1 (ja) 2011-03-30 2011-03-30 計算機システム及びデータ管理方法
US13/977,849 US20130297788A1 (en) 2011-03-30 2011-03-30 Computer system and data management method
JP2013506934A JP5342087B2 (ja) 2011-03-30 2011-03-30 計算機システム及びデータ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/057940 WO2012131927A1 (ja) 2011-03-30 2011-03-30 計算機システム及びデータ管理方法

Publications (1)

Publication Number Publication Date
WO2012131927A1 true WO2012131927A1 (ja) 2012-10-04

Family

ID=46929753

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/057940 WO2012131927A1 (ja) 2011-03-30 2011-03-30 計算機システム及びデータ管理方法

Country Status (3)

Country Link
US (1) US20130297788A1 (ja)
JP (1) JP5342087B2 (ja)
WO (1) WO2012131927A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014195818A1 (en) * 2013-06-07 2014-12-11 International Business Machines Corporation Method and system for efficient sorting in a relational database
JP2018036885A (ja) * 2016-08-31 2018-03-08 ヤフー株式会社 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
JP2020107010A (ja) * 2018-12-27 2020-07-09 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
CN118060744A (zh) * 2024-04-16 2024-05-24 成都沃特塞恩电子技术有限公司 用于物料切割的可视化系统及方法

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5825122B2 (ja) * 2012-01-31 2015-12-02 富士通株式会社 生成プログラム、生成方法、および生成システム
US10218775B2 (en) * 2013-08-28 2019-02-26 Usablenet Inc. Methods for servicing web service requests using parallel agile web services and devices thereof
US20150286409A1 (en) * 2014-04-08 2015-10-08 Netapp, Inc. Storage system configuration analysis
US10223379B2 (en) 2014-09-04 2019-03-05 International Business Machines Corporation Parallel processing of a keyed index file system
US10157218B2 (en) 2015-06-30 2018-12-18 Researchgate Gmbh Author disambiguation and publication assignment
US10133807B2 (en) * 2015-06-30 2018-11-20 Researchgate Gmbh Author disambiguation and publication assignment
US9928291B2 (en) * 2015-06-30 2018-03-27 Researchgate Gmbh Author disambiguation and publication assignment
CN106201673B (zh) * 2016-06-24 2019-07-09 中国石油天然气集团公司 一种地震数据处理方法及装置
JP6844414B2 (ja) * 2017-05-23 2021-03-17 富士通株式会社 分散データ管理プログラム、分散データ管理方法及び分散データ管理装置
US9934287B1 (en) * 2017-07-25 2018-04-03 Capital One Services, Llc Systems and methods for expedited large file processing
US10873529B2 (en) * 2017-12-01 2020-12-22 Futurewei Technologies, Inc. Method and apparatus for low latency data center network
US10715499B2 (en) * 2017-12-27 2020-07-14 Toshiba Memory Corporation System and method for accessing and managing key-value data over networks
US10855767B1 (en) * 2018-03-05 2020-12-01 Amazon Technologies, Inc. Distribution of batch data to sharded readers
CN109033355B (zh) * 2018-07-25 2021-07-06 北京易观智库网络科技有限公司 进行漏斗分析的方法、装置以及存储介质
CN111045825A (zh) * 2019-12-12 2020-04-21 深圳前海环融联易信息科技服务有限公司 批处理性能优化方法、装置、计算机设备及存储介质
CN113934361B (zh) * 2020-06-29 2024-05-03 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
CN112799820B (zh) * 2021-02-05 2024-06-11 拉卡拉支付股份有限公司 数据处理方法、装置、电子设备、存储介质及程序产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1097544A (ja) * 1996-09-20 1998-04-14 Hitachi Ltd データベース処理システム
JP2010092222A (ja) * 2008-10-07 2010-04-22 Internatl Business Mach Corp <Ibm> 更新頻度に基づくキャッシュ機構
JP2010128721A (ja) * 2008-11-26 2010-06-10 Nippon Telegr & Teleph Corp <Ntt> 分散インデックス結合方法及びシステム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307485A (en) * 1991-05-31 1994-04-26 International Business Machines Corporation Method and apparatus for merging sorted lists in a multiprocessor shared memory system
US5671405A (en) * 1995-07-19 1997-09-23 International Business Machines Corporation Apparatus and method for adaptive logical partitioning of workfile disks for multiple concurrent mergesorts
US5842208A (en) * 1997-04-09 1998-11-24 International Business Machines Corporation High performance recover/build index system by unloading database files in parallel
US6728694B1 (en) * 2000-04-17 2004-04-27 Ncr Corporation Set containment join operation in an object/relational database management system
JP5238219B2 (ja) * 2007-10-29 2013-07-17 株式会社東芝 情報処理システム及びパイプライン処理制御方法
CN101916261B (zh) * 2010-07-28 2013-07-17 北京播思软件技术有限公司 一种分布式并行数据库系统的数据分区方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1097544A (ja) * 1996-09-20 1998-04-14 Hitachi Ltd データベース処理システム
JP2010092222A (ja) * 2008-10-07 2010-04-22 Internatl Business Mach Corp <Ibm> 更新頻度に基づくキャッシュ機構
JP2010128721A (ja) * 2008-11-26 2010-06-10 Nippon Telegr & Teleph Corp <Ntt> 分散インデックス結合方法及びシステム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014195818A1 (en) * 2013-06-07 2014-12-11 International Business Machines Corporation Method and system for efficient sorting in a relational database
JP2016524758A (ja) * 2013-06-07 2016-08-18 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation リレーショナル・データベースにおける効率的なソートのための方法およびシステム
US9916339B2 (en) 2013-06-07 2018-03-13 International Business Machines Corporation Efficient sorting in a relational database
JP2018036885A (ja) * 2016-08-31 2018-03-08 ヤフー株式会社 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
JP2020107010A (ja) * 2018-12-27 2020-07-09 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
JP7174245B2 (ja) 2018-12-27 2022-11-17 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
CN118060744A (zh) * 2024-04-16 2024-05-24 成都沃特塞恩电子技术有限公司 用于物料切割的可视化系统及方法

Also Published As

Publication number Publication date
US20130297788A1 (en) 2013-11-07
JPWO2012131927A1 (ja) 2014-07-24
JP5342087B2 (ja) 2013-11-13

Similar Documents

Publication Publication Date Title
JP5342087B2 (ja) 計算機システム及びデータ管理方法
Taylor An overview of the Hadoop/MapReduce/HBase framework and its current applications in bioinformatics
Ramakrishnan et al. Balancing reducer skew in MapReduce workloads using progressive sampling
US12105712B2 (en) Distinct value estimation for query planning
US8417991B2 (en) Mitigating reduction in availability level during maintenance of nodes in a cluster
US9886441B2 (en) Shard aware near real time indexing
US10381106B2 (en) Efficient genomic read alignment in an in-memory database
US11012806B2 (en) Multi-adapter support in the cloud
US12026159B2 (en) Transient materialized view rewrite
US20090030880A1 (en) Model-Based Analysis
US20200065415A1 (en) System For Optimizing Storage Replication In A Distributed Data Analysis System Using Historical Data Access Patterns
CN118318230A (zh) 使用混合查询执行计划的列式缓存查询
JP6204753B2 (ja) 分散クエリ処理装置、処理方法及び処理プログラム
US11449521B2 (en) Database management system
JP4747213B2 (ja) 文書を収集するためのシステムおよびプログラム
CN110851515B (zh) 一种基于Spark分布式环境下的大数据ETL模型执行方法及介质
US11200213B1 (en) Dynamic aggregation of data from separate sources
CN108595552A (zh) 数据立方体发布方法、装置、电子设备和存储介质
Liu et al. Planning your sql-on-hadoop deployment using a low-cost simulation-based approach
JP6401617B2 (ja) データ処理装置、データ処理方法及び大規模データ処理プログラム
US9158767B2 (en) Lock-free indexing of documents
US8990612B2 (en) Recovery of a document serving environment
Chaudhary et al. AdMap: a framework for advertising using MapReduce pipeline
Shi et al. PECC: parallel expansion based on clustering coefficient for efficient graph partitioning
JP2011103106A (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: 11862701

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2013506934

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 13977849

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11862701

Country of ref document: EP

Kind code of ref document: A1