WO2013179451A1 - Parallel data processing system, computer, and parallel data processing method - Google Patents

Parallel data processing system, computer, and parallel data processing method Download PDF

Info

Publication number
WO2013179451A1
WO2013179451A1 PCT/JP2012/064149 JP2012064149W WO2013179451A1 WO 2013179451 A1 WO2013179451 A1 WO 2013179451A1 JP 2012064149 W JP2012064149 W JP 2012064149W WO 2013179451 A1 WO2013179451 A1 WO 2013179451A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
record
data set
thread
input data
Prior art date
Application number
PCT/JP2012/064149
Other languages
French (fr)
Japanese (ja)
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 EP12878202.6A priority Critical patent/EP2857975A4/en
Priority to JP2014518181A priority patent/JP5881025B2/en
Priority to US14/404,550 priority patent/US9841989B2/en
Priority to PCT/JP2012/064149 priority patent/WO2013179451A1/en
Publication of WO2013179451A1 publication Critical patent/WO2013179451A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

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

Abstract

A parallel data processing system having a parallel data processing execution unit for reading data from a data group, which includes a first data group including a plurality of first data and a second data group including a plurality of second data, and executing a process. The parallel data processing execution unit: (A) reads a first data from the first data group, and acquires a first value from the first data on the basis of first format information acquired from an application; (B) generates, on the basis of first reference information acquired from the application, one or more threads for reading from the second data group each of one or more second data corresponding to the first value; (C) executes (A) and (B) with respect to one or more first data of the first data group; and (D) executes a plurality of threads in parallel.

Description

並列データ処理システム、計算機および並列データ処理方法Parallel data processing system, computer, and parallel data processing method
 本発明は、並列データ処理技術に関する。 The present invention relates to parallel data processing technology.
 企業等の活動においては、業務等に係る大量のデータを戦略的に利用することが極めて重要になってきている。大量のデータを利用するための情報システムとしては、Hadoopをはじめとする並列データ処理システムが用いられている。当該並列データ処理システムは、例えば、特許文献1に開示されている。 In the activities of companies, etc., it is becoming extremely important to use a large amount of data related to operations strategically. As an information system for using a large amount of data, a parallel data processing system such as Hadoop is used. The parallel data processing system is disclosed in Patent Document 1, for example.
米国特許第7756919号明細書US Pat. No. 7,756,919
 Hadoopをはじめとする並列データ処理システムにおいては、ストレージ等に格納されたデータセット(例えばファイルシステムに格納されたファイル)の全体を読み込んで処理することを基本としている。例えば、アプリケーション(ジョブ)が処理の対象とするデータに選択性を有する場合(即ち、ストレージ等に格納されたデータセットのうち一部のレコードを処理の対象とする場合)であっても、データセットの全体を読み込む必要があり、データ処理が必ずしも効率的でなく行われ、よってデータ処理に係る時間が長くなる場合がある。また、データセットが巨大化するに従い、データセットの全体を読み込むのに要する時間が長くなり、よってデータ処理に係る時間が長くなる場合がある。 In parallel data processing systems such as Hadoop, the entire data set stored in storage or the like (for example, a file stored in a file system) is basically read and processed. For example, even when an application (job) has selectivity for data to be processed (that is, when some records of a data set stored in a storage or the like are to be processed), the data The entire set needs to be read, and data processing is not necessarily efficient, and thus the time required for data processing may be increased. Further, as the data set becomes larger, the time required to read the entire data set becomes longer, and thus the time required for data processing may become longer.
 そこで、本発明の目的は、データ処理に係る時間を短縮することにある。 Therefore, an object of the present invention is to shorten the time for data processing.
 複数の計算ノード(例えば、計算機)において並行してデータ処理を実行する計算機システムにおける1つの計算ノードが有する並列データ処理システムが、複数の第1データを含む第1データ群と複数の第2データを含む第2データ群とを含むデータ群からデータを読み込んで処理を実行する並列データ処理実行部を有する。並列データ処理システムは、例えば、後述する実施例1及び2におけるシステムモジュールでよい。第1データ群における第1データが、第2データ群の第2データに対応していてよい。例えば、第1データ群は第2データ群の索引であってよい。この際、第1データは、第2データの索引鍵の値と、当該索引鍵の値に対応する1以上の第2データへの参照を含んでよい。 A parallel data processing system included in one computing node in a computer system that executes data processing in parallel in a plurality of computing nodes (for example, a computer) includes a first data group including a plurality of first data and a plurality of second data. A parallel data processing execution unit that reads data from the data group including the second data group and executes the process. The parallel data processing system may be, for example, a system module in the first and second embodiments described later. The first data in the first data group may correspond to the second data in the second data group. For example, the first data group may be an index of the second data group. In this case, the first data may include an index key value of the second data and a reference to one or more second data corresponding to the index key value.
 並列データ処理実行部は、
(A)第1データ群から、第1データを読み込み、アプリケーションから取得した第1書式情報に基づいて、第1データから第1の値を取得し、
(B)アプリケーションから取得した第1参照情報に基づき、第1の値に対応する1以上の第2データのそれぞれを第2データ群から読み込むための1以上のスレッドを生成し、
(C)(A)~(B)を、第1データ群の1以上の第1データに対して実行し、
(D)複数の前記スレッドを並行して実行する。
The parallel data processing execution unit
(A) Reading the first data from the first data group, acquiring the first value from the first data based on the first format information acquired from the application,
(B) generating one or more threads for reading each of the one or more second data corresponding to the first value from the second data group based on the first reference information acquired from the application;
(C) performing (A) to (B) on one or more first data in the first data group;
(D) A plurality of the threads are executed in parallel.
 並列データ処理システムは、処理の指示をアプリケーションから受け付ける受付部を更に有していてよい。アプリケーションからの指示は、一般に、手続を規定しているが、並列データ処理実行部は、アプリケーションからの指示を受けて、(A)乃至(D)を実行することにより、アプリケーションからの指示が、手続を規定していても、並列データ処理システムは、手続に依存しない非順序の処理を実行することができる。 The parallel data processing system may further include a reception unit that receives processing instructions from the application. The instruction from the application generally defines the procedure, but the parallel data processing execution unit receives the instruction from the application and executes (A) to (D), so that the instruction from the application is Even if the procedure is defined, the parallel data processing system can execute out-of-order processing independent of the procedure.
 本発明によれば、計算ノードはデータ処理に係るデータの読み込みを並行して実行することができるようになる。これにより、データ読み込みのスループットが向上し、故に、データ処理に係る時間が短縮されることが期待される。 According to the present invention, the calculation node can read data related to data processing in parallel. Thereby, it is expected that the throughput of data reading is improved, and therefore, the time for data processing is shortened.
図1Aは、実施例1に係るジョブ実行モデルを示す。FIG. 1A illustrates a job execution model according to the first embodiment. 図1Bは、実施例2に係るジョブ実行モデルを示す。FIG. 1B illustrates a job execution model according to the second embodiment. 図2Aは、実施例1に係る計算ノードの構成を示す。FIG. 2A illustrates a configuration of a calculation node according to the first embodiment. 図2Bは、実施例2に係る計算ノードの構成を示す。FIG. 2B illustrates a configuration of a calculation node according to the second embodiment. 図3Aは、実施例に係る計算機システムの第1の構成例を示す。FIG. 3A illustrates a first configuration example of the computer system according to the embodiment. 図3Bは、実施例に係る計算機システムの第2の構成例を示す。FIG. 3B illustrates a second configuration example of the computer system according to the embodiment. 図4Aは、実施例1に係るマップタスク実行処理の流れを示す。FIG. 4A shows a flow of map task execution processing according to the first embodiment. 図4Bは、実施例2に係るタスク実行処理の流れを示す。FIG. 4B shows a flow of task execution processing according to the second embodiment. 図5Aは、実施例1に係る入力データ及び入力データに対する処理を説明するための図である。FIG. 5A is a diagram for explaining the input data and the process for the input data according to the first embodiment. 図5Bは、実施例1に係る書式及び参照の一例を示す。FIG. 5B shows an example of a format and reference according to the first embodiment. 図5Cは、スレッド生成及びスレッドの実行を説明する模式図の一例である。FIG. 5C is an example of a schematic diagram illustrating thread generation and thread execution. 図5Dは、実施例2に係る入力データ及び入力データに対する処理を説明するための第1の図である。FIG. 5D is a first diagram for explaining the input data and the process for the input data according to the second embodiment. 図5Eは、実施例2に係る入力データ及び入力データに対する処理を説明するための第2の図である。FIG. 5E is a second diagram for explaining the input data and the process for the input data according to the second embodiment. 図5Fは、実施例2に係る書式の一例を示す。FIG. 5F shows an example of a format according to the second embodiment. 図5Gは、実施例2に係る参照方式の一例を示す。FIG. 5G illustrates an example of a reference method according to the second embodiment. 図5Hは、実施例2に係るカタログの一例を示す。FIG. 5H illustrates an example of a catalog according to the second embodiment. 図6Aは、データ取得時のセッションを説明するための模式図の一例である。FIG. 6A is an example of a schematic diagram for explaining a session during data acquisition. 図6Bは、変形例に係るデータ取得時のブロック化セッションを説明するための模式図の一例である。FIG. 6B is an example of a schematic diagram for explaining a blocked session at the time of data acquisition according to the modification. 図7Aは、実施例1に係るレコードを取得する計算ノードにおけるレコード取得処理の流れを示す。FIG. 7A shows a flow of a record acquisition process in a calculation node that acquires a record according to the first embodiment. 図7Bは、実施例1に係るレコードを管理する計算ノードにおけるレコード取得処理の流れを示す。FIG. 7B shows a flow of record acquisition processing in a calculation node that manages records according to the first embodiment. 図7Cは、実施例1に係るデータ読み込み要求管理表及びリモートレコード取得要求管理表の構成を示す。FIG. 7C illustrates the configuration of the data read request management table and the remote record acquisition request management table according to the first embodiment. 図7Dは、実施例1の変形例に係るレコードを取得する計算ノードにおけるレコード取得処理の流れを示す。FIG. 7D illustrates a flow of record acquisition processing in a calculation node that acquires records according to the modification of the first embodiment. 図7Eは、実施例1の変形例に係るレコードを管理する計算ノードにおけるレコード取得処理の流れを示す。FIG. 7E shows the flow of a record acquisition process in a calculation node that manages records according to a modification of the first embodiment. 図7Fは、実施例1の変形例に係るブロック化リモートレコード取得要求管理表の構成を示す。FIG. 7F illustrates a configuration of a blocked remote record acquisition request management table according to a modification of the first embodiment. 図8Aは、実施例1に係るノードレベルの資源制約管理表の構成を示す。FIG. 8A shows a configuration of a node-level resource constraint management table according to the first embodiment. 図8Bは、実施例1に係るジョブレベルの資源制約管理表の構成を示す。FIG. 8B illustrates a configuration of a job level resource constraint management table according to the first embodiment. 図8Cは、実施例1に係る統括スーパバイザプロセスにおけるプロセスレベルの資源制約管理表の構成を示す。FIG. 8C illustrates a configuration of a process level resource constraint management table in the overall supervisor process according to the first embodiment. 図8Dは、実施例1に係る各ノードのスーパバイザプロセスにおけるプロセスレベルの資源制約管理表の構成を示す。FIG. 8D illustrates a configuration of a process level resource constraint management table in the supervisor process of each node according to the first embodiment. 図8Eは、実施例1に係る統括スーパバイザプロセスにおけるタスクレベルの資源制約管理表の構成を示す。FIG. 8E illustrates a configuration of a task level resource constraint management table in the overall supervisor process according to the first embodiment. 図8Fは、実施例1に係る各ノードのスーパバイザプロセスにおけるタスクレベルの資源制約管理表の構成を示す。FIG. 8F illustrates a configuration of a task level resource constraint management table in the supervisor process of each node according to the first embodiment. 図8Gは、実施例1に係る統括資源制約管理処理の流れを示す。FIG. 8G shows a flow of the overall resource constraint management process according to the first embodiment. 図8Hは、実施例1に係る各ノードにおける資源制約管理処理の流れを示す。FIG. 8H illustrates a flow of resource constraint management processing in each node according to the first embodiment. 図9Aは、実施例1に係るタスクの第1の例を示す。FIG. 9A illustrates a first example of tasks according to the first embodiment. 図9Bは、実施例1に係る第1の例に示すタスクにおけるスレッドの生成の一例を示す。FIG. 9B illustrates an example of thread generation in the task illustrated in the first example according to the first embodiment. 図9Cは、実施例1に係る第1の例に示すタスクにおけるスレッドの生成の一例を示す。FIG. 9C illustrates an example of thread generation in the task illustrated in the first example according to the first embodiment. 図9Dは、実施例1に係るタスクの第2の例を示す。FIG. 9D illustrates a second example of the task according to the first embodiment. 図9Eは、実施例1に係る第2の例に示すタスクにおけるスレッドの生成の一例を示す。FIG. 9E illustrates an example of thread generation in the task illustrated in the second example according to the first embodiment.
 以下、図面を参照しながら、幾つかの実施例及び変形例を説明する。なお、以下の説明により本発明が限定されるものではない。 Hereinafter, some embodiments and modifications will be described with reference to the drawings. The present invention is not limited to the following description.
 まず、実施例1に係るジョブ実行モデルを説明する。 First, the job execution model according to the first embodiment will be described.
 図1Aは、実施例1に係るジョブ実行モデルを示す。なお、図1Aにおいては、1つの実線の円は1つのプロセス(例えば、マッププロセスやリデュースプロセス)を示す。プロセス内の1つの破線の円は1つのタスクを示す。タスク中の1つの角丸四角は1つのスレッドを示す。 FIG. 1A shows a job execution model according to the first embodiment. In FIG. 1A, one solid circle represents one process (for example, a map process or a reduce process). One dashed circle in the process indicates one task. One rounded square in the task indicates one thread.
 当該ジョブ実行モデルによれば、ジョブはネットワークで接続された複数の計算ノードによって実行される。例えば、複数の計算ノードの全体を統括する計算ノードにおけるスーパバイザプロセス(以下、統括スーパバイザプロセスとする)が、ジョブの実行に参加する全計算ノードにアプリケーションのコードを配布し、統括スーパバイザプロセスが各計算ノードのスーパバイザプロセスに対してマッププロセスやリデュースプロセスなどのプロセスの割り当てを行う。各計算ノードのスーパバイザプロセスは、統括スーパバイザプロセスの指示に基づいて、プロセスを生成する。また、生成されたプロセスは、統括スーパバイザプロセスの指示に基づいて、タスクを生成する。各計算ノードは、このように生成されたプロセス及びタスクを実行することにより、アプリケーションに含まれるマップ演算等を実行して、ジョブを実行する。統括スーパバイザプロセスは、複数の計算ノードにおける複数のスーパバイザプロセスのいずれか1つであってもよいし(即ち、いずれか1つのスーパバイザプロセスが、統括スーパバイザプロセスを兼ねてもよいし)、複数のスーパバイザプロセスとは別に用意された、専用の統括スーパバイザプロセスとして機能する専用のプロセスであってもよい。また、プロセスの割り当ては上記に限らず、統括スーパスーパバイザプロセスが各計算ノードのスーパバイザプロセスに指示を行って行ってもよく、プロセスやタスクの生成は上記に限らず、統括スーパバイザプロセスが直接行ってもよい。 According to the job execution model, a job is executed by a plurality of computation nodes connected via a network. For example, a supervisor process in a compute node that supervises the entirety of multiple compute nodes (hereinafter referred to as a supervisor supervisor process) distributes application code to all compute nodes that participate in job execution, and the supervisor supervisor process performs each computation. Allocate processes such as map process and reduce process to the supervisor process of the node. The supervisor process of each compute node generates a process based on the instruction of the supervisory supervisor process. Further, the generated process generates a task based on an instruction from the supervisory supervisor process. Each computation node executes the job by executing the map operation included in the application by executing the processes and tasks generated in this way. The supervisory supervisor process may be any one of a plurality of supervisor processes in a plurality of computing nodes (that is, any one supervisor process may also serve as the supervisory supervisor process) or a plurality of supervisor processes. A dedicated process functioning as a dedicated supervisory supervisor process prepared separately from the process may be used. In addition, the process allocation is not limited to the above, and the supervisor supervisor process may instruct the supervisor process of each computation node to perform the process. The process and task generation is not limited to the above, and the supervisor supervisor process directly performs the process. Also good.
 並列データ処理システムは、ジョブ実行モデルに従い、マッププロセスを実行し、ストレージに格納された入力データセット#1(即ち、第1のデータセット)と入力データセット#2(即ち、第2のデータセット)とに含まれるレコードを読み込んで、マップ演算を実行し、その結果レコードをストレージに格納された中間データセットに書き込む。更に、リデュースプロセスを実行し、中間データセットに書き込まれた結果レコードを入力として、リデュース演算を実行し、その結果レコードを出力データセット#1に書き込む。入力データセット、中間データセットならびに出力データセットはそれぞれ複数のレコードの集まりであり、何らかのデータ構造によって構造化されていてもよいし、構造化されていなくてもよい。例えば、入力データセット#2は、1以上のファイルの集合であってもよい。 The parallel data processing system executes the map process according to the job execution model, and stores the input data set # 1 (that is, the first data set) and the input data set # 2 (that is, the second data set) stored in the storage. ) And a map operation are executed, and the result record is written to an intermediate data set stored in the storage. Further, the reduction process is executed, the result record written in the intermediate data set is input, the reduction operation is executed, and the result record is written in the output data set # 1. Each of the input data set, the intermediate data set, and the output data set is a collection of a plurality of records, and may be structured by some data structure or may not be structured. For example, the input data set # 2 may be a set of one or more files.
 入力データセット#1はそのレコードが、入力データセット#2のレコードに対応したものであればよい。例えば、入力データセット#1は、入力データセット#2の索引であってもよい。入力データセット#1の各レコードは、入力データセット#2のレコードの所定の索引鍵の値と、当該索引鍵の値に対応する入力データセット#2の1以上のレコードを示す参照を含んでよい。この際、参照は入力データセット#2のレコードを記憶装置上で特定可能な格納位置を含んでもよいし、入力データセット#2を格納するのに設けられたデータ構造上においてレコードを特定可能な唯一性のある索引鍵を含んでもよい。また、入力データセット#1は入力データセット#2の全てのレコードに対応するレコードを有していてもよいし、入力データセット#2の一部のレコードに対応するレコードのみを有していてもよい。また、入力データセット#1は、入力データセット#2の索引でなくてもよい。例えば、入力データセット#1と入力データセット#2は結合可能な関係にあり、入力データセット#1は単なるレコードの集まりであり、入力データセット#2はレコードの集まりであって、データ構造によってある索引鍵によって構造化されており、入力データセット#1のあるレコードのある項目の値に対応するような、索引鍵の値を有する入力データセット#2のレコードを読み込むものであってもよい。また、入力データセット#1と入力データセット#2は、同じデータ構造に属するものであってもよい。例えば、入力データセット#1はB木を構成する内部ノードの集合であり、入力データセット#2は同じB木を構成する葉ノードの集合であってもよい。更に、入力データセット#1はB木を構成するあるレベルのノードの集合であり、入力データセット#2は同じB木を構成する次のレベルの(入力データセット#1から参照される)ノードの集合であってもよい。また、入力データセットは3つ以上から構成されてもよく、例えば、更に、入力データセット#2のレコードに対応した別の入力データセットがあってもよい。 The input data set # 1 only needs to correspond to the record of the input data set # 2. For example, the input data set # 1 may be an index of the input data set # 2. Each record of the input data set # 1 includes a predetermined index key value of the record of the input data set # 2 and a reference indicating one or more records of the input data set # 2 corresponding to the index key value. Good. In this case, the reference may include a storage position where the record of the input data set # 2 can be specified on the storage device, or the record can be specified on the data structure provided for storing the input data set # 2. A unique index key may be included. The input data set # 1 may have records corresponding to all the records of the input data set # 2, or only records corresponding to some of the records of the input data set # 2. Also good. Further, the input data set # 1 may not be an index of the input data set # 2. For example, the input data set # 1 and the input data set # 2 are connectable, the input data set # 1 is simply a collection of records, and the input data set # 2 is a collection of records, depending on the data structure. A record of the input data set # 2 that is structured by a certain index key and has an index key value corresponding to the value of a certain item in a certain record of the input data set # 1 may be read. . Further, the input data set # 1 and the input data set # 2 may belong to the same data structure. For example, the input data set # 1 may be a set of internal nodes that constitute a B-tree, and the input data set # 2 may be a set of leaf nodes that constitute the same B-tree. Further, the input data set # 1 is a set of nodes at a certain level constituting the B-tree, and the input data set # 2 is a node at the next level (referenced from the input data set # 1) constituting the same B-tree. Or a set of Further, the input data set may be composed of three or more. For example, there may be another input data set corresponding to the record of the input data set # 2.
 マッププロセスにおいては、マップ演算、分割演算、書式#1、書式#2、参照方式、条件等に従い、各計算ノードのプロセッサによりデータ処理が実行される。マップ演算、分割演算、書式#1、書式#2、参照方式、条件等は、計算ノードに格納されているアプリケーションに含まれるプログラムコードである。マップ演算は、読み込んだレコードに対して適用される処理を規定するプログラムコードであり、例えば、読み込んだレコードからキーとバリューのペアからなる結果レコードを生成するものである。分割演算は、マップ演算を実行したのち、その実行結果を受け渡すリデュースプロセスを決定する際に実行されるプログラムコードであり、例えば、分割演算はマップ演算の結果レコードが含むキーに対するハッシュ演算などを含んでよい。書式#1は、入力データセット#1のレコードを解釈するための書式を規定するプログラムコードである。書式#2は、入力データセット#2のレコードを解釈するための書式を規定するプログラムコードである。参照方式は、入力データセット#1のレコードの参照に従い、入力データセット#2のレコードを取得する方式を規定するプログラムコードである。条件は、入力データセット#1及び/又は入力データセット#2に格納されたレコードのうちマップ演算の対象とするべきレコードの要件を規定するプログラムコードである。当該条件は、その全部もしくは一部が、入力データセット#1ならびに入力データセット#2のいずれかからレコードを読み込む際に実行されてもよいし、その全部もしくは一部が、読み込んだレコードをマップ演算に入力する際に実行されてもよい。なお、プログラムコードは、コンパイル等によって生成されたプロセッサで実行可能な命令であってもよいし、実行処理系等によってプロセッサで実行可能な命令に変換することができる命令であってもよいし、実行処理系等によってプロセッサで実行可能な命令を生成することのできる宣言であってもよい。更に、これらを組み合わせたものであってもよいし、他の情報を更に含んでよい。命令ならびに宣言は、プロセッサ、コンパイラもしくは実行処理系等が解釈可能なバイト列であってもよいし、ソースコート等で記述されていてもよい。 In the map process, data processing is executed by the processor of each calculation node according to map operation, division operation, format # 1, format # 2, reference method, conditions, and the like. Map operation, division operation, format # 1, format # 2, reference method, condition, and the like are program codes included in the application stored in the calculation node. The map operation is a program code that defines a process to be applied to the read record. For example, the map operation generates a result record including a key and value pair from the read record. A division operation is a program code that is executed when a map operation is executed and then a reduction process for delivering the execution result is determined. For example, a division operation is a hash operation on a key included in a result record of a map operation. May include. Format # 1 is a program code that defines a format for interpreting records of input data set # 1. Format # 2 is a program code that defines a format for interpreting the record of input data set # 2. The reference method is a program code that defines a method for acquiring the record of the input data set # 2 in accordance with the reference of the record of the input data set # 1. The condition is a program code that defines the requirements for the record to be subjected to the map operation among the records stored in the input data set # 1 and / or the input data set # 2. The condition may be executed when all or part of the record is read from either the input data set # 1 or the input data set # 2, or all or part of the condition is mapped to the read record. It may be executed when inputting to the calculation. The program code may be an instruction that can be executed by a processor generated by compilation or the like, an instruction that can be converted into an instruction that can be executed by the processor by an execution processing system, or the like. It may be a declaration that can generate an instruction that can be executed by the processor by an execution processing system or the like. Furthermore, it may be a combination of these and may further include other information. The instruction and the declaration may be a byte string that can be interpreted by a processor, a compiler, an execution processing system, or the like, or may be described in a source code or the like.
 具体的に説明すると、計算ノードのプロセッサは、マッププロセスにおいてタスクを実行し、当該タスクにおいて、入力データセット#1からレコードを読み込み、書式#1を用いてレコードを解釈し、条件に基づいて、当該レコードが要件を満たすかどうかを判定し、要件を満たしたレコードから入力データセット#2への参照を取得する。この際、入力データセット#1は、事前に複数のチャンクに分割されていてもよい。例えば、入力データセット#1は複数のファイルから構成されていてもよく、統括スーパバイザプロセスが各々のファイルに対して別のタスクを割り当て、各タスクは割り当てられたファイルからレコードを読み込むこととしてもよい。もしくは、入力データセット#1は、実行時に複数のチャンクから構成されているかの如く分割可能であってもよい。例えば、入力データセット#1は単一のファイルから構成されており、当該ファイル中の複数の重なりのない領域を示す情報を備えており、統括スーパバイザプロセスがそれぞれの領域を先述のチャンクとして見做して別のタスクを割り当て、各タスクは割り当てられた領域からレコードを読み込むこととしてもよい。領域を示す情報は事前に与えられていてもよく、もしくは、統括スーパバイザプロセスによって実行時に決定されてもよい。また、領域と別の領域の間に重なりがあっても、読み込む際に一方の領域に割り当てられたタスクが重なり部分を読み込まないようにする手段が具備されていてもよい。また、入力データセット#1からレコードを読み込む際に、入力データセット#1が条件に規定された要件を満足するレコードに対して選択的なアクセスを可能とするデータ構造を以って構成されている(例えば、整列されている、もしくはB木等で構成されている)場合には、条件に規定された要件を用いて選択的なアクセスを行ってよい。 Specifically, the processor of the computation node executes a task in the map process, reads the record from the input data set # 1 in the task, interprets the record using the format # 1, and based on the condition, It is determined whether the record satisfies the requirement, and a reference to the input data set # 2 is acquired from the record that satisfies the requirement. At this time, the input data set # 1 may be divided into a plurality of chunks in advance. For example, the input data set # 1 may be composed of a plurality of files, and the supervisor process assigns a different task to each file, and each task may read a record from the assigned file. . Alternatively, the input data set # 1 may be separable as if it is composed of a plurality of chunks at the time of execution. For example, the input data set # 1 is composed of a single file and includes information indicating a plurality of non-overlapping areas in the file, and the supervisor supervisor process regards each area as the aforementioned chunk. Then, another task may be allocated, and each task may read a record from the allocated area. The information indicating the area may be given in advance, or may be determined at the time of execution by a supervisory supervisor process. In addition, even if there is an overlap between an area and another area, there may be provided means for preventing a task assigned to one area from reading an overlapped portion when reading. Further, when reading records from the input data set # 1, the input data set # 1 is configured with a data structure that allows selective access to records that satisfy the requirements specified in the conditions. If they are arranged (for example, arranged or constituted by B-trees, etc.), selective access may be performed using the requirements defined in the conditions.
 次いで、プロセッサは、入力データセット#1のレコードが含む参照に基づいて入力データセット#2からレコードを読み込むためにスレッドを生成する。入力データセット#1のレコードが複数の参照を含む場合には、プロセッサは、複数のスレッドを生成する。例えば、入力データセット#1のレコードが有する参照の各々に対してスレッドを生成してもよい。これらのスレッドは、プロセッサにより並行して実行される。更に、プロセッサは、実行するスレッドにおいて、参照方式に基づいて、参照によって入力データセット#2のレコードを読み込む。プロセッサは、書式#2を用いて読み込んだレコードを解釈し、条件に基づいて当該レコードが要件を満たすかどうかを判定する。プロセッサは、要件を満たすレコードに対して、マップ演算を実行し、更に、分割演算を実行することによりマップ演算の実行結果を送るべきリデュースプロセスを決定する。プロセッサは、決定したリデュースプロセスがマップ演算の実行結果を受け取れるように出力する。具体的には、実行結果を中間データセットに格納する。 Next, the processor creates a thread to read the record from the input data set # 2 based on the reference included in the record of the input data set # 1. When the record of the input data set # 1 includes a plurality of references, the processor generates a plurality of threads. For example, a thread may be generated for each reference included in the record of the input data set # 1. These threads are executed in parallel by the processor. Further, the processor reads the record of the input data set # 2 by reference based on the reference method in the thread to be executed. The processor interprets the read record using the format # 2, and determines whether the record satisfies the requirement based on the condition. The processor performs a map operation on the record that satisfies the requirement, and further determines a reduce process to which the execution result of the map operation is to be sent by executing a division operation. The processor outputs so that the determined reduce process can receive the execution result of the map operation. Specifically, the execution result is stored in the intermediate data set.
 リデュースプロセスにおいては、リデュース演算等に従い、各計算ノードのプロセッサによりデータ処理が実行される。リデュース演算は計算ノードに格納されているアプリケーションに含まれたプログラムコードである。リデュース演算は、中間データセットのレコードに対して適用される処理を規定するプログラムコードであり、例えば、マップ演算の生成した結果レコード(キーとバリューのペアからなる)をキーに従って集約することにより結果レコードを生成するものである。 In the reduce process, data processing is executed by the processor of each computation node in accordance with the reduce operation or the like. The reduce operation is a program code included in the application stored in the calculation node. A reduction operation is a program code that defines the processing applied to records in an intermediate data set. For example, a result is obtained by aggregating result records (consisting of key / value pairs) generated by a map operation according to a key. A record is generated.
 具体的には、プロセッサは、中間データセットからマップ演算の実行結果レコードを取得し、当該レコードを入力として、リデュース演算を実行して、その実行結果レコードを出力データセット#1に格納する。 Specifically, the processor acquires the execution result record of the map operation from the intermediate data set, performs the reduce operation using the record as an input, and stores the execution result record in the output data set # 1.
 マップ演算、分割演算、書式#1、書式#2、参照方式、条件、リデュース演算はその全てがアプリケーションで規定されている必要はなく、その一部が規定されていればよい。規定されていないものについては、所定の取り扱いを行ってよい。例えば、リデュース演算が規定されていない場合は(即ち、リデュースプロセスが規定されていない場合は)、マッププロセスの出力をジョブの出力と見做してよい。 The map operation, the division operation, the format # 1, the format # 2, the reference method, the condition, and the reduce operation need not all be specified by the application, and only a part thereof may be specified. For those that are not specified, predetermined handling may be performed. For example, when the reduction operation is not defined (that is, when the reduce process is not defined), the output of the map process may be regarded as the output of the job.
 マッププロセス及び/又はリデュースプロセスでは、更に比較演算に従い、また、マッププロセスでは、更に集約演算に従い、各計算ノードのプロセッサによりデータ処理が実行されてもよい。比較演算、集約演算は、計算ノードに格納されているアプリケーションに含まれるプログラムコードである。比較演算は、マッププロセスにおいて分割演算の結果レコードを中間データセットに書き込む際に、もしくは、リデュースプロセスにおいてリデュース演算の入力レコードを中間データセットから読み込む際に、結果レコード/入力レコードを一旦、整列するために当該レコード間の順序性を規定するためのものである。例えば、比較演算は、マップ演算が生成した結果レコード(キーとバリューのペアからなる)のキーの値の大小を比較するものである。比較演算はアプリケーションによって規定されなくてもよいし、マッププロセスもしくはリデュースプロセスのどちらか一方のために規定されてもよいし、また、両方のプロセスに同じ比較演算が規定されてもよいし、両方のプロセスに異なる比較演算が規定されてもよい。集約演算は、マッププロセスにおいて分割演算の結果レコードを中間データセットに書き込む際に、結果レコードを一旦、集約するためのものである。例えば、集約演算は、マップ演算が生成した結果レコード(キーとバリューのペアからなる)のキーに従って集約することにより結果レコードを生成するものである。集約演算はアプリケーションによって規定されなくてもよい。マッププロセスに対して、比較演算と集約演算が規定されてもよい。この場合、例えば、比較演算に従って整列された結果レコードに対して集約演算が行われてもよい。 In the map process and / or the reduce process, data processing may be executed by the processor of each calculation node further according to the comparison operation, and in the map process, further according to the aggregation operation. The comparison operation and the aggregation operation are program codes included in the application stored in the calculation node. The comparison operation temporarily aligns the result record / input record when writing the result record of the split operation to the intermediate data set in the map process or when reading the input record of the reduce operation from the intermediate data set in the reduce process. Therefore, this is for defining the order between the records. For example, the comparison operation compares the magnitudes of the key values of the result records (consisting of key-value pairs) generated by the map operation. The comparison operation may not be specified by the application, may be specified for either the map process or the reduce process, the same comparison operation may be specified for both processes, or both Different comparison operations may be defined for these processes. The aggregation operation is for once aggregating the result records when writing the result records of the division operation to the intermediate data set in the map process. For example, the aggregation operation is to generate a result record by aggregating according to the key of the result record (consisting of key and value pairs) generated by the map operation. Aggregation operations may not be specified by the application. A comparison operation and an aggregation operation may be defined for the map process. In this case, for example, an aggregation operation may be performed on the result records arranged according to the comparison operation.
 マッププロセスでは、複数の異なるデータセットからのレコードを並行して、もしくは逐次的に入力してもよい。例えば、上記の例では、入力データセット#1から参照された入力データセット#2からレコードを読み込み、マップ演算への入力としていたが、更に、別に入力データセット#1-2から参照された入力データセット#2-2からレコードを読み込み、マップ演算への入力としてもよい。この際、書式#1、書式#2、参照方式、条件は、同じものを用いてもよいし、別のものを用いてもよい。 In the map process, records from multiple different data sets may be entered in parallel or sequentially. For example, in the above example, the record is read from the input data set # 2 referenced from the input data set # 1 and used as the input to the map operation. However, the input referenced from the input data set # 1-2 is additionally provided. A record may be read from the data set # 2-2 and used as an input to the map calculation. At this time, the same format may be used as the format # 1, the format # 2, the reference method, and the conditions, or different formats may be used.
 図1Aでは、文献 Jeffrey Dean, Sanjay Ghemawat: MapReduce: Simplified Data Processing on Large Clusters. Proceedings of OSDI 2004, pp. 137-15 (2004) に示されるマッププロセスとリデュースプロセスから構成されるジョブ実行モデルを示していたが、他のジョブ実行モデルであってもよい。例えば、図1Aでは、入力データセットを2段とした例を示すが、入力データセットは、2段以上であってもよい。また、図1Aでは、マッププロセスとリデュースプロセスの2つのステージのプロセスで構成されたジョブ実行モデルを示していたが、3以上のステージのプロセスで構成されたジョブ実行モデルであってもよい。また、図1Aでは、先頭のマッププロセスのみがストレージに格納された入力データセットからレコードを読み込むようにしていたが、例えば、それ以外のステージのプロセスがストレージの入力データセットからレコードを読み込むようにしてもよい。また、図1Aでは、マッププロセスはその結果レコードを一旦中間データセットに書き込み、リデュースプロセスが当該中間データセットから結果レコードを読み込むことにより、マッププロセスからリデュースプロセスへとレコードの受け渡しを行うようにしていたが、マッププロセスを実行する際に、マップ演算の結果レコードを中間データセットに格納せずにネットワークを通じて送信し、リデュースプロセスを実行する際に、当該マップ演算の結果レコードをネットワークを通じて受信してもよい。マッププロセスとリデュースプロセスを並行して実行してもよい。また、リデュースプロセスを実行する際に、リデュース演算の結果レコードを出力データセットに書き込まずに、コンソールやプリンタに出力してもよいし、ネットワークを経由して他の計算機等に送信してもよい。マッププロセスはその結果レコードをネットワークを通じてリデュースプロセスに送信し、リデュースプロセスはネットワークを通じて結果レコードを受信してもよい。このように拡張されたジョブ実行モデルの一例は、文献 Michael Isard, Mihai Budiu, Yuan Yu, Andrew Birrell, Dennis Fetterly: Dryad: distributed data-parallel programs from sequential building blocks. Proceedings of EuroSys 2007, pp. 59-72 (2007) や文献 Vinayak R. Borkar, Michael J. Carey, Raman Grover, Nicola Onose, Rares Vernica: Hyracks: A flexible and extensible foundation for data-intensive computing. Proceedings of ICDE 2011, pp. 1151-1162 (2011) に開示されている。 Figure 1A shows a job execution model consisting of the map process and the reduction process shown in the document Jeffrey Dean, Sanjay Ghemawat: MapReduce: Simplified Data Processing on Large Clusters. Proceedings of OSDI 2004, pp. 137-15 (2004). However, other job execution models may be used. For example, FIG. 1A shows an example in which the input data set has two stages, but the input data set may have two or more stages. Further, FIG. 1A shows a job execution model composed of two stages of processes, that is, a map process and a reduce process. However, a job execution model composed of three or more stages of processes may be used. In FIG. 1A, only the first map process reads records from the input data set stored in the storage. For example, other stage processes read records from the storage input data set. May be. Also, in FIG. 1A, the map process once writes the result record to the intermediate data set, and the reduce process reads the result record from the intermediate data set, thereby passing the record from the map process to the reduce process. However, when the map process is executed, the map operation result record is transmitted through the network without being stored in the intermediate data set, and when the reduce process is executed, the map operation result record is received through the network. Also good. The map process and the reduce process may be executed in parallel. In addition, when executing the reduce process, the result record of the reduce operation may be output to the console or the printer without being written to the output data set, or may be transmitted to another computer or the like via the network. . The map process may send the result record over the network to the reduce process, and the reduce process may receive the result record over the network. Examples of job execution models extended in this way are the documents Michael Isard, Mihai Budiu, Yuan Yu, Andrew Birrell, Dennis Fetterly: Dryad: distributed data-parallel programs from sequential building blocks. Proceedings of EuroSys 59, 72 (2007) and references Vinayak R. Borkar, Michael J. Carey, Raman Grover, Nicola Onose, Rares Vernica: Hyracks: A flexible and extensible foundation for data-intensive computing. Proceedings 162 ) Is disclosed in.
 次に、実施例2に係るジョブ実行モデルを説明する。 Next, a job execution model according to the second embodiment will be described.
 図1Bは、実施例2に係るジョブ実行モデルを示す。なお、図1Bは図1Aと同様に表記されている。実施例2に係るジョブ実行モデルは実施例1に係るジョブ実行モデルを拡張したものであり、実施例1に関して説明した部分は、改めて説明せずとも、実施例2に適用される。 FIG. 1B shows a job execution model according to the second embodiment. In addition, FIG. 1B is described similarly to FIG. 1A. The job execution model according to the second embodiment is an extension of the job execution model according to the first embodiment, and the part described with respect to the first embodiment is applied to the second embodiment without being described again.
 このジョブ実行モデルによれば、ジョブはネットワークで接続された複数の計算ノードによって実行される。図1Bに例示するジョブは、ステージ#1プロセスを実行することにより、入力データセット#1、入力データセット#2、入力データセット#3、及び入力データセット#4からレコードを読み込み、これを入力として、ステージ演算#1を実行し、その実行結果レコードをステージ#2プロセスに送信する。また、ステージ#2プロセスを実行することにより、実行結果レコードを受信し、これを入力としてステージ演算#2を実行し、その実行結果レコードをステージ#3プロセスに送信する。更に、ステージ#3プロセスを実行することにより、実行結果レコードを受信し、これを入力としてステージ演算#3を実行し、その実行結果レコードをステージ#4に送信する。加えて、ステージ#4プロセスを実行することにより、実行結果レコードを受信するとともに、入力データセット#5及び入力データセット#6からレコードを読み込み、これらを入力レコードとしてステージ#4演算を実行し、実行結果レコードを出力データセット#1に格納する。実施例1と同様に、異なるステージのプロセスの間では、中間データセットを経てデータを受け渡してもよいし、ネットワークによってデータを送受信してもよい。また、異なるステージのプロセスは並行して実行してもよい。 According to this job execution model, a job is executed by a plurality of computation nodes connected via a network. The job illustrated in FIG. 1B reads records from the input data set # 1, the input data set # 2, the input data set # 3, and the input data set # 4 by executing the stage # 1 process, and inputs the records. As a result, the stage calculation # 1 is executed, and the execution result record is transmitted to the stage # 2 process. Further, by executing the stage # 2 process, the execution result record is received, and the stage calculation # 2 is executed by using this as an input, and the execution result record is transmitted to the stage # 3 process. Further, the execution result record is received by executing the stage # 3 process, and the stage calculation # 3 is executed by using this as an input, and the execution result record is transmitted to the stage # 4. In addition, by executing the stage # 4 process, the execution result record is received, the records are read from the input data set # 5 and the input data set # 6, and the stage # 4 operation is executed using these as input records. The execution result record is stored in the output data set # 1. As in the first embodiment, between processes at different stages, data may be transferred via an intermediate data set, or data may be transmitted / received via a network. Also, different stages of processes may be executed in parallel.
 入力データセット#1は、入力データセット#2の索引であってもよい。例えば、入力データセット#1の各レコードは、入力データセット#2のレコードの所定の索引鍵の値と、当該索引鍵の値に対応する入力データセット#2の1以上のレコードを示す参照を含んでよい。同様に、入力データセット#3は、入力データセット#4の索引であってよい。入力データセット#3の各レコードは、入力データセット#4のレコードの所定の索引鍵の値と、当該索引鍵の値に対応する入力データセット#4の1以上のレコードを示す参照を含んでよい。また、入力データセット#2のレコードの所定の項目は、入力データセット#3の1以上のレコードを示す参照を含んでよい。即ち、入力データセット#2のあるレコードに対して入力データセット#3の1以上のレコードを対応させることが可能であってよい。実施例1と同様に、参照は参照先の入力データセットのレコードを記憶装置上で特定可能な格納位置を含んでもよいし、参照先の入力データセットを構成するデータ構造においてレコードを特定可能な唯一性のある索引鍵を含んでもよい。また、参照元の入力データセットは参照先の入力データセットの全てのレコードに対応するレコードを有していてもよいし、参照先の入力データセットの一部のレコードに対応するレコードのみを有していてもよい。 The input data set # 1 may be an index of the input data set # 2. For example, each record of the input data set # 1 has a reference value indicating a predetermined index key value of the record of the input data set # 2 and one or more records of the input data set # 2 corresponding to the index key value. May include. Similarly, the input data set # 3 may be an index of the input data set # 4. Each record of the input data set # 3 includes a predetermined index key value of the record of the input data set # 4 and a reference indicating one or more records of the input data set # 4 corresponding to the index key value. Good. Further, the predetermined item of the record of the input data set # 2 may include a reference indicating one or more records of the input data set # 3. That is, it may be possible to associate one or more records of the input data set # 3 with a certain record of the input data set # 2. As in the first embodiment, the reference may include a storage position where the record of the reference input data set can be specified on the storage device, or the record can be specified in the data structure constituting the reference input data set. A unique index key may be included. Further, the reference source input data set may have records corresponding to all the records of the reference destination input data set, or only records corresponding to some records of the reference destination input data set. You may do it.
 入力データセット#5は、入力データセット#6の索引であってもよい。入力データセット#5の各レコードは、入力データセット#6のレコードの所定の索引鍵の値と、当該索引鍵の値に対応する入力データセット#6の1以上のレコードを示す参照を含んでよい。 The input data set # 5 may be an index of the input data set # 6. Each record of the input data set # 5 includes a predetermined index key value of the record of the input data set # 6 and a reference indicating one or more records of the input data set # 6 corresponding to the index key value. Good.
 ステージ#1プロセスにおいては、ステージ演算#1、分割演算#1、書式#1、書式#2、書式#3、書式#4、参照方式#1、参照方式#2、参照方式#3、条件#1、ビルド方式#1等に従い、各計算ノードのプロセッサにより処理が実行される。ステージ演算#1、分割演算#1、書式#1、書式#2、書式#3、書式#4、参照方式#1、参照方式#2、参照方式#3、条件#1、ビルド方式#1等は、計算ノードに格納されているアプリケーションに含まれたプログラムコードである。ステージ演算#1は、読み込んだレコードに対して適用される処理を規定するプログラムコードであり、例えば、マップ演算であってもよいし、リデュース演算であってもよいし、他の演算であってもよい。分割演算#1は、演算結果を受け渡す後続のステージのプロセスを決定する際に実行されるプログラムコードである。例えば、分割演算は入力に対するハッシュ関数などを含んでよい。書式#1、書式#2、書式#3ならびに書式#4は、それぞれ入力データセット#1、入力データセット#2、入力データセット#3ならびに入力データセット#4のレコードを解釈するための書式を規定するプログラムコードである。参照方式#1、参照方式#2ならびに参照方式#3は、それぞれ入力データセット#1、入力データセット#2ならびに入力データセット#3のレコードの参照に従い、入力データセット#2、入力データセット#3ならびに入力データセット#4のレコードを取得する方式を規定するプログラムコードである。条件#1は、ステージ演算#1の対象とするべきレコードの条件を規定する手続きである。条件#1は、その全部もしくは一部が、入力データセット#1、入力データセット#2、入力データセット#3ならびに入力データセット#4のいずれかからレコードを読み込む際に実行されてもよいし、その全部もしくは一部が、読み込んだレコードをマップ演算に入力する際に実行されてもよい。ビルド方式#1は、入力データセット#1、入力データセット#2、入力データセット#3ならびに入力データセット#4から読み込んだレコードからステージ演算#1に入力するレコードを生成する方式を規定するプログラムコードである。 In the stage # 1 process, stage operation # 1, division operation # 1, format # 1, format # 2, format # 3, format # 4, reference method # 1, reference method # 2, reference method # 3, condition # 1. In accordance with the build method # 1, etc., processing is executed by the processor of each computation node. Stage operation # 1, division operation # 1, format # 1, format # 2, format # 3, format # 4, reference method # 1, reference method # 2, reference method # 3, condition # 1, build method # 1, etc. Is the program code included in the application stored in the compute node. Stage operation # 1 is a program code that defines the process applied to the read record. For example, it may be a map operation, a reduce operation, or another operation. Also good. The division operation # 1 is a program code that is executed when determining the process of the subsequent stage that delivers the operation result. For example, the division operation may include a hash function for the input. Format # 1, Format # 2, Format # 3 and Format # 4 are formats for interpreting the records of input data set # 1, input data set # 2, input data set # 3 and input data set # 4, respectively. This is a program code to be defined. Reference method # 1, reference method # 2 and reference method # 3 are respectively referred to the records of input data set # 1, input data set # 2 and input data set # 3, and input data set # 2 and input data set #. 3 and a program code that defines a method for acquiring records of the input data set # 4. Condition # 1 is a procedure that defines the condition of the record that should be the target of stage operation # 1. The condition # 1 may be executed when all or a part of the condition # 1 reads a record from any one of the input data set # 1, the input data set # 2, the input data set # 3, and the input data set # 4. , All or a part thereof may be executed when the read record is input to the map operation. Build method # 1 is a program that defines a method for generating records to be input to stage operation # 1 from records read from input data set # 1, input data set # 2, input data set # 3, and input data set # 4 Code.
 具体的に説明すると、計算ノードのプロセッサは、ステージ#1プロセスにおいてタスクを実行し、当該タスクにおいて、入力データセット#1からレコードを読み込み、書式#1を用いてレコードを解釈し、条件#1に基づいて、当該レコードが要件を満足するかどうかを判定し、要件を満足するレコードから入力データセット#2への参照を取得する。 More specifically, the processor of the computation node executes a task in the stage # 1 process, reads a record from the input data set # 1 in the task, interprets the record using the format # 1, and satisfies the condition # 1. Based on the above, it is determined whether or not the record satisfies the requirement, and a reference to the input data set # 2 is acquired from the record that satisfies the requirement.
 次いで、プロセッサは、入力データセット#1のレコードが含む参照に基づいて入力データセット#2からレコードを読み込むためにスレッドを生成する。入力データセット#1のレコードが複数の参照を含む場合には、プロセッサは、複数のスレッドを生成する。例えば、入力データセット#1のレコードが有する参照の各々に対してスレッドを生成してもよい。これらスレッドは、プロセッサにより並行して実行される。更に、プロセッサは、実行するスレッドにおいて、参照方式#1に基づいて、参照によって入力データセット#2からレコードを読み込む。プロセッサは、書式#2を用いて読み込んだレコードを解釈し、条件#1に基づいて、当該レコードが要件を満足するかどうかを判定する。更にプロセッサは、要件を満足するレコードから入力データセット#3への参照を取得する。ここで、プロセッサは、参照を用いて入力データセット#3を参照して処理を行うスレッドを生成する。複数の参照がある場合には、プロセッサは、複数のスレッドを生成する。これらスレッドは、プロセッサにより並行して実行される。 Next, the processor creates a thread to read the record from the input data set # 2 based on the reference included in the record of the input data set # 1. When the record of the input data set # 1 includes a plurality of references, the processor generates a plurality of threads. For example, a thread may be generated for each reference included in the record of the input data set # 1. These threads are executed in parallel by the processor. Furthermore, the processor reads a record from the input data set # 2 by reference based on the reference method # 1 in the thread to be executed. The processor interprets the record read using the format # 2, and determines whether the record satisfies the requirement based on the condition # 1. Further, the processor obtains a reference to the input data set # 3 from the record that satisfies the requirement. Here, the processor generates a thread that performs processing by referring to the input data set # 3 using the reference. If there are multiple references, the processor creates multiple threads. These threads are executed in parallel by the processor.
 更に次いで、プロセッサは、入力データセット#2のレコードが含む参照に基づいて入力データセット#3からレコードを読み込むためにスレッドを生成する。入力データセット#2のレコードが複数の参照を含む場合には、プロセッサは、複数のスレッドを生成する。例えば、入力データセット#2のレコードが有する参照の各々に対してスレッドを生成してもよい。これらスレッドは、プロセッサにより並行して実行される。更に、プロセッサは、実行するスレッドにおいて、参照方式#2に基づいて、参照によって入力データセット#3からレコードを読み込む。プロセッサは、書式#3を用いて、読み込んだレコードを解釈し、条件#1に基づいて、当該レコードが要件を満足するかどうかを判定する。更にプロセッサは、要件を満足するレコードから入力データセット#4への参照を取得する。 Next, the processor creates a thread to read the record from the input data set # 3 based on the reference contained in the record of the input data set # 2. When the record of the input data set # 2 includes a plurality of references, the processor generates a plurality of threads. For example, a thread may be generated for each reference included in the record of the input data set # 2. These threads are executed in parallel by the processor. Further, the processor reads a record from the input data set # 3 by reference based on the reference method # 2 in the thread to be executed. The processor interprets the read record using the format # 3, and determines whether the record satisfies the requirement based on the condition # 1. In addition, the processor obtains a reference to the input data set # 4 from the record that satisfies the requirement.
 更に次いで、プロセッサは、入力データセット#3のレコードが含む参照に基づいて入力データセット#4からレコードを読み込むためにスレッドを生成する。入力データセット#3のレコードが複数の参照を含む場合には、プロセッサは、複数のスレッドを生成する。例えば、入力データセット#3のレコードが有する参照の各々に対してスレッドを生成してもよい。これらスレッドは、プロセッサにより並行して実行される。更に、プロセッサは、実行するスレッドにおいて、参照方式#3に基づいて、参照によって入力データセット#4からレコードを読み込む。プロセッサは、書式#4を用いて読み込んだレコードを解釈し、条件#1に基づいて、当該レコードが要件を満足するかどうかを判定する。プロセッサは、要件を満足するレコードに対して、ビルド方式#1に基づいて、ステージ演算#1に入力するレコードを生成し、当該レコードを入力としてステージ演算#1を実行する。更に、1以上のステージ演算#1の実行結果レコードに対して分割演算#1を行うことにより、実行結果レコードを送るべき後続のステージ#2のプロセスを決定する。プロセッサは、決定した後続のステージのプロセスが実行結果レコードを受け取れるように出力する。具体的には、実行結果を中間データセットに格納するか、ネットワークで後続のステージのプロセスに送る。 Next, the processor creates a thread to read the record from the input data set # 4 based on the reference contained in the record of the input data set # 3. When the record of the input data set # 3 includes a plurality of references, the processor generates a plurality of threads. For example, a thread may be generated for each reference included in the record of the input data set # 3. These threads are executed in parallel by the processor. Further, the processor reads a record from the input data set # 4 by reference based on the reference method # 3 in the executing thread. The processor interprets the read record using the format # 4, and determines whether the record satisfies the requirement based on the condition # 1. The processor generates a record to be input to the stage calculation # 1 based on the build method # 1 with respect to the record that satisfies the requirements, and executes the stage calculation # 1 using the record as an input. Further, the division operation # 1 is performed on the execution result record of one or more stage operations # 1, thereby determining the subsequent stage # 2 process to which the execution result record is to be sent. The processor outputs so that the determined subsequent stage process can receive the execution result record. Specifically, the execution result is stored in an intermediate data set or sent to a subsequent stage process on the network.
 ステージ#2プロセスにおいては、ステージ演算#2、分割演算#2に従い、各計算ノードのプロセッサにより処理が実行される。ステージ演算#2、分割演算#2は計算ノードに格納されているアプリケーションに含まれたプログラムコードである。例えば、ステージ演算#2は、中間データセットから取得したレコード又はネットワークで送られたレコードに対して適用される処理を規定するプログラムコードであり、例えば、マップ演算であってもよいし、リデュース演算であってもよいし、他の演算であってもよい。分割演算#2は、実行結果を受け渡す後続のステージ#3のプロセスを決定する際に実行されるプログラムコードである。例えば、分割演算#2は入力に対するハッシュ関数などを含んでよい。 In the stage # 2 process, processing is executed by the processor of each computation node in accordance with stage operation # 2 and division operation # 2. Stage calculation # 2 and division calculation # 2 are program codes included in the application stored in the calculation node. For example, stage operation # 2 is a program code that defines processing applied to a record acquired from an intermediate data set or a record sent over a network, and may be a map operation or a reduce operation, for example. It may be other calculations. The division operation # 2 is a program code that is executed when determining the process of the subsequent stage # 3 that delivers the execution result. For example, the division operation # 2 may include a hash function for the input.
 具体的に説明すると、計算ノードのプロセッサは、ステージ#2プロセスにおいてタスクを実行し、当該タスクにおいて、ステージ#1プロセスから受け渡されたレコードを取得し、ステージ演算#2を実行し、更に分割演算#2を行うことにより、ステージ演算#2の実行結果レコードを送るべき後続のステージ#3のプロセスを決定する。プロセッサは、決定した後続のステージのプロセスがステージ演算#2の実行結果レコードを受け取れるように出力する。具体的には、実行結果を中間データセットに格納するか、ネットワークで後続のステージのプロセスに送る。 Specifically, the processor of the computation node executes a task in the stage # 2 process, acquires a record passed from the stage # 1 process in the task, executes the stage calculation # 2, and further divides By performing the calculation # 2, the process of the subsequent stage # 3 to which the execution result record of the stage calculation # 2 is to be sent is determined. The processor outputs so that the process of the determined subsequent stage can receive the execution result record of the stage operation # 2. Specifically, the execution result is stored in an intermediate data set or sent to a subsequent stage process on the network.
 ステージ#3プロセスにおいては、ステージ演算#3、分割演算#3に従い、各計算ノードのプロセッサにより処理が実行される。ステージ演算#3、分割演算#3は計算ノードに格納されているアプリケーションに含まれたプログラムコードである。例えば、ステージ演算#3は、中間データセットから取得したレコード又はネットワークで送られたレコードに対して適用される処理を規定するプログラムコードであり、例えば、マップ演算であってもよいし、リデュース演算であってもよいし、他の演算であってもよい。分割演算#3は、実行結果を受け渡す後続のステージ#4のプロセスを決定する際に実行されるプログラムコードである。例えば、分割演算#3は入力に対するハッシュ関数などを含んでよい。 In the stage # 3 process, processing is executed by the processor of each computation node according to the stage operation # 3 and the division operation # 3. Stage calculation # 3 and division calculation # 3 are program codes included in the application stored in the calculation node. For example, the stage operation # 3 is a program code that defines processing applied to a record acquired from an intermediate data set or a record sent over a network, and may be a map operation or a reduce operation, for example. It may be other calculations. The division operation # 3 is a program code that is executed when determining the process of the subsequent stage # 4 that delivers the execution result. For example, the division operation # 3 may include a hash function for the input.
 具体的に説明すると、計算ノードのプロセッサは、ステージ#3プロセスにおいてタスクを実行し、当該タスクにおいて、ステージ#2プロセスから受け渡されたレコードを取得し、ステージ演算#3を実行し、更に分割演算#3を行うことにより、ステージ演算#3の実行結果レコードを送るべき後続のステージ#4のプロセスを決定する。プロセッサは、決定した後続のステージのプロセスがステージ演算#3の実行結果レコードを受け取れるように出力する。具体的には、実行結果を中間データセットに格納するか、ネットワークで後続のステージのプロセスに送る。 Specifically, the processor of the computation node executes a task in the stage # 3 process, acquires a record passed from the stage # 2 process in the task, executes the stage calculation # 3, and further divides By performing the calculation # 3, the process of the subsequent stage # 4 to which the execution result record of the stage calculation # 3 is to be sent is determined. The processor outputs so that the process of the determined subsequent stage can receive the execution result record of the stage operation # 3. Specifically, the execution result is stored in an intermediate data set or sent to a subsequent stage process on the network.
 ステージ#4プロセスにおいては、ステージ演算#4、書式#5、書式#6、参照方式#4等に従い、各計算ノードのプロセッサにより処理が実行される。ステージ演算#3、分割演算#3、書式#5、書式#6、参照方式#4は計算ノードに格納されているアプリケーションに含まれたプログラムコードである。例えば、ステージ演算#4は、中間データセットから取得したレコード又はネットワークで送られたレコードに対して適用される処理を規定するプログラムコードであり、例えば、マップ演算であってもよいし、リデュース演算であってもよいし、他の演算であってもよい。書式#5ならびに書式#6は、それぞれ入力データセット#5ならびに入力データセット#6のレコードを解釈するための書式を規定するプログラムコードである。参照方式#4は、入力データセット#5のレコードの参照に従い、入力データセット#6のレコードを取得する方式を規定するプログラムコードである。 In the stage # 4 process, processing is executed by the processor of each calculation node in accordance with stage calculation # 4, format # 5, format # 6, reference method # 4, and the like. Stage operation # 3, division operation # 3, format # 5, format # 6, and reference method # 4 are program codes included in the application stored in the calculation node. For example, stage operation # 4 is a program code that defines processing applied to a record acquired from an intermediate data set or a record sent over a network, and may be a map operation or a reduce operation, for example. It may be other calculations. Format # 5 and format # 6 are program codes that define formats for interpreting the records of input data set # 5 and input data set # 6, respectively. The reference method # 4 is a program code that defines a method for acquiring the record of the input data set # 6 in accordance with the reference of the record of the input data set # 5.
 更に、具体的に説明すると、計算ノードのプロセッサは、ステージ#4プロセスにおいてタスクを実行し、当該タスクにおいて、入力データセット#5からレコードを読み込み、書式#5を用いてレコードを解釈し、レコードから入力データセット#6への参照を取得する。 More specifically, the computation node processor executes a task in the stage # 4 process, reads a record from the input data set # 5, interprets the record using the format # 5, and records the record. To obtain a reference to the input data set # 6.
 次いで、プロセッサは、入力データセット#5のレコードが含む参照に基づいて入力データセット#6からレコードを読み込むためにスレッドを生成する。入力データセット#5のレコードが複数の参照を含む場合には、プロセッサは、複数のスレッドを生成する。例えば、入力データセット#5のレコードが有する参照の各々に対してスレッドを生成してもよい。これらスレッドは、プロセッサにより並行して実行される。更に、プロセッサは、実行するスレッドにおいて、参照方式#4に基づいて、参照によって入力データセット#6からレコードを読み込む。プロセッサは、書式#6を用いて読み込んだレコードを解釈する。また、ステージ演算#3の実行結果であるレコードを取得する。これらのレコードを入力として、ステージ演算#4を実行し、その実行結果レコードを出力データセット#1に格納する。 Next, the processor creates a thread to read the record from the input data set # 6 based on the reference included in the record of the input data set # 5. When the record of the input data set # 5 includes a plurality of references, the processor generates a plurality of threads. For example, a thread may be generated for each reference included in the record of the input data set # 5. These threads are executed in parallel by the processor. Further, the processor reads a record from the input data set # 6 by reference based on the reference method # 4 in the thread to be executed. The processor interprets the read record using format # 6. Also, a record that is the execution result of stage calculation # 3 is acquired. Using these records as input, stage calculation # 4 is executed, and the execution result record is stored in output data set # 1.
 実施例1と同様に、ステージ演算#1、分割演算#1、書式#1、書式#2、書式#3、書式#4、参照方式#1、参照方式#2、参照方式#3、条件#1、ビルド方式#1、ステージ演算#2、分割演算#2、ステージ演算#3、分割演算#3、ステージ演算#4、書式#5、書式#6、参照方式#4はその全てがアプリケーションで規定されている必要はなく、その一部が規定されていればよい。規定されていないものについては、所定の取り扱いを行ってよい。 Similar to the first embodiment, the stage operation # 1, the division operation # 1, the format # 1, the format # 2, the format # 3, the format # 4, the reference method # 1, the reference method # 2, the reference method # 3, and the condition # 1. Build method # 1, stage operation # 2, division operation # 2, stage operation # 3, division operation # 3, stage operation # 4, format # 5, format # 6, and reference method # 4 are all applications. It is not necessary to be specified, and only a part of it may be specified. For those that are not specified, predetermined handling may be performed.
 実施例1と同様に、各ステージのプロセスでは、更に比較演算、集約演算に従い、各計算ノードのプロセッサによりデータ処理が実行されてもよい。 As in the first embodiment, in each stage process, data processing may be executed by the processor of each calculation node in accordance with the comparison operation and the aggregation operation.
 各ステージのプロセスでは、複数の異なるデータセットからのレコードを並行して、もしくは逐次的に入力してもよい。 In the process of each stage, records from a plurality of different data sets may be input in parallel or sequentially.
 以上、実施例1及び2に係るジョブ実行モデルを説明した。ジョブ実行モデルは、それらに限定されない。 The job execution model according to the first and second embodiments has been described above. The job execution model is not limited to them.
 実施例1及び2に係るジョブ実行モデルについての共通点は、例えば以下の通りである。 The common points regarding the job execution models according to the first and second embodiments are as follows, for example.
 Hadoopをはじめとする並列データ処理システムでは、一般に、記憶空間におけるデータ群は構造化されない。これに対して、実施例1および実施例2によれば、ストレージ(例えば、ファイルシステム)において、複数の第1のレコードで構成される第1のデータセット(例えば、入力データセット#1)は、複数の第2のレコードで構成される第2のデータセット(例えば、入力データセット#2)に対して関連付けられる。具体的には、例えば、第1のデータセットは、第2のデータセットのうちにデータ処理に要する第2のレコードを特定するための索引である。即ち、第1のデータセットは構造化されているが、第2のデータセットは構造化されていなくてもよい。第1のデータセットが構造化されていることにより、それに関連付けられた第2のデータセットは、仮にそれが構造化されていない場合であっても、第2のデータセットのうちにデータ処理に要する第2のレコードを特定してアクセスすることが可能となる。また、別の例を挙げるとすると、第1のデータセットと第2のデータセットはそれぞれのレコードを結合することできる関係である。即ち、第1のデータセットは構造化されておらず、第2のデータセットが構造化されていてもよい。第2のデータセットが構造化されていることにより、それに関連付けられた第1のデータセットのレコードに対応する第2のレコードを選択的に抽出することが可能となる。 In parallel data processing systems such as Hadoop, data groups in the storage space are generally not structured. On the other hand, according to the first embodiment and the second embodiment, in the storage (for example, the file system), the first data set (for example, the input data set # 1) composed of a plurality of first records is Are associated with a second data set (for example, input data set # 2) composed of a plurality of second records. Specifically, for example, the first data set is an index for specifying a second record required for data processing in the second data set. That is, the first data set is structured, but the second data set may not be structured. Because the first data set is structured, the second data set associated with it is used for data processing in the second data set even if it is not structured. It becomes possible to specify and access the required second record. As another example, the first data set and the second data set have a relationship that allows respective records to be combined. That is, the first data set may not be structured, and the second data set may be structured. Since the second data set is structured, the second record corresponding to the record of the first data set associated with the second data set can be selectively extracted.
 この際、実施例1および実施例2によれば、第1のデータセットの書式に関する情報(例えば書式#1)や、第2のデータセットの書式に関する情報(例えば書式#2)や、第1のレコードに基づいて第2のレコードを参照する方式に関する情報(例えば参照方式)をはじめとする情報がアプリケーションにより用意される。当該情報は、例えばプログラムコードである。当該情報は、個々のアプリケーションとは独立して別のプログラム(例えば後述するシステムモジュール等)が有してもよい。しかしながら、アプリケーションが個々にこれを用意することができることにも利点が認められる。例えば、データベース管理システム(DBMS;Database Management System)は、ストレージ空間におけるデータ群(テーブル)をリレーショナルモデルに基づき管理する。書式や参照方式等のカタログ情報は、アプリケーションとは独立に管理される。この場合、例えば、レコードのカラムの型は既にDBMSが用意している型(例えば、整数や文字列等)から選択することとなるが、アプリケーションによってはDBMSが既に備えている型以外の型を以ってカラムを解釈することが望ましい場合がある。アプリケーションが個々に書式や参照方式等の情報を用意することができることは、データ処理システムとしての柔軟性の観点から利点が認められる場合がある。また、DBMSにおいては、一般に、データ集合(テーブル)における全てのレコードは、与えられたカタログ情報に厳密に従っていることを要請される。しかしながら、あるデータ集合に置いて特定の日時以降から記録されるレコードにカラムを追加するような場合にも、原則として、データ集合(テーブル)の全てのレコードにカラムを追加する必要がある。即ち、当該カラムを要しない特定の日付以前のレコードについても、(例えば空の)カラムを追加する必要がある。通常、このような操作には、データ集合(テーブル)を再構成や再編成する処理を要し、データ集合(テーブル)が大規模になるとその処理に係る時間は無視できない。他方で、アプリケーションが書式や参照方式等の情報を用意することができるとすると、アプリケーションによって特定の日付以前のレコードと特定の日付以降のレコードで異なる書式や参照方式等の情報を用意することができる。即ち、データ集合自体を変更することなく、アプリケーションを変更することによって、レコード書式の変更に柔軟にデータ処理を対応させることが可能となり、利点が認められる場合がある。 At this time, according to the first and second embodiments, information on the format of the first data set (for example, format # 1), information on the format of the second data set (for example, format # 2), The application prepares information including information related to a method for referring to the second record based on the record (for example, a reference method). The information is, for example, a program code. The information may be included in another program (for example, a system module described later) independently of each application. However, there are also benefits to the application being able to provide this individually. For example, a database management system (DBMS) manages a data group (table) in a storage space based on a relational model. Catalog information such as format and reference method is managed independently of the application. In this case, for example, the column type of the record is selected from types already prepared by the DBMS (for example, integers, character strings, etc.), but depending on the application, a type other than the type already provided by the DBMS may be selected. Thus, it may be desirable to interpret the column. The fact that an application can individually prepare information such as a format and a reference method may be recognized from the viewpoint of flexibility as a data processing system. In DBMS, it is generally required that all records in a data set (table) are strictly in accordance with given catalog information. However, even when a column is added to a record recorded after a specific date and time in a certain data set, in principle, it is necessary to add a column to all records in the data set (table). That is, it is necessary to add a column (for example, empty) even for a record before a specific date that does not require the column. Usually, such an operation requires a process of reconfiguring or reorganizing a data set (table). When the data set (table) becomes large, the time required for the process cannot be ignored. On the other hand, if the application can prepare information such as format and reference method, the application may prepare information such as format and reference method that is different for records before a specific date and records after a specific date. it can. That is, by changing the application without changing the data set itself, the data processing can be flexibly made compatible with the change of the record format, and an advantage may be recognized.
 また、実施例1および実施例2によれば、アプリケーションの規定したデータ処理のジョブ情報に基づき、アプリケーションとは別のプログラム(例えばシステムモジュール)が第1のデータセットから第1のレコードを読み込んで、当該レコードを当該ジョブ情報に基づき解釈し、それに基づきスレッドを生成して実行し、各スレッドにおいて更に第2のデータセットから第2のレコードを読み込み、読み込んだレコードに対してジョブ情報に規定された演算を実行することが可能となる。計算ノードはアプリケーションの規定したジョブ情報に従って、データ処理に係るデータ読み込みを並行して実行することができるようになる。これにより、データ読み込みのスループットが向上し、故に、データ処理に係る時間が短縮されることが期待される。 Further, according to the first and second embodiments, a program (for example, a system module) different from the application reads the first record from the first data set based on the job information of the data processing specified by the application. , Interpreting the record based on the job information, generating and executing a thread based on the job information, further reading the second record from the second data set in each thread, and defining the job information for the read record It is possible to execute the operation. The calculation node can execute data reading related to data processing in parallel according to job information defined by the application. Thereby, it is expected that the throughput of data reading is improved, and therefore, the time for data processing is shortened.
 以下、実施例1及び2を詳細に説明する。実施例2は実施例1を拡張したものであり、実施例1に関して説明した部分は、改めて説明せずとも、実施例2に適用される。 Hereinafter, Examples 1 and 2 will be described in detail. The second embodiment is an extension of the first embodiment, and the part described with respect to the first embodiment is applied to the second embodiment without being described again.
 図2Aは、実施例1に係る計算ノードの構成を示す。図2Aは、図1Aに示すジョブ実行モデルに従いデータ処理を行う計算ノードの構成を示す。 FIG. 2A shows a configuration of a calculation node according to the first embodiment. FIG. 2A shows a configuration of a computation node that performs data processing according to the job execution model shown in FIG. 1A.
 計算ノード100は、パーソナルコンピュータ、ワークステーション、サーバ又はメインフレームなどの計算機であってよい。また、計算ノード100は、計算機に装着して用いられる画像処理装置(GPU;Graphical Processing Unit)などを具備する補助演算機器(例えば、画像処理装置(GPU)カード)であってもよいし、計算機や補助演算機器において仮想化ソフトウェアや仮想化ハードウェア等によって構成された仮想的な計算機であってもよい。 The computing node 100 may be a computer such as a personal computer, a workstation, a server, or a mainframe. The computing node 100 may be an auxiliary computing device (for example, an image processing device (GPU) card) including an image processing device (GPU; Graphical Processing Unit) that is used by being attached to the computer. In addition, a virtual computer configured by virtual software, virtual hardware, or the like in the auxiliary arithmetic device may be used.
 計算ノード100は、通信インタフェースと、記憶装置と、それらに接続された演算装置とを有する。通信インタフェースとしては、例えば、NIC(Network interface card)102と、HBA(host bus adapter)103とがある。記憶装置としては、例えば、ストレージ104と、メモリ105とがある。演算装置は、例えばプロセッサ(CPU;Central Processing Unit)101である。制御装置は、プロセッサ以外に、専用の処理(例えば暗号化又は復号化)を行うハードウェア回路を含んでもよい。プロセッサ101、NIC102、HBA103、及びメモリ105は、内部バス106を介して接続されている。ストレージ104は、HBA103に接続されている。 The computation node 100 has a communication interface, a storage device, and an arithmetic device connected to them. As the communication interface, for example, there are a NIC (Network Interface Card) 102 and an HBA (Host Bus Adapter) 103. Examples of the storage device include a storage 104 and a memory 105. The arithmetic device is, for example, a processor (CPU; Central Processing Unit) 101. In addition to the processor, the control device may include a hardware circuit that performs dedicated processing (for example, encryption or decryption). The processor 101, NIC 102, HBA 103, and memory 105 are connected via an internal bus 106. The storage 104 is connected to the HBA 103.
 プロセッサ101は、コンピュータプログラムを実行する。NIC102は、ネットワーク200と計算ノード100とを接続する。ネットワーク200を介した通信のプロトコルとしては、例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)が採用されてよい。HBA103は、ストレージ104への入出力を仲介する。 The processor 101 executes a computer program. The NIC 102 connects the network 200 and the calculation node 100. As a protocol for communication via the network 200, for example, TCP / IP (Transmission Control Protocol / Internet Protocol) may be employed. The HBA 103 mediates input / output to the storage 104.
 ストレージ104は、1つ以上の不揮発性の記憶媒体を含む。不揮発性の記憶媒体は、例えば、磁気ディスク或いはフラッシュメモリである。ストレージ104は、複数の不揮発性の記憶媒体を備え、更に当該不揮発性の記憶媒体から記憶空間を構成するRAID(Redundant ARRAY of Independent Disks)コントローラを備えてもよい。 The storage 104 includes one or more nonvolatile storage media. The nonvolatile storage medium is, for example, a magnetic disk or a flash memory. The storage 104 may include a plurality of nonvolatile storage media, and may further include a RAID (Redundant ARRAY of Independent Disks) controller that configures a storage space from the nonvolatile storage media.
 メモリ105は、例えば、揮発性の記憶媒体(例えばDRAM(Dynamic Random Access Memory))であり、CPU101によって実行されるプログラムと、プログラムが使用するデータ等を記憶する。 The memory 105 is, for example, a volatile storage medium (for example, DRAM (Dynamic Random Access Memory)), and stores a program executed by the CPU 101, data used by the program, and the like.
 メモリ105は、アプリケーションプログラム(以下、アプリケーション)110、システムモジュール120、プロセスマネージャ131、タスクマネージャ132、スレッドマネージャ133、データ読み書き器140、ネットワークマネージャ150、ストレージマネージャ160、及びOS(Operating System)170を格納する。なお、システムモジュール120、プロセスマネージャ131、タスクマネージャ132、スレッドマネージャ133、データ読み書き器140、ネットワークマネージャ150、ストレージマネージャ160(以下、個々のプログラムモジュールを総じてモジュール群と称する)はアプリケーション110と静的もしくは動的にリンクして実行されるライブライモジュールであってもよく、この場合、アプリケーション110からの指示もしくはモジュール群におけるプログラムモジュール間の相互の指示はモジュール群が開示する呼び出しインタフェースによる。また、モジュール群はアプリケーション110とは別個に動作するプログラムであってもよく、この場合、アプリケーション110からの指示はプロセス間通信や共有メモリ等の手段による。 The memory 105 includes an application program (hereinafter referred to as an application) 110, a system module 120, a process manager 131, a task manager 132, a thread manager 133, a data reader / writer 140, a network manager 150, a storage manager 160, and an OS (Operating System) 170. Store. The system module 120, the process manager 131, the task manager 132, the thread manager 133, the data reader / writer 140, the network manager 150, and the storage manager 160 (hereinafter, individual program modules are collectively referred to as a module group) and the application 110 are static. Alternatively, it may be a library module that is dynamically linked and executed. In this case, an instruction from the application 110 or a mutual instruction between program modules in the module group depends on a call interface disclosed by the module group. Further, the module group may be a program that operates separately from the application 110. In this case, an instruction from the application 110 is based on means such as inter-process communication or shared memory.
 アプリケーション110は、ストレージ104に格納された入力データセットを読み込んで所定の処理を実行し、出力データセットを書き込むジョブを規定するプログラムであり、計算ノードはアプリケーション110を実行することによって当該ジョブを実行する。アプリケーション110は、当該ジョブを規定する情報(以下、ジョブ情報とする)として、例えば、マップ演算110aと、リデュース演算110bと、分割演算110cと、書式110e(書式#1)と、書式110f(書式#2)と、条件110gとを含む。 The application 110 is a program that defines a job that reads an input data set stored in the storage 104, executes predetermined processing, and writes an output data set, and the calculation node executes the job by executing the application 110. To do. For example, the map 110a, the reduce operation 110b, the division operation 110c, the format 110e (format # 1), and the format 110f (format 110f) are used as the information that defines the job (hereinafter referred to as job information). # 2) and condition 110g.
 マップ演算110aは、読み込んだレコードに対して適用される処理を規定するプログラムコードであり、例えば、読み込んだレコードからキーとバリューのペアからなる結果レコードを生成するものである。分割演算110cは、マップ演算を実行したのち、その実行結果を受け渡すリデュースプロセスを決定する際に実行されるプログラムコードであり、例えば、分割演算はマップ演算の結果レコードが含むキーに対するハッシュ演算などを含んでよい。書式110e(書式#1)は、入力データセット#1のレコードを解釈するための書式を規定するプログラムコードである。書式110f(書式#2)は、入力データセット#2のレコードを解釈するための書式を規定するプログラムコードである。参照方式110hは、入力データセット#1のレコードの参照に従い、入力データセット#2のレコードを取得する方式を規定するプログラムコードである。条件110gは、入力データセット#1及び/又は入力データセット#2に格納されたレコードのうちマップ演算の対象とするべきレコードの要件を規定するプログラムコードである。なお、アプリケーション110は、上述のプログラムコードを全て規定しなくてもよい。規定されていないものについては、所定の取り扱いを行ってよい。例えば、リデュース演算を備えない場合は、リデュースプロセスを実行されず、マッププロセスにおけるマップ演算の実行結果レコードがそのまま出力データセットに格納される。更に、アプリケーション110は比較演算(図示せず)、集約演算(図示せず)を規定してもよい。 The map calculation 110a is a program code that defines a process to be applied to the read record. For example, the map calculation 110a generates a result record including a key and value pair from the read record. The division operation 110c is a program code executed when the map operation is executed and then the reduction process for transferring the execution result is determined. For example, the division operation is a hash operation on a key included in the result record of the map operation. May be included. Format 110e (format # 1) is a program code that defines a format for interpreting records of input data set # 1. The format 110f (format # 2) is a program code that defines a format for interpreting the record of the input data set # 2. The reference method 110h is a program code that defines a method for acquiring the record of the input data set # 2 in accordance with the reference of the record of the input data set # 1. The condition 110g is a program code that defines the requirements for the record to be subjected to the map operation among the records stored in the input data set # 1 and / or the input data set # 2. Note that the application 110 does not have to define all the program codes described above. For those that are not specified, predetermined handling may be performed. For example, when the reduction operation is not provided, the reduction process is not executed, and the execution result record of the map operation in the map process is stored as it is in the output data set. Further, the application 110 may define a comparison operation (not shown) and an aggregation operation (not shown).
 システムモジュール120は、アプリケーション110とは独立しているもののアプリケーション110と連携して動作するプログラムモジュールであり、アプリケーション110からのジョブを実行する指示を受けて、アプリケーション110に規定されたジョブ情報に従いジョブを実行する。システムモジュール120は、アプリケーション110からジョブ実行の指示を受け付けるインタフェース部(図示せず)と、マップ関数121と、リデュース関数122と、スーパバイザ関数123とを含むエグゼキューション部とを有する。マップ関数121は、マッププロセスにおいて実行されるプログラムコード(関数)である。リデュース関数122は、リデュースプロセスにおいて実行されるプログラムコード(関数)である。スーパバイザ関数123は、スーパバイザプロセス(統括スーパバイザプロセスを含む)において実行されるプログラムコードである。システムモジュール120は、インタフェース部においてアプリケーション110からのジョブ実行の指示を受け付け、エグゼキューション部においてジョブを実行するのに要するプロセスを生成し、プロセスにおいて各関数を実行し、各関数を実行することによって、更にタスクとスレッドを生成して実行する。 The system module 120 is a program module that operates independently of the application 110, but operates in cooperation with the application 110. In response to an instruction to execute a job from the application 110, the system module 120 performs a job according to job information defined in the application 110. Execute. The system module 120 includes an interface unit (not shown) that receives a job execution instruction from the application 110, an execution unit that includes a map function 121, a reduce function 122, and a supervisor function 123. The map function 121 is a program code (function) executed in the map process. The reduce function 122 is a program code (function) executed in the reduce process. The supervisor function 123 is program code that is executed in a supervisor process (including a supervisory supervisor process). The system module 120 accepts a job execution instruction from the application 110 in the interface unit, generates a process required to execute the job in the execution unit, executes each function in the process, and executes each function To generate and execute tasks and threads.
 システムモジュール120の詳細を述べる。各計算ノードのCPU101は、システムモジュール120によってスーパバイザプロセスを生成し、当該スーパバイザプロセスにおいてスーパバイザ関数123を実行する。上述のスーパバイザプロセスの生成は、事前に例えば計算ノードを起動することにより自動的に行われてもよいし、ジョブの実行を開始してから必要に応じて行われてもよい。ジョブを実行する複数の計算ノード100のスーパバイザプロセスのいずれかのスーパバイザプロセスは、複数の計算ノード100を統括する処理も行う。なお、複数の計算ノード100を統括するスーパバイザプロセスを統括スーパバイザプロセスという。なお、統括スーパバイザプロセスは、固定的にいずれかの計算ノード100のスーパバイザプロセスとしてもよく、複数の計算ノード100から選択した計算ノード100のスーパバイザプロセスとしてもよい。なお、計算ノード100以外の計算機に、統括スーパバイザプロセスを備えるようにしてもよい。 Details of the system module 120 will be described. The CPU 101 of each calculation node generates a supervisor process by the system module 120 and executes the supervisor function 123 in the supervisor process. The generation of the supervisor process described above may be performed automatically by, for example, starting a computation node in advance, or may be performed as necessary after starting execution of a job. One of the supervisor processes of the plurality of computation nodes 100 that execute the job also performs processing for supervising the plurality of computation nodes 100. A supervisor process that supervises a plurality of computation nodes 100 is referred to as a supervisory supervisor process. The supervisor supervisor process may be fixedly a supervisor process of one of the computation nodes 100, or may be a supervisor process of the computation node 100 selected from the plurality of computation nodes 100. Note that a computer other than the computation node 100 may be provided with a general supervisor process.
 統括スーパバイザプロセスは、ジョブの実行に参加する全計算ノード100にアプリケーション110のコードを配布して、各スーパバイザプロセスに対してプロセスの割当てを行う。各ノードのスーパバイザプロセスは、統括スーパバイザプロセスの指示に基づいて、プロセスを生成する。統括スーパバイザプロセスは、ジョブ実行に参加する全計算ノードのスーパバイザプロセスの状態を把握する処理を行う。また、各スーパバイザプロセスは、自身の計算ノードにおけるジョブ実行に関わるプロセスの実行状態を把握する処理を行う。 The supervisory supervisor process distributes the code of the application 110 to all the computation nodes 100 participating in the job execution, and assigns the process to each supervisor process. The supervisor process of each node generates a process based on the instruction of the supervisory supervisor process. The supervisory supervisor process performs processing to grasp the state of the supervisor process of all the computation nodes participating in job execution. Each supervisor process performs processing for grasping the execution state of a process related to job execution in its own computation node.
 プロセスマネージャ131は、システムモジュールからの指示に基づき、プロセスを実行するのに要するメモリ資源を管理する。即ち、プロセスの生成、削除ならびに実行状態等を管理する。タスクマネージャ132は、システムモジュールからの指示に基づき、タスクを実行するのに要するメモリ資源を管理する。即ち、タスクの生成、削除ならびに実行状態等を管理する。スレッドマネージャ133は、システムモジュールからの指示に基づき、スレッドを実行するのに要するメモリ資源を管理する。即ち、スレッドの生成、削除ならびに実行状態等を管理する。 The process manager 131 manages memory resources required to execute a process based on an instruction from the system module. That is, process creation, deletion, execution status, and the like are managed. The task manager 132 manages memory resources required to execute a task based on an instruction from the system module. That is, task generation, deletion, execution status, and the like are managed. The thread manager 133 manages memory resources required to execute a thread based on an instruction from the system module. That is, it manages the generation, deletion, execution state, etc. of threads.
 データ読み書き器140は、システムモジュール120からの指示に基づき、ストレージへのデータの読み書きを行う。データ読み書き器140は例えばファイルシステムであってよい。例えば、データ読み書き器140は、指示されたデータ読み書きを行うのに自身の計算ノード100のストレージ104に対するデータ読み書きを要する場合には、ストレージマネージャ160により、ストレージ104に対してデータ読み書きを実行させ、ネットワーク200を介して接続された他の計算ノード100のストレージ104に対するデータ読み書きを要する場合には、ネットワークマネージャ150により、ネットワーク200を介して接続された他の計算ノード100のストレージ104に対してデータ読み書きを実行させる。この際、データ読み書き器140は、メモリ105のメモリ資源を用いて、読み書きするデータを一時的にキャッシュさせてもよい。 The data reader / writer 140 reads / writes data from / to the storage based on instructions from the system module 120. The data reader / writer 140 may be a file system, for example. For example, if the data reader / writer 140 needs to read / write data from / to the storage 104 of its own computing node 100 in order to perform the specified data read / write, the storage manager 160 causes the storage 104 to execute data read / write, When it is necessary to read / write data from / to the storage 104 of another computing node 100 connected via the network 200, the data is transferred to the storage 104 of another computing node 100 connected via the network 200 by the network manager 150. Read / write is executed. At this time, the data reader / writer 140 may temporarily cache data to be read / written using the memory resource of the memory 105.
 ネットワークマネージャ150は、ネットワークを介して接続された装置(例えば、他の計算ノード100等)とのデータ通信を制御する。ストレージマネージャ160は、自身の計算ノード100のストレージ104との入出力を制御する。OS170は、NIC102、HBA103、ストレージ104等の装置を管理するほか、計算ノード110の全体を管理する。 The network manager 150 controls data communication with devices (for example, other computing nodes 100) connected via the network. The storage manager 160 controls input / output with the storage 104 of its own computing node 100. The OS 170 manages devices such as the NIC 102, the HBA 103, and the storage 104, and also manages the entire computing node 110.
 本明細書においては、プログラムやその一部の名称(例えば、アプリケーション、システムモジュール、プロセス、タスク、スレッド)を主語として発明の実施例ならび変形例を説明する場合がある。この場合においては、プログラムやその一部は、計算ノード100が具備する演算装置(例えばプロセッサ101)によって実行されることによって、定められた処理を、適宜に記憶装置(例えばメモリ105やストレージ104)及び/又は通信インタフェース(例えばNIC102やHBA103)を用いて行うものであるため、発明の実施例ならび変形例を説明する際の主語が演算装置、プロセッサ101もしくは計算ノード100であるとして解釈してもよい。また、プログラムやその一部は、ハードウェアで行われても良く、その場合には、発明の実施例ならび変形例を説明する際の主語がプロセッサ101に代えて又は加えてそのハードウェアであるとして解釈してもよい。システムモジュール120、プロセスマネージャ131、タスクマネージャ132、スレッドマネージャ133、データ読み書き器140、ネットワークマネージャ150、ストレージマネージャ160等のようなコンピュータプログラムは、プログラムソースから計算ノード100にインストールされてよい。プログラムソースは、例えば、計算ノード100が読み取り可能な記憶メディアであってもよいし、計算ノード100に通信可能に接続されている計算機であってもよい。 In the present specification, embodiments and modifications of the invention may be described using a program or a part of its name (for example, an application, a system module, a process, a task, a thread) as a subject. In this case, the program and a part of the program are executed by the arithmetic device (for example, the processor 101) included in the calculation node 100, so that the determined processing is appropriately performed by the storage device (for example, the memory 105 and the storage 104). And / or using a communication interface (for example, NIC 102 or HBA 103), the subject in the description of the embodiments of the invention and the modifications may be interpreted as the arithmetic unit, the processor 101, or the calculation node 100. Good. In addition, the program or a part thereof may be executed by hardware, and in that case, the subject in describing the embodiment of the invention and the modified example is the hardware instead of or in addition to the processor 101. May be interpreted as Computer programs such as the system module 120, the process manager 131, the task manager 132, the thread manager 133, the data reader / writer 140, the network manager 150, the storage manager 160, etc. may be installed in the computing node 100 from the program source. The program source may be, for example, a storage medium that can be read by the computation node 100, or a computer that is connected to the computation node 100 so as to be communicable.
 計算ノード100は、性能や可用性の観点から、CPU101、NIC102、HBA103の少なくとも1つの要素を複数備えていてもよい。また、計算ノード100は、入力デバイス(例えば、キーボード及びポインティングデバイス)(図示しない)と表示デバイス(例えば液晶ディスプレイ)(図示しない)とを有してよい。入力デバイスと表示デバイスは一体になっていてもよい。 The computing node 100 may include a plurality of at least one element of the CPU 101, the NIC 102, and the HBA 103 from the viewpoint of performance and availability. The computing node 100 may include an input device (for example, a keyboard and a pointing device) (not shown) and a display device (for example, a liquid crystal display) (not shown). The input device and the display device may be integrated.
 図2Bは、実施例2に係る計算ノードの構成を示す。図2Bは、図1Bに示すジョブ実行モデルに従いデータ処理を行う計算ノードの構成を示す。 FIG. 2B shows a configuration of a calculation node according to the second embodiment. FIG. 2B shows a configuration of a computation node that performs data processing according to the job execution model shown in FIG. 1B.
 アプリケーション110は、ジョブ情報として、例えば、1以上のステージ演算110jと、1以上の分割演算110kと、1以上の書式110mと、1以上の条件110nと、1以上の参照方式110oと、1以上のビルド方式110pとを含む。 The application 110 includes, as job information, for example, one or more stage operations 110j, one or more division operations 110k, one or more formats 110m, one or more conditions 110n, one or more reference methods 110o, and one or more. The build method 110p.
 ステージ演算110jは、ジョブ実行モデルにおける各ステージのプロセスにおいて入力されたレコードに対して適用される処理を規定するプログラムコードであり、例えば、マップ演算であってもよいし、リデュース演算であってもよいし、他の演算であってもよい。図1Bのジョブ実行モデルの場合には、ステージ演算#1~#4の4つのステージ演算が含まれる。分割演算110kは、実行結果レコードを受け渡す後続のステージのプロセスを決定する際に実行されるプログラムコードである。例えば、分割演算は入力に対するハッシュ演算などを含んでよい。書式110mは、各入力データセットのレコードを解釈するための書式を規定するプログラムコードである。図1Bに示すジョブ実行モデルを実行するアプリケーション110には、入力データセット#1~#6までのそれぞれに対応する書式110mが格納されている。条件110nは、ステージ演算の対象とするべきレコードの要件を規定するプログラムコードである。参照方式110oは、ある入力データセットのレコードの参照に従い、参照先の入力データセットからレコードを取得する方式を規定するプログラムコードである。ビルド方式110pは、実行結果のレコードの作成方法を示す情報である。なお、アプリケーション110は、上述のプログラムコードを全て規定しなくてもよい。規定されていないものについては、所定の取り扱いを行ってよい。更に、アプリケーション110は比較演算(図示せず)、集約演算(図示せず)を規定してもよい。 The stage operation 110j is a program code that defines a process applied to a record input in the process of each stage in the job execution model. For example, the stage operation 110j may be a map operation or a reduce operation. It may be another operation. In the case of the job execution model of FIG. 1B, four stage calculations of stage calculations # 1 to # 4 are included. The division operation 110k is a program code that is executed when determining the process of the subsequent stage that delivers the execution result record. For example, the division operation may include a hash operation on the input. The format 110m is a program code that defines a format for interpreting the records of each input data set. The application 110 that executes the job execution model shown in FIG. 1B stores a format 110m corresponding to each of the input data sets # 1 to # 6. The condition 110n is a program code that defines the requirements of the record that should be the target of the stage calculation. The reference method 110o is a program code that defines a method for acquiring a record from a reference input data set in accordance with the reference of a record of a certain input data set. The build method 110p is information indicating a method of creating an execution result record. Note that the application 110 does not have to define all the program codes described above. For those that are not specified, predetermined handling may be performed. Further, the application 110 may define a comparison operation (not shown) and an aggregation operation (not shown).
 システムモジュール120は、一般化ステージ関数124と、スーパバイザ関数122とを含む。一般化ステージ関数124は、図1Bに示す各プロセスにおいて実行されるプログラムコード(関数)である。 The system module 120 includes a generalized stage function 124 and a supervisor function 122. The generalized stage function 124 is program code (function) executed in each process shown in FIG. 1B.
 図3Aは、実施例に係る計算機システムの第1の構成例を示す。図3Bは、実施例に係る計算機システムの第2の構成例を示す。 FIG. 3A shows a first configuration example of the computer system according to the embodiment. FIG. 3B illustrates a second configuration example of the computer system according to the embodiment.
 計算機システムは、図3Aに示すように、NIC102を介してネットワーク200(例えば、Ethernet(登録商標)によるローカルエリアネットワーク)によって接続された複数の計算ノード100から構成されてもよい。また、計算機システムは、図3Bに示すように、NIC102を介してネットワーク200によって接続され、更に、HBA103を介してネットワーク300(例えば、FibreChannelによるストレージエリアネットワーク)によって1以上のストレージ400と接続される複数の計算ノード100から構成されてもよい。また、ストレージ400は、ネットワーク300ではなくネットワーク200に接続され、共有ファイルアクセス用の通信プロトコル(NFSやCIFS)によって入出力を行うものであってもよい。 As shown in FIG. 3A, the computer system may include a plurality of calculation nodes 100 connected by a network 200 (for example, a local area network based on Ethernet (registered trademark)) via the NIC 102. Further, as shown in FIG. 3B, the computer system is connected to the network 200 via the NIC 102, and is further connected to one or more storages 400 via the network 300 (for example, a storage area network using FiberChannel) via the HBA 103. A plurality of calculation nodes 100 may be included. Further, the storage 400 may be connected to the network 200 instead of the network 300, and may perform input / output using a communication protocol (NFS or CIFS) for shared file access.
 ストレージ400は、1つ以上の不揮発性の記憶媒体を含む。不揮発性の記憶媒体は、例えば、磁気ディスク或いはフラッシュメモリである。ストレージ104は、複数の不揮発性の記憶媒体を備え、更に当該不揮発性の記憶媒体から記憶空間を構成するRAID(Redundant ARRAY of Independent Disks)コントローラを備えてもよい。ストレージ400のストレージ資源の全部もしくは一部は、計算ノード100が含むストレージ104と同様に扱ってよい。 The storage 400 includes one or more nonvolatile storage media. The nonvolatile storage medium is, for example, a magnetic disk or a flash memory. The storage 104 may include a plurality of nonvolatile storage media, and may further include a RAID (Redundant ARRAY of Independent Disks) controller that configures a storage space from the nonvolatile storage media. All or part of the storage resources of the storage 400 may be handled in the same manner as the storage 104 included in the computing node 100.
 図4Aは、実施例1に係るマップタスク実行処理の流れを示す。 FIG. 4A shows the flow of map task execution processing according to the first embodiment.
 このマップタスク実行処理は、図1Aに示すジョブ実行モデルにおけるマッププロセスにおいて実行されるマップタスクにおいて実行される処理を示す。 This map task execution process indicates a process executed in the map task executed in the map process in the job execution model shown in FIG. 1A.
 計算ノード100のプロセッサ101が、入力データセット#1のレコードを読み込んで処理を実行するための1つのスレッドSL1を実行することにより、ステップS10~ステップS15の処理を実行する。この処理は、プロセッサ101が、主に、マップ関数121を実行することにより実現される。 The processor 101 of the computing node 100 executes the processing of steps S10 to S15 by executing one thread SL1 for reading the record of the input data set # 1 and executing the processing. This process is realized by the processor 101 executing mainly the map function 121.
 S10で、プロセッサ101は、入力データセット#1から1つのレコードを取得する。ここで、入力データセット#1は、自身の計算ノード100のストレージ104に格納されている場合もあれば、他の計算ノード100のストレージ104に格納されている場合もある。なお、入力データセット#1からレコードを取得するレコード取得処理については、後述する。 In S10, the processor 101 acquires one record from the input data set # 1. Here, the input data set # 1 may be stored in the storage 104 of its own calculation node 100, or may be stored in the storage 104 of another calculation node 100. The record acquisition process for acquiring records from the input data set # 1 will be described later.
 S11で、プロセッサ101は、書式110e(書式#1)に基づいて、取得したレコードに含まれる各項目の内容を解釈し、取得したレコードに対して、条件110gに含まれる入力データセット#1のレコードに対する条件を適用することにより、当該レコードが条件を満足するか否かを判定し、必要であれば、S12に進む一方、必要でなければ、図示しないがS15に進む。S11では条件110gの一部が適用されてもよい。条件110gが規定されていない場合はそのままS12に進んでもよい。 In S11, the processor 101 interprets the contents of each item included in the acquired record based on the format 110e (format # 1), and the input data set # 1 included in the condition 110g is obtained for the acquired record. By applying the condition for the record, it is determined whether or not the record satisfies the condition. If necessary, the process proceeds to S12. If not necessary, the process proceeds to S15 although not shown. In S11, a part of the condition 110g may be applied. If the condition 110g is not defined, the process may proceed to S12 as it is.
 S12で、プロセッサ101は、取得したレコードに、入力データセット#2への参照があるか否かを判断する。この判断の結果が肯定的であれば、S13を行う一方、この判断の結果が否定的であれば、S15を行う。 In S12, the processor 101 determines whether or not the acquired record has a reference to the input data set # 2. If the result of this determination is affirmative, S13 is performed, while if the result of this determination is negative, S15 is performed.
 S13で、プロセッサ101は、取得したレコードの入力データセット#2への1つの参照について、入力データセット#2からレコードを取得して処理を行うためのスレッドSL2を生成する。 In S13, the processor 101 generates a thread SL2 for acquiring a record from the input data set # 2 and performing processing for one reference to the input data set # 2 of the acquired record.
 S14で、プロセッサ101は、取得したレコードに、更に未処理の入力データセット#2への参照があるか否かを判断する。この判断の結果が肯定的であれば、S13を行う一方、この判断の結果が否定的であれば、S15を行う。これにより、取得したレコードに、入力データセット#2への参照が複数あれば、S13によって、参照の数に応じたスレッドSL2が生成されることとなる。なお、スレッドの生成に必要な資源が不足する場合には、スレッドSL2の生成を一時的に保留してもよい。なお、この際、1つの参照の毎に1つのスレッドSL2を生成してもよいし、複数(例えば所定数)の参照の毎に1つのスレッドSL2を生成してもよい。 In S14, the processor 101 determines whether or not there is a reference to the unprocessed input data set # 2 in the acquired record. If the result of this determination is affirmative, S13 is performed, while if the result of this determination is negative, S15 is performed. Thus, if there are a plurality of references to the input data set # 2 in the acquired record, the thread SL2 corresponding to the number of references is generated in S13. Note that when the resources necessary for generating the thread are insufficient, the generation of the thread SL2 may be temporarily suspended. At this time, one thread SL2 may be generated for each reference, or one thread SL2 may be generated for a plurality of (for example, a predetermined number) references.
 S15で、プロセッサ101は、入力データセット#1に更に他のレコードがあるか否かを判断する。この判断の結果が肯定的であれば、S10を行う一方、この判断の結果が否定的であれば、この処理を終了して、この処理を実行したスレッドSL1を停止する。 In S15, the processor 101 determines whether there is another record in the input data set # 1. If the result of this determination is affirmative, S10 is performed. If the result of this determination is negative, this process is terminated and the thread SL1 that executed this process is stopped.
 一方、S13でスレッドSL1により生成されたスレッドSL2は、CPU101によって実行される。プロセッサ101が、スレッドSL2を実行することにより、ステップS16~ステップS19の処理を実行する。なお、本実施例では、プロセッサ101は、複数のスレッド(スレッドSL1、スレッドSL2等)を並行して実行することができる。計算ノード100は複数のプロセッサ101を備えており、あるプロセッサ101で生成したスレッドSL2が別のプロセッサ101で実行されてもよい。なお、並行実行可能なスレッドの数は、計算ノード100の資源等によって制限がある。 On the other hand, the thread SL2 generated by the thread SL1 in S13 is executed by the CPU 101. The processor 101 executes the processing of step S16 to step S19 by executing the thread SL2. In the present embodiment, the processor 101 can execute a plurality of threads (thread SL1, thread SL2, etc.) in parallel. The computing node 100 includes a plurality of processors 101, and a thread SL2 generated by one processor 101 may be executed by another processor 101. Note that the number of threads that can be executed in parallel is limited by the resources of the computing node 100 and the like.
 S16で、プロセッサ101は、参照方法110h及びスレッドSL1で取得された参照を用いて、入力データセット#2から1つのレコードを取得する。 In S16, the processor 101 acquires one record from the input data set # 2 using the reference acquired by the reference method 110h and the thread SL1.
 S17で、プロセッサ101は、書式110f(書式#2)に基づいて、取得したレコードに含まれる各項目の内容を解釈し、取得したレコードに対して、条件110gに含まれる入力データセット#2のレコードに対する条件を適用することにより、当該レコードが必要であるか否かを判定し、必要であれば、S18に進む一方、必要でなければ、図示しないがS19に進む。S17では条件110gの一部が適用されてもよい。条件110gが規定されていない場合はそのままS18に進んでもよい。 In S17, the processor 101 interprets the contents of each item included in the acquired record based on the format 110f (format # 2), and the input data set # 2 included in the condition 110g for the acquired record. By applying the condition for the record, it is determined whether or not the record is necessary. If necessary, the process proceeds to S18. If not necessary, the process proceeds to S19 although not shown. In S17, a part of the condition 110g may be applied. If the condition 110g is not defined, the process may proceed to S18 as it is.
 S18で、プロセッサ101は、取得したレコードを、主記憶105の演算キュー180に格納する。 In S18, the processor 101 stores the acquired record in the calculation queue 180 of the main memory 105.
 S19で、プロセッサ101は、入力データセット#2の参照で示される範囲に更に他のレコードがあるか否かを判断する。この判断の結果が肯定的であれば、S16を行う一方、この判断の結果が否定的であれば、この処理を終了して、この処理を実行したスレッドSL2を終了させる。 In S19, the processor 101 determines whether there is another record in the range indicated by the reference of the input data set # 2. If the result of this determination is affirmative, S16 is performed, while if the result of this determination is negative, this process is terminated and the thread SL2 that performed this process is terminated.
 また、プロセッサ101は、S20で、演算キュー180から1つのレコードを取得し、当該レコードに対して、マップ演算110aを適用することにより、レコードに対して所定の処理を実行し、その実行結果を出力する。この際、プロセッサ101はS20をSL2とは別のスレッドにおいて実行してもよい。S20を実行するスレッドは1つであってもよく、複数であってもよい。演算キュー180から一括して複数のレコードを取得してマップ演算110aを適用してもよい。プロセッサ101はスレッドSL2においてS18を実行する代わりに、スレッドSL2においてS17を実行した後にS20を実行してS17の結果のレコードに対してマップ演算を適用してもよい。ここで、実行結果を出力する方法としては、例えば、実行結果を主記憶105に格納するようにしても良く、また、実行結果を後続の処理を実行するリデュースプロセスに渡すようにしてもよい。 In S20, the processor 101 obtains one record from the computation queue 180, applies a map computation 110a to the record, executes a predetermined process on the record, and obtains the execution result. Output. At this time, the processor 101 may execute S20 in a thread different from SL2. There may be one or more threads that execute S20. The map calculation 110a may be applied by acquiring a plurality of records at once from the calculation queue 180. Instead of executing S18 in the thread SL2, the processor 101 may execute S20 after executing S17 in the thread SL2 and apply the map operation to the record of the result of S17. Here, as a method of outputting the execution result, for example, the execution result may be stored in the main memory 105, or the execution result may be passed to a reduce process that executes subsequent processing.
 なお、図4Aでは、入力データセット#1からレコードを読み込み、その処理を行うスレッドSL1と、入力データセット#2からレコードを読み込み、その処理を行うスレッドSL2を別に設けているが、スレッドSL1がスレッドSL2を生成せずにそのままS16からS19もしくはS20までに相当する処理を行ってもよい。また、所定の数のスレッドSL1を生成して、当該スレッドSL1によって入力データセット#1からレコードを読み込み、その処理を行ってもよい。更には、S15で更にレコードがあると判断した際に、新たにSL1を生成して、S10からS15に相当する処理を行ってもよい。 In FIG. 4A, a thread SL1 that reads records from the input data set # 1 and performs processing thereof and a thread SL2 that reads records from the input data set # 2 and performs processing thereof are provided separately. The processing corresponding to S16 to S19 or S20 may be performed as it is without generating the thread SL2. Alternatively, a predetermined number of threads SL1 may be generated, records may be read from the input data set # 1 by the threads SL1, and the processing may be performed. Furthermore, when it is determined in S15 that there are more records, SL1 may be newly generated, and processing corresponding to S10 to S15 may be performed.
 図4Bは、実施例2に係るタスク実行処理の流れを示す。 FIG. 4B shows a flow of task execution processing according to the second embodiment.
 このタスク実行処理は、図1Bに示すジョブ実行モデルにおけるステージプロセスにおいて実行されるタスクにおいて実行される処理を示す。 This task execution process indicates a process executed in a task executed in the stage process in the job execution model shown in FIG. 1B.
 計算ノード100のプロセッサ101が、入力データセット#dのレコードを読み込んで処理を実行するための1つのスレッドSLdを実行することにより、ステップS21~ステップS26の処理を実行する。ここで、図1Bのステージ#1プロセスを実行するタスク実行処理においては、入力データセット#dは、入力データセット#1であり、入力データセット#dは、入力データセット#2である。また、図1Bのステージ#4プロセスを実行するタスク実行処理においては、入力データセット#dは、入力データセット#5であり、入力データセット#dは、入力データセット#6である。 The processor 101 of the computation node 100 executes the processing of steps S21 to S26 by executing one thread SLd 1 for reading the record of the input data set #d 1 and executing the processing. Here, in the task execution process for executing the stage # 1 process of FIG. 1B, the input data set #d 1 is the input data set # 1, the input data set #d 2 is the input data set # 2 . Further, in the task execution process for executing the stage # 4 process of FIG. 1B, the input data set #d 1 is the input data set # 5, the input data set #d 2 is an input data set # 6.
 S21で、プロセッサ101は、入力データセット#dから1つのレコードを取得する。ここで、入力データセット#dは、自身の計算ノード100のストレージ104に格納されている場合もあれば、他の計算ノード100のストレージ104に格納されている場合もある。なお、入力データセット#dからレコードを取得するレコード取得処理については、後述する。 In S21, the processor 101 acquires one record from the input data set #d 1. Here, the input data set #d 1 may be stored in the storage 104 of its own calculation node 100 or may be stored in the storage 104 of another calculation node 100. Note that the record acquisition process of acquiring records from the input data set #d 1 will be described later.
 S22で、プロセッサ101は、入力データセット#dのレコードに対応する書式110mに基づいて、取得したレコードに含まれる各項目の内容を解釈し、取得したレコードに対して、条件110nに含まれる入力データセット#dのレコードに対する条件を適用することにより、当該レコードが条件を満足するか否かを判定し、必要であれば、S23に進む一方、必要でなければ、図示しないがS26に進む。S22では条件110nの一部が適用されてもよい。条件110nが規定されていない場合はそのままS23に進んでもよい。 In S22, the processor 101, based on the format 110m corresponding to the record in the input data set #d 1, with respect to interpret the contents of each item contained in the acquired record, the acquired records are included in the condition 110n by applying the criteria for records in the input data set #d 1, in the record to determine whether to satisfy the condition, if necessary, the process proceeds to S23, if not necessary, although not shown S26 move on. In S22, a part of the condition 110n may be applied. If the condition 110n is not defined, the process may proceed to S23 as it is.
 S23で、プロセッサ101は、取得したレコードに、入力データセット#dへの参照があるか否かを判断する。この判断の結果が肯定的であれば、S24を行う一方、この判断の結果が否定的であれば、S26を行う。 In S23, the processor 101, the acquired record, it is determined whether there is a reference to the input data set #d 2. If the result of this determination is affirmative, S24 is performed, while if the result of this determination is negative, S26 is performed.
 S24で、プロセッサ101は、取得したレコードの入力データセット#dへの1つの参照について、入力データセット#dからレコードを取得して処理を行うためのスレッドSLdを生成する。 In S24, the processor 101, for one reference to the input data set #d 2 of the acquired record, it generates a thread SLd 2 for getting to process records from the input data set #d 2.
 S25で、プロセッサ101は、取得したレコードに、更に入力データセット#dへの参照があるか否かを判断する。この判断の結果が肯定的であれば、S24を行う一方、この判断の結果が否定的であれば、S26を行う。これにより、取得したレコードに、入力データセット#dへの参照が複数あれば、S24によって、参照の数に応じたスレッドSLdが生成されることとなる。なお、スレッドの生成に必要な資源が不足する場合には、スレッドSLdの生成を一時的に保留してもよい。なお、この際、1つの参照の毎に1つのスレッドSLdを生成してもよいし、複数(例えば所定数)の参照の毎に1つのスレッドSLdを生成してもよい。 In S25, the processor 101, the acquired record, it is determined whether there are more references to input data set #d 2. If the result of this determination is affirmative, S24 is performed, while if the result of this determination is negative, S26 is performed. Thus, if there are a plurality of references to the input data set #d 2 in the acquired record, a thread SLd 2 corresponding to the number of references is generated in S24. Note that when the resources necessary for generating the thread are insufficient, the generation of the thread SLd 2 may be temporarily suspended. At this time, it may generate one thread SLd 2 for each of the one reference, may generate one thread SLd 2 for each of the plural reference (e.g., a predetermined number).
 S26で、プロセッサ101は、入力データセット#dに更に他のレコードがあるか否かを判断する。この判断の結果が肯定的であれば、S21を行う一方、この判断の結果が否定的であれば、この処理を終了して、この処理を実行したスレッドSLdを終了させる。 In S26, the processor 101 further determines whether there is another record in the input data set #d 1. If the result is affirmative in this determination, while performing S21, if is negative result of this determination, we end this process, and terminates the thread SLd 1 executing this process.
 一方、S24及び後述するS31でスレッドSLdk-1から生成されたスレッドSLdは、プロセッサ101によって実行される。ここにkは2以上の自然数を表し、例えばk=2の場合にはSLdk-1はSLdを、SLdはSLdを、SLdk+1はSLdを表すものとする。プロセッサ101が、スレッドSLdを実行することにより、ステップS27~ステップS35の処理を実行する。なお、本実施例では、プロセッサ101は、複数のスレッド(スレッドSLd、スレッドSLd等)を並行して実行することができる。計算ノード100は複数のプロセッサ101を備えており、あるプロセッサ101で生成したスレッドが別のプロセッサ101で実行されてもよい。なお、並行実行可能なスレッドの数は、計算ノード100の資源等によって制限がある。 On the other hand, the thread SLd k generated from the thread SLd k-1 in S24 and S31 to be described later is executed by the processor 101. Here, k represents a natural number of 2 or more. For example, when k = 2, SLd k-1 represents SLd 1 , SLd k represents SLd 2 , and SLd k + 1 represents SLd 3 . The processor 101 executes the processing of steps S27 to S35 by executing the thread SLd k . In this embodiment, the processor 101 can execute a plurality of threads (thread SLd 1 , thread SLd k, etc.) in parallel. The computing node 100 includes a plurality of processors 101, and a thread generated by one processor 101 may be executed by another processor 101. The number of threads that can be executed in parallel is limited by the resources of the computing node 100 and the like.
 S27で、プロセッサ101は、入力データセット#SLdk-1のレコードの参照及びこの参照を用いて入力データセット#SLdを参照するための参照方式110oに基づいて、入力データセット#SLdのレコードを取得する。 In S27, the processor 101, based on the reference method 110o for referring to the input data set #SLd k using the reference and the references of record input data set #SLd k-1, the input data set #SLd k Get a record.
 S28で、プロセッサ101は、書式110f(書式#d)に基づいて、取得したレコードに含まれる各項目の内容を解釈し、取得したレコードに対して、条件110nに含まれる入力データセット#dのレコードに対する条件を適用することにより、当該レコードが必要であるか否かを判定し、必要であれば、S29に進む一方、必要でなければ、図示しないがS35に進む。S28では条件110nの一部が適用されてもよい。条件110nが規定されていない場合はそのままS29に進んでもよい。 In S28, the processor 101 interprets the content of each item included in the acquired record based on the format 110f (format #d k ), and the input data set #d included in the condition 110n for the acquired record. By applying the condition for the record of k , it is determined whether or not the record is necessary. If necessary, the process proceeds to S29. If not necessary, the process proceeds to S35 although not shown. In S28, a part of the condition 110n may be applied. If the condition 110n is not defined, the process may proceed to S29 as it is.
 S29で、プロセッサ101は、更に入力データセット#dk+1へのアクセスを要するか否かを判断する。この判断の結果が肯定的であれば、S30を行う一方、この判断の結果が否定的であれば、S33に進む。例えば、図1Bのステージ#1プロセスでは、入力レコード#1からレコードを取得し、当該レコード中の参照に従い入力レコード#2からレコードを取得し、更に当該レコード中の参照に従い入力レコード#3からレコードを取得し、更に当該レコード中の参照に従い入力レコード#4からレコードを取得する必要がある。よって、k=2で生成されたスレッドSLd(SLd)で実行されるS29では、入力データセット#3へのアクセスを更に要するため、この判断は肯定的であり、k=3で生成されたスレッドSLd(SLd)で実行されるS29では、入力データセット#4へのアクセスを更に要するため、この判断は肯定的であり、k=4で生成されたスレッドSLd(SLd)で実行されるS29では、更なる入力データセットへのアクセスを要しないため、この判断は否定的となる。 In S29, the processor 101 determines whether or not access to the input data set #d k + 1 is further required. If the result of this determination is affirmative, S30 is performed, while if the result of this determination is negative, the process proceeds to S33. For example, in the stage # 1 process of FIG. 1B, a record is acquired from the input record # 1, a record is acquired from the input record # 2 according to the reference in the record, and a record is input from the input record # 3 according to the reference in the record In addition, it is necessary to acquire a record from the input record # 4 according to the reference in the record. Therefore, in S29 executed by the thread SLd k (SLd 2 ) generated at k = 2, this determination is affirmative because it requires further access to the input data set # 3, and is generated at k = 3. In S29 executed by the thread SLd k (SLd 3 ), since the access to the input data set # 4 is further required, this determination is affirmative, and the thread SLd k (SLd 4 ) generated at k = 4. In S29 executed at step S29, this determination is negative because no further access to the input data set is required.
 S30で、プロセッサ101は、取得したレコードに、入力データセット#dk+1への参照があるか否かを判断する。この判断の結果が肯定的であれば、S31を行う一方、この判断の結果が否定的であれば、S35を行う。 In S30, the processor 101 determines whether or not the acquired record has a reference to the input data set #d k + 1 . If the result of this determination is affirmative, S31 is performed, while if the result of this determination is negative, S35 is performed.
 S31で、プロセッサ101は、取得したレコードの入力データセット#dk+1への1つの参照について、入力データセット#dk+1からレコードを取得して処理を行うためのスレッドSLdk+1を生成する。 In S31, the processor 101 generates a thread SLd k + 1 for performing processing by acquiring a record from the input data set #d k + 1 for one reference to the input data set #d k + 1 of the acquired record.
 S32で、プロセッサ101は、取得したレコードに、更に入力データセット#dk+1への参照があるか否かを判断する。この判断の結果が肯定的であれば、S31を行う一方、この判断の結果が否定的であれば、S35を行う。これにより、取得したレコードに、入力データセット#dk+1への参照が複数あれば、S31によって、参照の数に応じたスレッドSLdk+1が生成されることとなる。なお、スレッドの生成に必要な資源が不足する場合には、スレッドSLdk+1の生成を一時的に保留してもよい。なお、この際、1つの参照の毎に1つのスレッドSLdk+1を生成してもよいし、複数(例えば所定数)の参照の毎に1つのスレッドSLdk+1を生成してもよい。 In S32, the processor 101 determines whether or not the acquired record further includes a reference to the input data set #d k + 1 . If the result of this determination is affirmative, S31 is performed, while if the result of this determination is negative, S35 is performed. Thereby, if there are a plurality of references to the input data set #d k + 1 in the acquired record, a thread SLd k + 1 corresponding to the number of references is generated in S31. Note that when the resources necessary for generating the thread are insufficient, the generation of the thread SLd k + 1 may be temporarily suspended. At this time, it may generate one thread SLd k + 1 for each of the one reference, may generate one thread SLd k + 1 for each of the plural reference (e.g., a predetermined number).
 S33で、プロセッサs101は、取得したレコードと、ビルド方式110pとに基づいて、所定の形式のレコードをビルド(生成)する。 In S33, the processor s101 builds (generates) a record in a predetermined format based on the acquired record and the build method 110p.
 S34で、プロセッサ101は、ビルドしたレコードに対して、ステージ演算110jを適用することにより、所定の処理を実行し、その実行結果を出力する。この際、プロセッサ101はスレッドSLdにおいてS33を実行した後にS34を実行する代わりに、一旦、ビルドしたレコードを、主記憶105の演算キューに格納し、演算キューから1つのレコードを取得し、S34を実行して当該レコードに対して、ステージ演算110jを適用することにより、レコードに対して所定の処理を実行し、その実行結果を出力してもよい。この際、プロセッサ101はS34をSLdとは別のスレッドにおいて実行してもよい。S34を実行するスレッドは1つであってもよく、複数であってもよい。演算キューから一括して複数のレコードを取得してステージ演算110jを適用してもよい。 In S <b> 34, the processor 101 executes predetermined processing by applying the stage operation 110 j to the built record, and outputs the execution result. At this time, instead of executing S34 after executing S33 in the thread SLd k , the processor 101 temporarily stores the built record in the calculation queue of the main memory 105, acquires one record from the calculation queue, and then executes S34. , And applying the stage operation 110j to the record, a predetermined process may be executed on the record, and the execution result may be output. At this time, the processor 101 may execute S34 in a thread different from SLd k . There may be one or more threads that execute S34. The stage calculation 110j may be applied by acquiring a plurality of records at once from the calculation queue.
 S35で、CPU101は、入力データセット#dの参照で示される範囲に更に他のレコードがあるか否かを判断する。この判断の結果が肯定的であれば、S27を行う一方、この判断の結果が否定的であれば、この処理を終了して、この処理を実行したスレッドSLdを中止する。 In S35, CPU 101 further determines whether there is another record in the range indicated by the reference input dataset #d k. If this determination result is affirmative, while performing S27, if the result of this determination is negative, then the processing ends, it stops the thread SLd k executing this process.
 なお、図4Bでは、入力データセット#dk-1からレコードを読み込み、その処理を行うスレッドSLdk-1と、入力データセット#dからレコードを読み込み、その処理を行うスレッドSLdを別に設けているが、スレッドSLdk-1がスレッドSLdを生成せずにそのままS27からS35までに相当する処理を行ってもよい。また、所定の数のスレッドSLdを生成して、当該スレッドSLdによって入力データセット#1からレコードを読み込み、その処理を行ってもよい。更には、S26もしくはS35で更にレコードがあると判断した際に、新たにSLdもしくはSLdを生成して、S21からS26までに相当する処理もしくはS27からS35までに相当する処理を行ってもよい。 In FIG. 4B, read records from the input data set #d k-1, a thread SLd k-1 to perform the processing to read records from the input data set #d k, a thread SLd k to perform the process separately Although provided, the thread SLd k-1 may perform the processing corresponding to S27 to S35 without generating the thread SLd k . Alternatively, a predetermined number of threads SLd 1 may be generated, and records may be read from the input data set # 1 by the threads SLd 1 and processed. Furthermore, when it is determined in S26 or S35 that there are more records, SLd 1 or SLd k is newly generated, and processing corresponding to S21 to S26 or processing corresponding to S27 to S35 is performed. Good.
 図5Aは、実施例1に係る入力データ及び入力データに対する処理を説明するための図である。 FIG. 5A is a diagram for explaining the input data and the process for the input data according to the first embodiment.
 入力データセット#2は、「Date & time」、「User」、「Product」、「Comment」を含む1以上のレコードを格納する。 Input data set # 2 stores one or more records including “Date & time”, “User”, “Product”, and “Comment”.
 入力データセット#1は、「Product」と、「Reference」との項目を有する1以上のレコードが、年月ごとにまとめられて管理されている。即ち、入力データセット#1は年月によって分割されている。例えば、スーパバイザプロセスは、このまとめられた部分(分割部分)の毎に、マップタスク等を割り当てることにより、並列データ処理を行う。この際、1つのマップタスクが複数の分割部分を担当してもよい。 In the input data set # 1, one or more records having items of “Product” and “Reference” are collected and managed for each year. That is, the input data set # 1 is divided by year and month. For example, the supervisor process performs parallel data processing by assigning a map task or the like for each of the collected parts (divided parts). At this time, one map task may be responsible for a plurality of divided portions.
 「Product」には、入力データセット#2におけるレコードの検索に使用する鍵となる項目(「Product」)の値が格納される。「Reference」には、入力データセット#2における当該レコードに対応する年月のレコードであって、当該レコード中の「Product」の値と同一の値を格納するレコード(参照先レコード)の物理的な格納位置を示す参照が格納される。なお、入力データセット#2に、複数の参照先レコードがある場合には、「Reference」には、複数の参照先レコードへの参照が格納される。なお、入力レコード#2はある鍵によってレコードを検索可能な構造(例えば、B木)を有してもよく、当該鍵の値を「Reference」に格納する参照としてもよい。ある1つの参照に複数のレコードが対応することがあってもよい。 “Product” stores a value of a key item (“Product”) used to search for a record in the input data set # 2. “Reference” includes the physical record of the record corresponding to the record in the input data set # 2 that stores the same value as the value of “Product” in the record (reference destination record). A reference indicating the correct storage location is stored. In addition, when there are a plurality of reference destination records in the input data set # 2, “Reference” stores references to the plurality of reference destination records. Note that the input record # 2 may have a structure (for example, a B-tree) in which a record can be searched with a certain key, and may be a reference for storing the value of the key in “Reference”. A plurality of records may correspond to a certain reference.
 入力データセット#1のレコードの書式は、書式#1に記述されている。 The record format of input data set # 1 is described in format # 1.
 また、入力データセット#2のレコードの書式は、書式#2に記述されている。また、入力データセット#1の「Reference」を用いて、入力データセット#2のレコードを参照する方法については、参照方式#1に記述されている。 Also, the record format of input data set # 2 is described in format # 2. Further, a method of referring to the record of the input data set # 2 using “Reference” of the input data set # 1 is described in the reference method # 1.
 図1Aに示すジョブ実行モデルにおけるマッププロセスにおいては、プロセッサ101はマップ関数121を実行することにより、入力データセット#1のレコードを読み込み、書式#1により、レコードにおけるProductと、Referenceとを把握する。そして、マップ関数121は、Productの値に基づいて、所定の条件に合致するか否かを判断し、条件を満たすレコードのReferenceを特定する。そして、プロセッサ101はマップ関数121を実行することにより、参照方式#1と、Referenceとに基づいて、入力データセット#2のレコードを取得する。 In the map process in the job execution model shown in FIG. 1A, the processor 101 reads the record of the input data set # 1 by executing the map function 121, and grasps the product and the reference in the record by the format # 1. . Then, the map function 121 determines whether or not a predetermined condition is met based on the value of Product, and identifies a reference of a record that satisfies the condition. Then, the processor 101 executes the map function 121 to acquire a record of the input data set # 2 based on the reference method # 1 and the reference.
 図5Bは、実施例1に係る書式及び参照を説明するための図である。 FIG. 5B is a diagram for explaining the format and reference according to the first embodiment.
 書式#1は、入力データセット#1のレコードの書式に関する情報であり、本実施例では、入力データセット#1のレコードを解釈する手続きが記述されている。書式#1には、入力レコード(すなわち、入力データセット#1のレコード)をバイナリ形式で解釈し、入力レコードの各カラムを、Text型、Long型、Int型、Int型として解釈すること、第1(0)のカラムを検索鍵とすることが記述されている。ここでは、カラムの型はJava(登録商標)言語における型宣言を用いて標記しているが、本発明はこれに限定されるものではない。 Format # 1 is information relating to the record format of the input data set # 1, and in this embodiment, a procedure for interpreting the record of the input data set # 1 is described. Format # 1 includes interpreting an input record (that is, record of input data set # 1) in binary format, interpreting each column of the input record as Text type, Long type, Int type, Int type, It describes that a column of 1 (0) is used as a search key. Here, the column type is indicated using a type declaration in the Java (registered trademark) language, but the present invention is not limited to this.
 書式#2は、入力データセット#2のレコードの書式に関する情報であり、本実施例では、入力データセット#2のレコードを解釈する手続きが記述されている。書式#2には、入力レコード(すなわち、入力データセット#2のレコード)をテキスト形式(文字列形式)で解釈することが記述されている。また、レコードにおけるカラム間の区切り文字は、カンマであり、第1(0)のカラムは、DateTime型であり、「Date & Time」と名付け、第2(1)のカラムは、Text型であり、「User」と名付け、第3(2)のカラムは、Text型であり、「Product」と名付け、第4(3)のカラムは、Text型であり、「Comment」と名付け、これらに基づいて入力カラムを解釈することが記述されている。 Format # 2 is information relating to the record format of the input data set # 2, and in this embodiment, a procedure for interpreting the record of the input data set # 2 is described. Format # 2 describes that an input record (that is, a record of input data set # 2) is interpreted in a text format (character string format). The delimiter between the columns in the record is a comma, the first (0) column is the DateTime type, named “Date & Time”, and the second (1) column is the Text type. , “User”, the third (2) column is Text type, “Product”, the fourth (3) column is Text type, “Comment”, based on these To interpret the input column.
 参照方式#1は、入力データセット#1の「Reference」を用いて、入力データセット#2のレコードを参照する方法についての手続きであり、入力レコード(書式#1に対応するレコード)の第2カラムをオフセットとし、第3カラムを長さとし、第4カラムをノードIDとして、物理参照により参照を行ってレコードを取得することが記述されている。ここで、物理参照は、指定されたノードIDが管理するストレージの指定されたオフセット(番地)を始点として、指定された長さ分のバイト列を、参照先のレコードとすることを意味する。 The reference method # 1 is a procedure for a method of referring to the record of the input data set # 2 by using “Reference” of the input data set # 1, and the second method of the input record (record corresponding to the format # 1). It is described that a record is obtained by referring to a physical reference using a column as an offset, a third column as a length, and a fourth column as a node ID. Here, the physical reference means that the specified offset (address) of the storage managed by the specified node ID is a starting point and a byte string for the specified length is used as a reference destination record.
 図5Cは、スレッド生成及びスレッドの実行を説明する模式図の一例である。図5Cの上側には、単一のスレッドによりプロセスを実行する場合の例を示し、図5Cの下側には、実施例1に係るスレッドを動的に生成し、複数スレッドを並行して実行する例を示す。なお、図5Cの表記は、次のルールに従う。
(*)横軸は、時刻を表す。
(*)図中の横に長い角丸四角形は、1つのスレッドによる一連の処理を意味する。角丸四角形の左端はスレッドによる処理を開始する時刻を表し、角丸四角形の右端は当該スレッドによる処理を終了する時刻を表す。
(*)角丸四角形の内部の値は、スレッドに対応した処理に伴って読み込まれるレコードを示す情報(例えば、レコードの先頭のカラムの値)を表す。
FIG. 5C is an example of a schematic diagram illustrating thread generation and thread execution. The upper side of FIG. 5C shows an example in which a process is executed by a single thread, and the lower side of FIG. 5C dynamically generates a thread according to the first embodiment and executes a plurality of threads in parallel. An example is shown. Note that the notation in FIG. 5C follows the following rules.
(*) The horizontal axis represents time.
(*) A round rectangle with a long side in the figure means a series of processing by one thread. The left end of the rounded rectangle represents the time when processing by the thread is started, and the right end of the rounded rectangle represents the time when processing by the thread is ended.
(*) The value inside the rounded rectangle represents information (for example, the value of the first column of the record) indicating the record that is read along with the processing corresponding to the thread.
 ここで、図5Cは、図5Aに示す2012年の2月(2012-Feb)に対応する入力データセット#1の各レコードを取得して、処理を実行する例を示している。 Here, FIG. 5C shows an example in which each record of the input data set # 1 corresponding to February 2012 (2012-Feb) shown in FIG. 5A is acquired and the process is executed.
 図5Cの上側の図に示すように、単一スレッドにより実行する場合においては、プロセッサは、入力データセット#1の2012年の2月(2012-Feb)に対応する上から2番目のレコード(「Product」の値が「AX Skirt)を読み込み、このレコードの「Reference」の値に基づいて、入力データセット#2の7番目のレコード(「2012-Feb-07 ・・・」)を参照し、入力データセット#1の上から3番目のレコード(「Product」の値が「BB Book」)を読み込み、このレコードの「Reference」の値に基づいて、入力データセット#2の8番目のレコード(「2012-Feb-08 ・・・」)を参照し、さらに、「Reference」の値に基づいて、入力データセット#2の10番目のレコード(「2012-Feb-08 ・・・」)を参照し、さらに、「Reference」の値に基づいて、入力データセット#2の11番目のレコード(「2012-Feb-08 ・・・」)を参照して処理を行っていく。即ち、ストレージからのレコードの読み込みとそれに対する処理は、逐次的に行われていく。 As shown in the upper diagram of FIG. 5C, when executed by a single thread, the processor records the second record from the top (2012-Feb) of input data set # 1 corresponding to February 2012 (2012-Feb). Read “Product” as “AX Skirt” and refer to the 7th record (“2012-Feb-07...”) Of input data set # 2 based on the “Reference” value of this record. , Read the third record from the top of input data set # 1 (the value of “Product” is “BB Book”), and based on the value of “Reference” of this record, the eighth record of input data set # 2 ("2012-Feb-08 ..."), and based on the "Reference" value, Referring to the tenth record (“2012-Feb-08...”) Of the tuset # 2, and further based on the value of “Reference”, the eleventh record (“2012-Feb” of the input data set # 2) -08...))) And process. That is, the reading of the record from the storage and the processing for it are performed sequentially.
 一方、本実施例においては、図5Cの下側の図に示すように、マップ関数121は、先ずスレッド5aにより、入力データセット#1の2012年の2月(2012-Feb)に対応する上から2番目のレコード(「Product」の値が「AX Skirt)を読み込み、このレコードの「Reference」の値に基づいて、入力データセット#2の7番目のレコード「2012-Feb-07 ・・・」)を参照するためのスレッド5bを生成して実行する。 On the other hand, in the present embodiment, as shown in the lower diagram of FIG. 5C, the map function 121 first corresponds to February 2012 (2012-Feb) of the input data set # 1 by the thread 5a. Read the second record (“Product” is “AX Skirt”), and based on the “Reference” value of this record, the seventh record “2012-Feb-07... )) Is generated and executed.
 次いで、マップ関数121は、スレッド5aにより、2012-Febに対応する入力データセット#1の上から3番目のレコード(「Product」の値が「AX Skirt)を読み込み、このレコードの「Reference」の4つの値に基づいて、入力データセット#2の8番目のレコード(「2012-Feb-08 ・・・」)を参照するためのスレッド5c、入力データセット#2の10番目のレコード(「2012-Feb-08 ・・・」)を参照するためのスレッド5d、入力データセット#2の11番目(「2012-Feb-08 ・・・」)のレコードを参照するためのスレッド5e、及び入力データセット#2の12番目のレコード(「2012-Feb-09 ・・・」)を参照するためのスレッド5fを順次生成して実行する。 Next, the map function 121 reads the third record from the top of the input data set # 1 corresponding to 2012-Feb (the value of “Product” is “AX Skirt”) by the thread 5a, and the “Reference” of this record is read. Based on the four values, the thread 5c for referring to the eighth record (“2012-Feb-08...”) Of the input data set # 2 and the tenth record (“2012” of the input data set # 2) -Feb-08 ... ") thread 5d for referencing, 11th (" 2012-Feb-08 ... ") thread 5e for referring to the input data set # 2, and input data Thread 5 for referring to the twelfth record of set # 2 ("2012-Feb-09 ...") Sequentially generates and executed.
 次いで、マップ関数121は、スレッド5aにより、入力データセット#1の2012-Febに対応する上から4番目のレコード(「Product」の値が「BC Bike)を読み込み、このレコードの「Reference」の2つの値に基づいて、入力データセット#2の6番目のレコードを参照するためのスレッド5g、入力データセット#2の9番目のレコードを参照するためのスレッド5hを生成して実行する。 Next, the map function 121 reads the fourth record from the top (the value of “Product” is “BC Bike”) corresponding to the 2012-Feb of the input data set # 1 by the thread 5a, and the “Reference” of this record is read. Based on the two values, a thread 5g for referring to the sixth record of the input data set # 2 and a thread 5h for referring to the ninth record of the input data set # 2 are generated and executed.
 次いで、マップ関数121は、スレッド5aにより、2012-Febに対応する入力データセット#1の上から5番目のレコード(「Product」の値が「BD Flower)を読み込み、このレコードの「Reference」の1つの値に基づいて、入力データセット#2の5番目のレコード(「2012-Feb-03 ・・・」)を参照するためのスレッド5iを生成して実行する。 Next, the map function 121 reads the fifth record from the top of the input data set # 1 corresponding to 2012-Feb (the value of “Product” is “BD Flower”) by the thread 5a, and the “Reference” of this record is read. Based on one value, a thread 5i for referring to the fifth record (“2012-Feb-03...”) Of the input data set # 2 is generated and executed.
 図5Cの下側図に示すように、スレッドを動的に生成し、当該スレッドにおいてレコードを読み込んで処理を行い、複数のスレッドを並行して実行することにより、単一のスレッドを実行する場合に比して、処理の実行時間を短縮することができる。 図5Dは、実施例2に係る入力データ及び入力データに対する処理を説明するための第1の図である。図5Eは、実施例2に係る入力データ及び入力データに対する処理を説明するための第2の図である。 As shown in the lower diagram of FIG. 5C, when a thread is dynamically generated, a record is read and processed in the thread, and a plurality of threads are executed in parallel to execute a single thread. Compared to, the execution time of the process can be shortened. FIG. 5D is a first diagram for explaining the input data and the process for the input data according to the second embodiment. FIG. 5E is a second diagram for explaining the input data and the process for the input data according to the second embodiment.
 実施例2に係るジョブ実行プランにおいては、入力データセット#2のレコードの値を用いて、更に、入力データセット#3のレコードを参照する。したがって、図5Dに示すように、アプリケーション110には、入力データセット#2のレコードの値(「User」の値)に基づいて、入力データセット#3を参照するための参照方式#2が更に備えられる。ここで、「User」の値は、当該値に対応する入力データセット#3のレコードの物理的な位置を示す参照ではなく、論理的な位置を示す(その値によって検索可能である)参照である。 In the job execution plan according to the second embodiment, the record of the input data set # 3 is further referred to by using the value of the record of the input data set # 2. Therefore, as shown in FIG. 5D, the application 110 further includes a reference method # 2 for referring to the input data set # 3 based on the record value (“User” value) of the input data set # 2. Provided. Here, the value of “User” is not a reference indicating a physical position of a record of the input data set # 3 corresponding to the value, but a reference indicating a logical position (searchable by the value). is there.
 図5Eには、入力データセット#3と、入力データセット#4とを示す。 FIG. 5E shows an input data set # 3 and an input data set # 4.
 入力データセット#4は、「User」、「Gender」、「Zip」、「Address」を含む1以上のレコードを格納する。 The input data set # 4 stores one or more records including “User”, “Gender”, “Zip”, and “Address”.
 入力データセット#3は、「User」と、「Reference」との項目を有する1以上のレコードが、所定の範囲ごとにまとめられて管理されている。「User」には、入力データセット#4におけるレコードの検索に使用する鍵となる項目の値が格納される。「Reference」には、入力データセット#4における当該レコード中の「Product」の値と同一の値を格納するレコード(参照先レコード)の物理的な格納位置を示す参照が格納される。なお、入力データセット#3に、複数の参照先レコードがある場合には、複数の参照先レコードへの参照が格納される。なお、入力レコード#3はある鍵によってレコードを検索可能な構造(例えば、B木)を有してもよく、当該鍵の値を「User」に格納する参照としてもよい。ある1つの参照に複数のレコードが対応することがあってもよい。 In the input data set # 3, one or more records having items of “User” and “Reference” are collected and managed for each predetermined range. In “User”, the value of an item which is a key used for searching for a record in the input data set # 4 is stored. In “Reference”, a reference indicating a physical storage position of a record (reference destination record) storing the same value as the value of “Product” in the record in the input data set # 4 is stored. When there are a plurality of reference destination records in the input data set # 3, references to the plurality of reference destination records are stored. Note that the input record # 3 may have a structure (for example, a B-tree) that allows a record to be searched with a certain key, and may be a reference for storing the value of the key in “User”. A plurality of records may correspond to a certain reference.
 入力データセット#3のレコードの書式は、書式#3に記述されている。また、入力データセット#4のレコードの書式は、書式#4に記述されている。また、入力データセット#3の「Reference」を用いて、入力データセット#4のレコードを参照する方法については、参照方式#3に記述されている。また、取得したレコードに基づいて、後続に出力するレコードを生成する手続きがビルド方式に記述されている。 The record format of input data set # 3 is described in format # 3. The record format of the input data set # 4 is described in format # 4. Further, a method of referring to the record of the input data set # 4 using “Reference” of the input data set # 3 is described in the reference method # 3. A procedure for generating a record to be output subsequently is described in the build method based on the acquired record.
 図1Bに示すジョブ実行モデルにおけるステージ#1プロセスにおいては、プロセッサ101が一般化ステージ関数124を実行することにより、入力データセット#1のレコードを読み込み、書式#1により、レコードにおける「Product」と、「Reference」とを把握する。そして、一般化ステージ関数124は、「Product」の値に基づいて、所定の条件に合致するか否かを判断し、条件を満たすレコードの「Reference」を特定する。そして、一般化ステージ関数124は、参照方式#1と、「Reference」とに基づいて、入力データセット#2のレコードを取得する。 In the stage # 1 process in the job execution model shown in FIG. 1B, the processor 101 reads the record of the input data set # 1 by executing the generalized stage function 124, and “Product” in the record by the format # 1 , “Reference”. Then, the generalization stage function 124 determines whether or not a predetermined condition is met based on the value of “Product”, and specifies “Reference” of a record that satisfies the condition. Then, the generalized stage function 124 acquires a record of the input data set # 2 based on the reference method # 1 and “Reference”.
 次いで、プロセッサ101が一般化ステージ関数124を実行することにより、書式#2により、読み込んだ入力データセット#2のレコードの「User」、「Product」、「Comment」を把握する。そして、一般化ステージ関数124は、「User」の値と、参照方法#2とに基づいて、入力データセット#3のレコードを取得する。 Next, the processor 101 executes the generalized stage function 124 to grasp “User”, “Product”, and “Comment” of the record of the read input data set # 2 according to the format # 2. Then, the generalization stage function 124 acquires a record of the input data set # 3 based on the value of “User” and the reference method # 2.
 プロセッサ101が一般化ステージ関数124を実行することにより、書式#3により、取得した入力データセット#3のレコードにおける「Reference」を把握する。そして、一般化ステージ124は、参照方式#3と、「Reference」とに基づいて、入力データセット#4のレコードを取得する。 By executing the generalized stage function 124, the processor 101 grasps “Reference” in the record of the acquired input data set # 3 according to the format # 3. Then, the generalization stage 124 acquires a record of the input data set # 4 based on the reference method # 3 and “Reference”.
 次いで、プロセッサ101が一般化ステージ関数124を実行することにより、書式#4により、読み込んだ入力データセット#4のレコードの「User」、「Gender」、「Zip」、「Address」を把握する。そして、プロセッサ101が一般化ステージ関数124を実行することにより、ビルド方式に基づいて、「User」,「Product」、「Comment」、「Gender」、「Zip」を含むレコードを構築して出力する。 Next, the processor 101 executes the generalized stage function 124 to grasp “User”, “Gender”, “Zip”, and “Address” of the record of the read input data set # 4 according to the format # 4. Then, the processor 101 executes the generalized stage function 124 to construct and output a record including “User”, “Product”, “Comment”, “Gender”, and “Zip” based on the build method. .
 図5Fは、実施例2に係る書式を説明するための図である。 FIG. 5F is a diagram for explaining a format according to the second embodiment.
 書式#3は、入力データセット#3のレコードの書式に関する情報であり、本実施例では、入力データセット#3のレコードを解釈する手続きが記述されている。書式#3には、入力レコード(すなわち、入力データセット#3のレコード)をバイナリ形式で解釈し、入力レコードの各カラムを、Text型、Long型、Int型、Int型として解釈すること、第1(0)のカラムを検索鍵とすることが記述されている。 Format # 3 is information related to the record format of the input data set # 3. In this embodiment, a procedure for interpreting the record of the input data set # 3 is described. Format # 3 includes interpreting the input record (that is, record of input data set # 3) in binary format, interpreting each column of the input record as Text type, Long type, Int type, Int type, It describes that a column of 1 (0) is used as a search key.
 書式#4は、入力データセット#4のレコードの書式に関する情報であり、本実施例では、入力データセット#4のレコードを解釈する手続きが記述されている。書式#4には、入力レコード(すなわち、入力データセット#4のレコード)をテキスト形式(文字列形式)で解釈することが記述されている。また、レコードにおけるカラム間の区切り文字は、カンマであり、第1(0)のカラムは、Text型であり、「User」と名付け、第2(1)のカラムは、Text型であり、「Gender」と名付け、第3(2)のカラムは、Text型であり、「Zip」と名付け、第4(3)のカラムは、Text型であり、「Address」と名付け、これらに基づいて入力カラムを解釈することが記述されている。 Format # 4 is information related to the record format of the input data set # 4. In this embodiment, a procedure for interpreting the record of the input data set # 4 is described. Format # 4 describes that an input record (that is, a record of input data set # 4) is interpreted in a text format (character string format). The delimiter between the columns in the record is a comma, the first (0) column is Text type, named “User”, the second (1) column is Text type, Named “Gender”, the third (2) column is Text type, named “Zip”, the fourth (3) column is Text type, named “Address” and entered based on these Describes interpreting columns.
 図5Gは、実施例2に係る参照方式を説明するための図である。 FIG. 5G is a diagram for explaining the reference method according to the second embodiment.
 参照方式#2は、入力データセット#2のレコードの値を用いて、入力データセット#3のレコードを参照する方法についての手続きであり、入力レコード(書式#2に対応するレコード)の第2カラムを参照鍵とし、論理参照により参照を行ってレコードを取得することが記述されている。ここで、論理参照は、指定された鍵の値によって、参照先のデータセットを検索して、参照先のレコードを同定することを意味する。 The reference method # 2 is a procedure for referring to the record of the input data set # 3 using the value of the record of the input data set # 2, and the second method of the input record (record corresponding to the format # 2). It describes that a column is used as a reference key and a record is obtained by referring to it with a logical reference. Here, the logical reference means that the reference destination data set is searched by the designated key value to identify the reference destination record.
 参照方式#3は、入力データセット#4の「Reference」を用いて、入力データセット#6のレコードを参照する方法についての手続きであり、入力レコード(書式#5に対応するレコード)の第2カラムをオフセットとし、第3カラムを長さとし、第4カラムをノードIDとして、物理参照により参照を行ってレコードを取得することが記述されている。ここで、物理参照は、指定されたノードIDが管理するストレージの指定されたオフセット(番地)を始点として、指定された長さ分のバイト列を、参照先のレコードとすることを意味する。 The reference method # 3 is a procedure for a method of referring to the record of the input data set # 6 by using “Reference” of the input data set # 4, and the second method of the input record (record corresponding to the format # 5). It is described that a record is obtained by referring to a physical reference using a column as an offset, a third column as a length, and a fourth column as a node ID. Here, the physical reference means that the specified offset (address) of the storage managed by the specified node ID is a starting point and a byte string for the specified length is used as a reference destination record.
 図5Hは、実施例2に係るカタログの一例を示す。 FIG. 5H shows an example of a catalog according to the second embodiment.
 本実施例においては、書式や、参照方式については、例えば、プログラムコードで記述されている。したがって、この書式や参照方式をユーザが用意することとなると、ユーザ自身がプログラムコードを作成できる必要がある。しかしながら、全てのユーザがプログラムコードを作成できるとは限らない。そこで、本実施例では、ユーザが、アプリケーションにおいて、プログラムコードよりも容易なカタログを記述することにより書式や、参照方式など、ジョブ情報の一部を規定できるようにし、そのカタログに基づいて、並列データ処理システムがデータ処理のジョブを実行するようにする。なお、この際、並列データ処理システムは、カタログを一旦、書式や参照方式に変換してからジョブを実行してもよいし、カタログを以って直接ジョブを実行してもよい。 In this embodiment, the format and the reference method are described in, for example, program code. Therefore, when the user prepares the format and the reference method, the user needs to be able to create the program code. However, not all users can create program codes. Therefore, in this embodiment, the user can specify a part of job information such as a format and a reference method by describing a catalog that is easier than the program code in the application, and based on the catalog, the parallel processing is performed. Let the data processing system execute data processing jobs. At this time, the parallel data processing system may execute the job after converting the catalog into a format or a reference method, or may directly execute the job using the catalog.
 図5Hに示すカタログは、例えば、XML(Extensible Markup Language)で記述されており、4つのデータ構造体に関する記述部50a~50dを含む。 The catalog shown in FIG. 5H is described in XML (Extensible Markup Language), for example, and includes description sections 50a to 50d related to four data structures.
 記述部50aには、入力データセット#2に対応する「user_comment」のデータセットは、テキストをカラム分割した形式であり、第1(0)カラムをDateTime型で解釈し、これを分割鍵とし、カラム間の区切り文字をカンマとしていることが記述されている。 In the description part 50a, the data set of “user_comment” corresponding to the input data set # 2 has a format in which the text is divided into columns, the first (0) column is interpreted in the DateTime type, and this is used as a split key. It is described that the delimiter between columns is a comma.
 また、記述部50bには、入力データセット#1に対応する「user_comment.product.index」のデータセットは、「user_comment」に対応した局所的な二次索引としての形式であり、「user_comment」に基づいて、カラムの区切り文字をカンマとした際における第3(2)カラムをText型で解釈し、これを索引鍵とすることが記述されている。なお、記述部50c、50dについても、上記記述部と同様な記述となっている。なお、カタログには必要なジョブ情報の一部を全て明示的に規定する必要はなく、明示的に規定されていないものについてはシステムモジュール等が所定の規定に沿って、並列データ処理を行ってもよい。例えば、この例では、「user_comment.product.index」については明示的に分割鍵を指定していないが、「user_comment.product.index」は局所的な二次索引として規定されていることから、その基となる「user_comment」と同じ分割が行われ、即ち、「user_comment」の分割部分の毎に二次索引としての「user_comment.product.index」が構成してもよい。 In addition, in the description unit 50b, the data set of “user_comment.product.index” corresponding to the input data set # 1 is in a format as a local secondary index corresponding to “user_comment”, and is in “user_comment”. On the basis of this, it is described that the third (2) column when the column delimiter is a comma is interpreted as a Text type and used as an index key. The description parts 50c and 50d have the same description as the above description part. Note that it is not necessary to explicitly specify all necessary job information in the catalog. For those that are not explicitly specified, the system module etc. performs parallel data processing in accordance with the specified rules. Also good. For example, in this example, no split key is explicitly specified for “user_comment.product.index”, but “user_comment.product.index” is defined as a local secondary index. The same division as the “user_comment” that is the basis is performed, that is, “user_comment.product.index” as a secondary index may be configured for each division part of “user_comment”.
 図6Aは、実施例1に係るレコード取得を説明するための模式図の一例である。なお、以下、図6A~図9Cの説明は、実施例1についての説明であるが、実施例1に限らず実施例2にも適用される説明である。 FIG. 6A is an example of a schematic diagram for explaining record acquisition according to the first embodiment. 6A to 9C are descriptions of the first embodiment, but are not limited to the first embodiment but are also applied to the second embodiment.
 計算ノード100のプロセッサ101がスレッドを実行して、そのスレッドにより、レコードを取得する際に、レコードが自身の計算ノード100のストレージ104に格納されているレコードである場合には、そのストレージ104からレコードを取得する。一方、レコードが他の計算ノード100のストレージ104に格納されている場合には、計算ノード100から他の計算ノード100へ、例えばローカルエリアネットワーク200を介して、レコードを取得するためのレコード取得要求を送信し、計算ノード100は当該レコード取得要求に従い他の計算ノード100がそのストレージ104から取得したレコードを受信することにより、レコードを取得する。この際、計算ノード100と他の計算ノード100との間にはセッションが張られる。複数のスレッドを実行している場合には、スレッド毎に発生されるレコード取得要求毎に、セッションが張られることとなる。この場合には、スレッド数が多くなればなるほど、張られるセッション数が増加することとなり、セッションの管理や制御に係る処理が増大してその効率が低下する。 When the processor 101 of the computation node 100 executes a thread and obtains a record using the thread, if the record is a record stored in the storage 104 of its own computation node 100, the storage 104 Get a record. On the other hand, if the record is stored in the storage 104 of another calculation node 100, a record acquisition request for acquiring the record from the calculation node 100 to the other calculation node 100, for example, via the local area network 200. The calculation node 100 acquires a record by receiving the record acquired from the storage 104 by the other calculation node 100 in accordance with the record acquisition request. At this time, a session is established between the computation node 100 and another computation node 100. When a plurality of threads are executed, a session is created for each record acquisition request generated for each thread. In this case, as the number of threads increases, the number of extended sessions increases, and processing related to session management and control increases, resulting in a decrease in efficiency.
 これに対して、以下に示すように、複数のレコード取得要求をまとめたブロック毎にセッションを張るようにしてもよい。 In contrast, as shown below, a session may be created for each block in which a plurality of record acquisition requests are collected.
 図6Bは、実施例2に係るデータ取得時のブロック化を説明するための模式図の一例である。 FIG. 6B is an example of a schematic diagram for explaining blocking at the time of data acquisition according to the second embodiment.
 計算ノード100のプロセッサ101は、複数のスレッドにより発生される複数のレコード取得要求を、1つのブロック(ブロック化レコード取得要求)にまとめ、当該ブロックを単位として計算ノード100と、他の計算ノード100との間にセッションを張る。これにより、計算ノード100間に張られるセッション数を低減することができ、処理効率の低下を防止することができる。 The processor 101 of the calculation node 100 collects a plurality of record acquisition requests generated by a plurality of threads into one block (blocked record acquisition request), and the calculation node 100 and other calculation nodes 100 in units of the block. Create a session with Thereby, the number of sessions spanned between the computation nodes 100 can be reduced, and a reduction in processing efficiency can be prevented.
 図7Aは、実施例1に係るレコードを取得する計算ノードにおけるレコード取得処理の流れを示す。 FIG. 7A shows a flow of record acquisition processing in a calculation node that acquires records according to the first embodiment.
 このレコード取得処理は、図4AのS10、S16、図4BのS21、S27の処理に対応する。 This record acquisition processing corresponds to the processing of S10 and S16 in FIG. 4A and S21 and S27 in FIG. 4B.
 S41で、データ読み書き器140は、システムモジュール120から指示されたレコードの読み込み(取得)が、自身の計算ノード100のストレージ104からのレコードの取得、すなわち、ローカルレコードの取得であるか否かを判断する。この判断の結果が肯定的であれば、S42を行う一方、この判断の結果が否定的であれば、S44を行う。 In S41, the data reader / writer 140 determines whether or not the reading (acquisition) of the record instructed from the system module 120 is the acquisition of the record from the storage 104 of its own computation node 100, that is, the acquisition of the local record. to decide. If the result of this determination is affirmative, S42 is performed, while if the result of this determination is negative, S44 is performed.
 S42で、データ読み書き器140は、ストレージマネージャ160により、OS170ならびにHBA103を経由して、ストレージ104に対して、レコードの取得に必要なデータを読み込むためのデータ読み込み要求を発行させる。具体的には、ストレージマネージャ160は、データ読み込み要求管理表700(図7C参照)にデータ読み込み要求の情報を格納するとともに、計算ノード100の主記憶105の要求キュー740に対して、データ読み込み要求を追加する。OS170は、要求キュー740からデータ読み込み要求を取得して、HBA103によってストレージ104に発行する。 In S42, the data read / write device 140 causes the storage manager 160 to issue a data read request for reading data necessary for acquiring a record to the storage 104 via the OS 170 and the HBA 103. Specifically, the storage manager 160 stores data read request information in the data read request management table 700 (see FIG. 7C), and sends a data read request to the request queue 740 in the main memory 105 of the computing node 100. Add The OS 170 acquires a data read request from the request queue 740 and issues it to the storage 104 by the HBA 103.
 S43で、データ読み書き器140は、自スレッドを保留状態とし、処理を終了する。 In S43, the data reader / writer 140 places its own thread in a suspended state and ends the process.
 S44で、データ読み書き器140は、ネットワークマネージャ150により、OS170ならびにNIC102を経由して、他の計算ノード100に対して、レコード取得要求メッセージを送信させる。具体的には、ネットワークマネージャ150は、リモートレコード取得要求管理表710(図7C参照)にレコード取得要求メッセージの情報を格納するとともに、計算ノード100の主記憶105の送信キュー720に対して、レコード取得要求メッセージを追加する。 In S44, the data reader / writer 140 causes the network manager 150 to transmit a record acquisition request message to the other calculation nodes 100 via the OS 170 and the NIC 102. Specifically, the network manager 150 stores the information of the record acquisition request message in the remote record acquisition request management table 710 (see FIG. 7C) and records it in the transmission queue 720 of the main memory 105 of the computing node 100. Add an acquisition request message.
 S45で、データ読み書き器140は、自スレッドを保留状態とし、処理を終了する。 In S45, the data reader / writer 140 puts its own thread in a suspended state and ends the process.
 一方、計算ノード100のストレージ104は、要求キュー740から発行されたデータ読み込み要求を受信して、当該データ読み込み要求に対応するデータを読み込んで、HBA103に送信する。OS170は、HBA103より読み込んだ当該データを主記憶105の完了キュー750に追加する。 On the other hand, the storage 104 of the computing node 100 receives the data read request issued from the request queue 740, reads the data corresponding to the data read request, and transmits it to the HBA 103. The OS 170 adds the data read from the HBA 103 to the completion queue 750 in the main memory 105.
 その後、S46で、データ読み書き器140は、完了キュー750からデータ読み込み要求に対応するデータを取得し、当該データからレコードを抽出する。レコード Thereafter, in S46, the data reader / writer 140 acquires data corresponding to the data read request from the completion queue 750, and extracts a record from the data. record
 S47で、データ読み書き器140は、データ読み込み要求管理表700に基づいて、受け取ったレコードを使用するスレッドを特定し、当該スレッドを再開し、レコード取得処理を終了する。 In S47, the data reader / writer 140 identifies a thread that uses the received record based on the data read request management table 700, restarts the thread, and ends the record acquisition process.
 一方、送信キュー720に格納されたレコード取得要求メッセージは、NIC102により送信先の計算ノード100に送信される。また、他の計算ノード100から送信されるレコード取得要求メッセージに対する取得完了メッセージは、NIC102により受信キュー730に格納される。 On the other hand, the record acquisition request message stored in the transmission queue 720 is transmitted by the NIC 102 to the calculation node 100 of the transmission destination. In addition, an acquisition completion message for a record acquisition request message transmitted from another calculation node 100 is stored in the reception queue 730 by the NIC 102.
 S48で、ネットワークマネージャ150は、受信キュー730の取得完了メッセージからレコードを抽出し、システムモジュール120に渡す。 In S48, the network manager 150 extracts a record from the acquisition completion message in the reception queue 730 and passes it to the system module 120.
 S49で、データ読み書き器140は、リモートレコード取得要求管理表710に基づいて、受け取ったレコードを使用するスレッドを特定し、当該スレッドを再開し、レコード取得処理を終了する。 In S49, the data reader / writer 140 identifies a thread that uses the received record based on the remote record acquisition request management table 710, restarts the thread, and ends the record acquisition process.
 図7Bは、実施例1に係るレコードを管理する計算ノードにおけるレコード取得処理の流れを示す。 FIG. 7B shows the flow of a record acquisition process in a calculation node that manages records according to the first embodiment.
 レコード取得要求メッセージの送信先の計算ノード100においては、NIC102がレコード取得要求メッセージを取得し、OS170が主記憶105の受信キュー760に格納する。 In the calculation node 100 to which the record acquisition request message is transmitted, the NIC 102 acquires the record acquisition request message, and the OS 170 stores it in the reception queue 760 of the main memory 105.
 S50で、送信先の計算ノード100のネットワークマネージャ150は、受信キュー760からレコード取得要求メッセージを取得し、データ読み書き器140に渡す。 In S 50, the network manager 150 of the calculation node 100 of the transmission destination acquires a record acquisition request message from the reception queue 760 and passes it to the data reader / writer 140.
 S51で、データ読み書き器140は、レコード取得要求メッセージに基づいて、ストレージマネージャ160により、OS170ならびにHBA103を経由して、ストレージ104に対して、レコードの取得に必要なデータを読み込むためのデータ読み込み要求を発行させ、処理を終了する。具体的には、ストレージマネージャ160は、計算ノード100の主記憶105の要求キュー780に対して、データ読み込み要求を追加する。OS170は、HBA103により、要求キュー740からデータ読み込み要求を取得して、ストレージ104に発行する。 In S51, based on the record acquisition request message, the data read / write device 140 uses the storage manager 160 to read data necessary for acquisition of records to the storage 104 via the OS 170 and the HBA 103. Is issued and the process is terminated. Specifically, the storage manager 160 adds a data read request to the request queue 780 in the main memory 105 of the computing node 100. The OS 170 acquires a data read request from the request queue 740 by the HBA 103 and issues it to the storage 104.
 ストレージ104は、要求キュー780から発行されたデータ読み込み要求を受信し、当該データ読み込み要求に対応するレコードを読み込んで、HBA103に送信する。OS170は、HBA103による読み込んだ当該レコードを主記憶105の完了キュー790に追加する。 The storage 104 receives the data read request issued from the request queue 780, reads the record corresponding to the data read request, and transmits it to the HBA 103. The OS 170 adds the record read by the HBA 103 to the completion queue 790 in the main memory 105.
 その後、S52で、データ読み書き器140は、完了キュー790からデータ読み込み要求に対応するデータからレコードを抽出する。 Thereafter, in S52, the data reader / writer 140 extracts a record from the data corresponding to the data read request from the completion queue 790.
 S53で、データ読み書き器140は、受け取ったレコードを取得完了メッセージに含め、ネットワークマネージャ150により、レコード取得要求メッセージの送信元の計算ノード100に対して取得完了メッセージを送信し、処理を終了する。具体的には、ネットワークマネージャ150は、計算ノード100の主記憶105の送信キュー760に対して、取得完了メッセージを追加する。 In S53, the data reader / writer 140 includes the received record in the acquisition completion message, and the network manager 150 transmits the acquisition completion message to the calculation node 100 that is the transmission source of the record acquisition request message, and ends the processing. Specifically, the network manager 150 adds an acquisition completion message to the transmission queue 760 in the main memory 105 of the computation node 100.
 送信キュー760に格納された取得完了メッセージは、NIC102によりレコード取得要求メッセージの送信元の計算ノード100に送信される。この取得完了メッセージは、送信元の計算ノード100において、NIC102により受信キュー730に格納する。 The acquisition completion message stored in the transmission queue 760 is transmitted by the NIC 102 to the calculation node 100 that is the transmission source of the record acquisition request message. This acquisition completion message is stored in the reception queue 730 by the NIC 102 in the calculation node 100 of the transmission source.
 図7Aに図示する処理は、図4AのS10、S16、図4BのS21、S27の処理を行うスレッド(SL1、SL2、SLd、SLd、SLd、SLdk+1等)において実行してもよい。例えば、CPU101がスレッドSL1においてS10のデータ取得処理を実行することにより、CPU101がS41からS45までに相当する手続きを同じスレッドSL1で実行してもよい。また、図7Aに図示する処理は、図4AのS10、S16、図4BのS21、S27の処理を行うスレッド(SL1、SL2、SLd、SLd、SLd、SLdk+1等)とは別のスレッドにおいて実行してもよい。例えば、CPU101がスレッドSL1においてS10のデータ取得処理を実行することにより、CPU101がS41からS45までに相当する手続きを別のスレッドで実行してもよい。この際、S41からS45までに相当する手続き、S46からS47までに相当する手続き、S48からS49までに相当する手続きの別に、それぞれ別のスレッドを設けてもよいし、同じスレッドで行ってもよい。また、それぞれの手続きに複数のスレッドを設けてもよい。また、S46からS47までに相当する手続き、S48からS49までに相当する手続きを駆動するために、更に別のスレッドを設けてもよい。これらの駆動は、完了キュー750ならびに受信キュー730に対してHBA103ならびにNIC102が追加を行うことにより生じる割り込みやシグナル等の手段によって行われてもよい。 The process illustrated in FIG. 7A may be executed in threads (SL1, SL2, SLd 1 , SLd 2 , SLd k , SLd k + 1, etc.) that perform the processes of S10 and S16 in FIG. 4A and S21 and S27 in FIG. 4B. . For example, the CPU 101 may execute the procedure corresponding to S41 to S45 in the same thread SL1 by executing the data acquisition process of S10 in the thread SL1. The process illustrated in FIG. 7A is different from the threads (SL1, SL2, SLd 1 , SLd 2 , SLd k , SLd k + 1, etc.) that perform the processes of S10 and S16 in FIG. 4A and S21 and S27 in FIG. 4B. It may be executed in a thread. For example, the CPU 101 may execute the procedure corresponding to S41 to S45 in another thread by executing the data acquisition process of S10 in the thread SL1. In this case, separate threads may be provided for the procedures corresponding to S41 to S45, the procedures corresponding to S46 to S47, and the procedures corresponding to S48 to S49, or the same thread may be used. . A plurality of threads may be provided for each procedure. Further, another thread may be provided to drive a procedure corresponding to S46 to S47 and a procedure corresponding to S48 to S49. These driving operations may be performed by means such as an interrupt or a signal generated when the HBA 103 and the NIC 102 add the completion queue 750 and the reception queue 730.
 図7Bに図示する処理については、S50からS51までに相当する手続き、S52からS53までに相当する手続きの別に、それぞれ別のスレッドを設けてもよいし、同じスレッドで行ってもよい。また、それぞれの手続きに複数のスレッドを設けてもよい。また、S52からS53までに相当する手続きを駆動するために、更に別のスレッドを設けてもよい。これらの駆動は、完了キュー790に対してHBA103が追加を行うことにより生じる割り込みやシグナル等の手段によって行われてもよい。 The processing illustrated in FIG. 7B may be provided in separate threads or in the same thread in addition to the procedures corresponding to S50 to S51 and the procedures corresponding to S52 to S53. A plurality of threads may be provided for each procedure. Further, another thread may be provided to drive the procedure corresponding to S52 to S53. Such driving may be performed by means such as an interrupt or a signal generated by the addition of the HBA 103 to the completion queue 790.
 図7Cは、実施例1に係るデータ読み込み要求管理表及びリモートレコード取得要求管理表の構成を示す。 FIG. 7C shows the configuration of the data read request management table and the remote record acquisition request management table according to the first embodiment.
 データ読み込み要求管理表700は、データ読み込み要求毎の情報として、スレッドID701、要求発行時刻702、及びデータ読み込み要求703を有する。データ読み込み要求703は、装置ID704、オフセット番地705、読み込み長706、及びバッファ番地707を有する。各種情報は、下記の通りである。
(*)スレッドID701は、データ読み込み要求を発行させたスレッドを識別するためのIDを示す。
(*)要求発行時刻702は、データ読み込み要求を発行した時刻を示す。
(*)データ読み込み要求703は、データ読み込み要求の内容を示す。
(*)装置ID704は、データ読み込み要求の送信先のストレージ104の装置IDを示す。
(*)オフセット番地705は、データ読み込み要求対象のレコードが格納されるストレージ104におけるアドレス(オフセット番地)を示す。
(*)読み込み長706は、読み込むレコードのデータ長(バイト長)を示す。
(*)バッファ番地707は、データ読み込み要求対象のレコードを格納する主記憶105上の領域(バッファ)のアドレスを示す。
The data read request management table 700 includes a thread ID 701, a request issue time 702, and a data read request 703 as information for each data read request. The data read request 703 includes a device ID 704, an offset address 705, a read length 706, and a buffer address 707. Various information is as follows.
(*) The thread ID 701 indicates an ID for identifying the thread that issued the data read request.
(*) Request issue time 702 indicates the time at which a data read request is issued.
(*) Data read request 703 indicates the content of the data read request.
(*) The device ID 704 indicates the device ID of the storage 104 that is the transmission destination of the data read request.
(*) An offset address 705 indicates an address (offset address) in the storage 104 in which the record of the data read request target is stored.
(*) Read length 706 indicates the data length (byte length) of the record to be read.
(*) A buffer address 707 indicates an address of an area (buffer) on the main memory 105 that stores a record to which a data read request is made.
 リモートレコード取得要求管理表710は、レコード取得要求毎の情報として、スレッドID711、要求発行時刻712、及びレコード取得要求713を有する。レコード取得要求713は、計算ノードID714、レコード参照715、バッファ番地716を有する。各種情報は、下記の通りである。
(*)スレッドID711は、レコード取得要求を発行させたスレッドを識別するためのIDを示す。
(*)要求発行時刻712は、レコード取得要求を発行した時刻を示す。
(*)レコード取得要求713は、レコード取得要求の内容を示す。
(*)計算ノードID714は、レコード取得要求の送信先の計算ノードのID(計算ノードID)を示す。
(*)レコード参照715は、レコード取得要求の対象となるレコードへの参照情報を示す。
(*)バッファ番地716は、データ読み込み要求対象のレコードを格納する主記憶105上の領域(バッファ)のアドレスを示す。
The remote record acquisition request management table 710 includes a thread ID 711, a request issue time 712, and a record acquisition request 713 as information for each record acquisition request. The record acquisition request 713 has a calculation node ID 714, a record reference 715, and a buffer address 716. Various information is as follows.
(*) The thread ID 711 indicates an ID for identifying the thread that issued the record acquisition request.
(*) The request issue time 712 indicates the time when the record acquisition request is issued.
(*) Record acquisition request 713 indicates the contents of the record acquisition request.
(*) The calculation node ID 714 indicates the ID (calculation node ID) of the calculation node that is the transmission destination of the record acquisition request.
(*) Record reference 715 indicates reference information to a record that is a target of a record acquisition request.
(*) The buffer address 716 indicates the address of an area (buffer) on the main memory 105 that stores the record of the data read request target.
 次に、実施例1の変形例に係るレコード取得処理を説明する。 Next, a record acquisition process according to a modification of the first embodiment will be described.
 図7Dは、実施例1の変形例に係るレコードを取得する計算ノードにおけるレコード取得処理の流れを示す。 FIG. 7D shows the flow of a record acquisition process in a calculation node that acquires a record according to a modification of the first embodiment.
 このレコード取得処理は、図4AのS10、S16、図4BのS21、S27の処理に対応する。 This record acquisition processing corresponds to the processing of S10 and S16 in FIG. 4A and S21 and S27 in FIG. 4B.
 S61で、データ読み書き器140は、システムモジュール120から指示されたレコードの読み込み(取得)が、自身の計算ノード100のストレージ104からのレコードの取得、すなわち、ローカルレコードの取得であるか否かを判断する。この判断の結果が肯定的であれば、S62を行う一方、この判断の結果が否定的であれば、S64を行う。 In S61, the data reader / writer 140 determines whether or not the reading (acquisition) of the record instructed from the system module 120 is the acquisition of the record from the storage 104 of its own computation node 100, that is, the acquisition of the local record. to decide. If the result of this determination is affirmative, S62 is performed, while if the result of this determination is negative, S64 is performed.
 S62で、データ読み書き器140は、ストレージマネージャ160により、ストレージ140に対して、データ読み込み要求を発行させる。なお、具体的な処理は、図7AにおけるS42と同様である。 In S62, the data reader / writer 140 causes the storage manager 160 to issue a data read request to the storage 140. The specific process is the same as S42 in FIG. 7A.
 S63で、データ読み書き器140は、自スレッドを保留状態とし、処理を終了する。 In S63, the data read / write device 140 puts its own thread in a suspended state and ends the process.
 S64で、データ読み書き器140は、各計算ノード100に対するレコード取得要求メッセージを、主記憶105の各計算ノード100のそれぞれに対応して設けられているブロック化キュー800、810、820の中の、このレコード取得要求メッセージの送信先の計算ノード100に対応するブロック化キューに追加し、当該レコード取得要求メッセージをブロック化リモートレコード取得要求管理表830に追加する。ここで、ブロック化リモードレコード取得要求管理表830においては、同一の計算ノード100を送信先とする複数のレコード取得要求メッセージが1つの要求(ブロック化リモートレコード取得要求)にまとめられる。 In S64, the data reader / writer 140 sends a record acquisition request message to each computation node 100 in the blocked queues 800, 810, and 820 provided corresponding to each computation node 100 in the main memory 105. The record acquisition request message is added to the blocked queue corresponding to the calculation node 100 of the transmission destination, and the record acquisition request message is added to the blocked remote record acquisition request management table 830. Here, in the blocked remode record acquisition request management table 830, a plurality of record acquisition request messages having the same calculation node 100 as a transmission destination are combined into one request (blocked remote record acquisition request).
 S65で、データ読み書き器140は、自スレッドを保留状態とし、処理を終了する。 In S65, the data reader / writer 140 places its own thread in a suspended state and ends the process.
 S66で、ネットワークマネージャ150は、各ブロック化キュー800、810、820のそれぞれから、複数のレコード取得要求メッセージを含むブロック化リモートレコード取得要求を抽出する。 In S66, the network manager 150 extracts a blocked remote record acquisition request including a plurality of record acquisition request messages from each of the blocked queues 800, 810, and 820.
 S67で、ネットワークマネージャ150は、ブロック化リモートレコード取得要求メッセージをOS170ならびにNIC102を介して送信し、処理を終了する。具体的には、ネットワークマネージャ150は、ブロック化リモートレコード取得要求メッセージを主記憶105の送信キュー840に格納し、NIC102が送信キュー840からブロック化リモートレコード取得要求メッセージを送信先の計算ノード100に送信する。このように、複数のレコード取得要求を1つのブロック化リモートレコード取得要求メッセージとするとので、通信時に張られるセッション数を低減することができる。 In S67, the network manager 150 transmits a blocked remote record acquisition request message via the OS 170 and the NIC 102, and ends the process. Specifically, the network manager 150 stores the blocked remote record acquisition request message in the transmission queue 840 of the main memory 105, and the NIC 102 sends the blocked remote record acquisition request message from the transmission queue 840 to the destination calculation node 100. Send. Thus, since a plurality of record acquisition requests are made into one blocked remote record acquisition request message, the number of sessions established during communication can be reduced.
 この後、OS170は、NIC102により、他の計算ノード100から送信されるブロック化レコード取得完了メッセージを受信し、受信キュー850に格納する。 Thereafter, the OS 170 receives the blocked record acquisition completion message transmitted from the other calculation node 100 by the NIC 102 and stores it in the reception queue 850.
 S68で、ネットワークマネージャ150は、受信キュー850からブロック化レコード取得完了メッセージを取得し、ブロック化レコード取得完了メッセージから複数のレコードを抽出し、システムモジュール120に渡す。 In S68, the network manager 150 acquires a blocked record acquisition completion message from the reception queue 850, extracts a plurality of records from the blocked record acquisition completion message, and passes them to the system module 120.
 S69で、データ読み書き器140は、ブロック化リモートレコード取得要求管理表830に基づいて、受け取ったレコードを使用するスレッドを特定し、当該スレッドを再開し、レコード取得処理を終了する。 In S69, the data reader / writer 140 identifies a thread that uses the received record based on the blocked remote record acquisition request management table 830, restarts the thread, and ends the record acquisition process.
 図7Eは、実施例1の変形例に係るレコードを管理する計算ノードにおけるレコード取得処理の流れを示す。 FIG. 7E shows the flow of record acquisition processing in a calculation node that manages records according to a modification of the first embodiment.
 ブロック化リモートレコード取得要求メッセージの送信先の計算ノード100においては、NIC102がブロック化リモートレコード取得要求メッセージを取得し、主記憶105の受信キュー860に格納する。 In the calculation node 100 that is the transmission destination of the blocked remote record acquisition request message, the NIC 102 acquires the blocked remote record acquisition request message and stores it in the reception queue 860 of the main memory 105.
 S70で、送信先の計算ノード100のネットワークマネージャ150は、受信キュー860からブロック化リモートレコード取得要求メッセージを取得し、ブロック化リモートレコード取得要求メッセージから複数のレコード取得要求を抽出してデータ読み書き器140に渡す。 In S70, the network manager 150 of the destination computation node 100 acquires the blocked remote record acquisition request message from the reception queue 860, extracts a plurality of record acquisition requests from the blocked remote record acquisition request message, and reads and writes the data read / write device 140.
 S71で、データ読み書き器140は、複数のレコード取得要求メッセージに基づいて、ストレージマネージャ160により、HBA103を経由して、ストレージ104に対して、複数のレコードの取得に必要なデータを読み込むための複数のデータ読み込み要求を発行し、処理を終了する。具体的には、ストレージマネージャ160は、計算ノード100の主記憶105の要求キュー880に対して、複数のデータ読み込み要求を追加する。HBA104は、要求キュー780からデータ読み込み要求を取得して、ストレージ104に発行する。 In S <b> 71, the data reader / writer 140 uses the storage manager 160 to read data necessary for acquiring a plurality of records to the storage 104 via the HBA 103 based on the plurality of record acquisition request messages. The data read request is issued, and the process ends. Specifically, the storage manager 160 adds a plurality of data read requests to the request queue 880 in the main memory 105 of the computing node 100. The HBA 104 acquires a data read request from the request queue 780 and issues it to the storage 104.
 ストレージ104は、要求キュー880から発行されたデータ読み込み要求を受信し、当該データ読み込み要求に対応するレコードを読み込んで、HBA103に送信し、HBA103が読み込んだ当該データを主記憶105の完了キュー890に追加する。 The storage 104 receives the data read request issued from the request queue 880, reads the record corresponding to the data read request, sends it to the HBA 103, and sends the data read by the HBA 103 to the completion queue 890 of the main memory 105. to add.
 その後、S72で、ストレージマネージャ160は、完了キュー890からデータ読み込み要求に対応する複数のレコードを取得し、当該データからレコードを抽出し、システムモジュール120に渡す。 Thereafter, in S72, the storage manager 160 acquires a plurality of records corresponding to the data read request from the completion queue 890, extracts the records from the data, and passes them to the system module 120.
 S73で、データ読み書き器140は、受け取った複数のレコードをブロック化取得完了メッセージに含め、ネットワークマネージャ150により、ブロック化リモートレコード取得要求メッセージの送信元の計算ノード100に対してブロック化取得完了メッセージを送信させ、処理を終了する。具体的には、ネットワークマネージャ150は、計算ノード100の主記憶105の送信キュー870に対して、ブロック化取得完了メッセージを追加する。送信キュー870に格納されたブロック化取得完了メッセージは、NIC102によりブロック化リモートレコード取得要求メッセージの送信元の計算ノード100に送信される。このブロック化取得完了メッセージは、送信元の計算ノード100において、NIC102により受信キュー850に格納される。 In S73, the data reader / writer 140 includes the received plurality of records in the blocked acquisition completion message, and the network manager 150 sends a blocked acquisition completion message to the computing node 100 that is the transmission source of the blocked remote record acquisition request message. Is transmitted, and the process ends. Specifically, the network manager 150 adds a blocked acquisition completion message to the transmission queue 870 in the main memory 105 of the computing node 100. The blocked acquisition completion message stored in the transmission queue 870 is transmitted by the NIC 102 to the calculation node 100 that is the transmission source of the blocked remote record acquisition request message. This blocked acquisition completion message is stored in the reception queue 850 by the NIC 102 in the calculation node 100 of the transmission source.
 図7Dに図示する処理は、図4AのS10、S16、図4BのS21、S27の処理を行うスレッド(SL1、SL2、SLd、SLd、SLd、SLdk+1等)において実行してもよい。例えば、CPU101がスレッドSL1においてS10のデータ取得処理を実行することにより、CPU101がS61からS65までに相当する手続きを同じスレッドSL1で実行してもよい。また、図7Dに図示する処理は、図4AのS10、S16、図4BのS21、S27の処理を行うスレッド(SL1、SL2、SLd、SLd、SLd、SLdk+1等)とは別のスレッドにおいて実行してもよい。例えば、CPU101がスレッドSL1においてS10のデータ取得処理を実行することにより、CPU101がS61からS65までに相当する手続きを別のスレッドで実行してもよい。この際、S61からS65までに相当する手続き、S66からS67までに相当する手続き、S68からS69までに相当する手続きの別に、それぞれ別のスレッドを設けてもよいし、同じスレッドで行ってもよい。また、それぞれの手続きに複数のスレッドを設けてもよい。また、S66からS67までに相当する手続き、S68からS69までに相当する手続きを駆動するために、更に別のスレッドを設けてもよい。これらの駆動は、完了キュー750ならびに受信キュー730に対してHBA103ならびにNIC102が追加を行うことにより生じる割り込みやシグナル等の手段によって行われてもよい。 The process illustrated in FIG. 7D may be executed in threads (SL1, SL2, SLd 1 , SLd 2 , SLd k , SLd k + 1, etc.) that perform the processes of S10 and S16 in FIG. 4A and S21 and S27 in FIG. 4B. . For example, the CPU 101 may execute the procedure corresponding to S61 to S65 in the same thread SL1 by executing the data acquisition process of S10 in the thread SL1. The process illustrated in FIG. 7D is different from the threads (SL1, SL2, SLd 1 , SLd 2 , SLd k , SLd k + 1, etc.) that perform the processes of S10 and S16 in FIG. 4A and S21 and S27 in FIG. 4B. It may be executed in a thread. For example, the CPU 101 may execute the procedure corresponding to S61 to S65 in another thread by executing the data acquisition process of S10 in the thread SL1. In this case, separate threads may be provided for the procedures corresponding to S61 to S65, the procedures corresponding to S66 to S67, and the procedures corresponding to S68 to S69, or the same thread may be used. . A plurality of threads may be provided for each procedure. Further, another thread may be provided to drive the procedure corresponding to S66 to S67 and the procedure corresponding to S68 to S69. These driving operations may be performed by means such as an interrupt or a signal generated when the HBA 103 and the NIC 102 add the completion queue 750 and the reception queue 730.
 図7Eに図示する処理については、S70からS71までに相当する手続き、S72からS73までに相当する手続きの別に、それぞれ別のスレッドを設けてもよいし、同じスレッドで行ってもよい。また、それぞれの手続きに複数のスレッドを設けてもよい。例えば、S70で取得したブロック化レコード取得要求メッセージに従い、複数のスレッドを生成し、その各々のスレッドにおいてS71を実行してデータ読み込み要求を実行してもよい。この際、当該メッセージに含まれるレコード取得要求の数と同じ数のスレッドを生成してもよいし、また、所定の数のスレッドを生成してもよい。S72からS73までに相当する手続きを駆動するために、更に別のスレッドを設けてもよい。これらの駆動は、完了キュー790に対してHBA103が追加を行うことにより生じる割り込みやシグナル等の手段によって行われてもよい。 The processing illustrated in FIG. 7E may be performed in a separate thread, or may be performed in the same thread, separately from the procedure corresponding to S70 to S71 and the procedure corresponding to S72 to S73. A plurality of threads may be provided for each procedure. For example, a plurality of threads may be generated according to the blocked record acquisition request message acquired in S70, and the data read request may be executed by executing S71 in each of the threads. At this time, the same number of threads as the number of record acquisition requests included in the message may be generated, or a predetermined number of threads may be generated. In order to drive the procedure corresponding to S72 to S73, another thread may be provided. Such driving may be performed by means such as an interrupt or a signal generated by the addition of the HBA 103 to the completion queue 790.
 図7Fは、変形例に係るブロック化リモートレコード取得要求管理表の構成を示す。 FIG. 7F shows the configuration of a blocked remote record acquisition request management table according to a modification.
 ブロック化リモートレコード取得要求管理表830は、ブロック化リモートレコード取得要求毎の情報として、要求発行時刻832、要求の数833、及び1以上のレコード取得要求834を有する。レコード取得要求834は、スレッドID831、計算ノードID835、レコード参照836、バッファ番地837、完了フラグ838を有する。各種情報は、下記の通りである。
(*)要求発行時刻832は、ブロック化リモートレコード取得要求を発行した時刻を示す。
(*)要求の数833は、ブリック化リモートレコード取得要求に含まれるレコード取得要求の数を示す。
(*)レコード取得要求834は、レコード取得要求の内容を示す。
(*)スレッドID831は、レコード取得要求を発行したスレッドを識別するためのIDを示す。
(*)計算ノードID835は、レコード取得要求の送信先の計算ノードのID(計算ノードID)を示す。
(*)レコード参照836は、レコード取得要求の対象となるレコードへの参照情報を示す。
(*)バッファ番地837は、レコード取得要求の対象となるレコードを格納する主記憶105上の領域(バッファ)のアドレスを示す。
(*)完了フラグ838は、レコード取得要求に対応するレコードを取得したか否かを示すフラグである。
The blocked remote record acquisition request management table 830 includes a request issue time 832, the number of requests 833, and one or more record acquisition requests 834 as information for each blocked remote record acquisition request. The record acquisition request 834 includes a thread ID 831, a calculation node ID 835, a record reference 836, a buffer address 837, and a completion flag 838. Various information is as follows.
(*) Request issue time 832 indicates the time at which the blocked remote record acquisition request was issued.
(*) The number of requests 833 indicates the number of record acquisition requests included in the bricked remote record acquisition request.
(*) Record acquisition request 834 indicates the contents of the record acquisition request.
(*) The thread ID 831 indicates an ID for identifying the thread that issued the record acquisition request.
(*) The calculation node ID 835 indicates the ID (calculation node ID) of the calculation node that is the transmission destination of the record acquisition request.
(*) Record reference 836 indicates reference information to the record that is the target of the record acquisition request.
(*) The buffer address 837 indicates the address of an area (buffer) on the main memory 105 that stores the record that is the target of the record acquisition request.
(*) The completion flag 838 is a flag indicating whether or not a record corresponding to the record acquisition request has been acquired.
 なお、上記においては、本発明の特徴的な点に焦点を絞って、並列データ処理を行うジョブにおいて、レコード取得する手続きを説明したが、当該手続きには多様な実装形態が考えられる。 In the above description, the procedure for acquiring a record in a job for performing parallel data processing has been described focusing on the characteristic points of the present invention. However, various implementation forms are conceivable for the procedure.
 データセットからレコードを抽出するためには、データセット中でレコードがどのように配置されているかの情報が不可欠である。例えば、テキストファイルをデータセットとし、そのうちの1行をレコードとして取り扱う場合においては、レコードとレコードは改行コードによって区切られる。当該テキストファイルからレコードを取り出すためには、レコードが改行コードによって区切られているという情報が欠かせない。また、別の例としては、データセットがB木等の構造を有する場合、幾つかのレコードはストレージ上のアクセスの単位であるページの中に適当なデータ構造によって詰め込まれている場合がある。そのような構造からレコードを取り出すためには、当該構造(ページの長さ、ページのヘッダ・フッタ構造、ページ中におけるレコードのヘッダ・フッタ構造等)の情報が欠かせない。更には、データセットが圧縮や暗号化されている場合には、当該データセットからレコードを取得するためには復号のための手続き情報が欠かせない。このようにレコードを取得するためのデータセットの構成に関する情報は、書式等に同様に、ジョブ情報の一部としてアプリケーションによって規定されてもよい。もしくは、データセットの構成に関する情報は、その全てをアプリケーションが明示的に規定しなくてもよい。アプリケーションによって規定されていないデータセットの構成に関しては、システムモジュール等が所定の構成が規定されているものと見做して、ジョブを実行してもよい。この際、システムモジュール等は、データセットに関する情報やデータセットに基づいて、データセットの構成を判断してもよい。例えば、アプリケーションが明示的にデータセットの構成を規定していないものの、データセットがテキストファイルであると判断される場合には、レコードが改行コードによって区切られているものとしてジョブを実行してもよい。なお、この際に、アプリケーションが規定するデータセットの構成に関する情報は、システムモジュールを介して、データ読み書き器に通知されてもよい。 In order to extract records from a data set, information on how records are arranged in the data set is indispensable. For example, when a text file is used as a data set and one of the lines is handled as a record, the record and the record are separated by a line feed code. In order to extract a record from the text file, information that the record is delimited by a line feed code is indispensable. As another example, when a data set has a structure such as a B-tree, some records may be packed in an appropriate data structure in a page which is a unit of access on the storage. In order to extract a record from such a structure, information on the structure (page length, page header / footer structure, record header / footer structure in a page, etc.) is indispensable. Furthermore, when the data set is compressed or encrypted, the procedure information for decryption is indispensable for obtaining a record from the data set. Information regarding the configuration of the data set for acquiring records in this way may be defined by the application as part of the job information, similarly to the format and the like. Alternatively, the application does not have to explicitly specify all of the information related to the configuration of the data set. As for the configuration of the data set that is not defined by the application, the job may be executed assuming that the system module or the like has a predetermined configuration. At this time, the system module or the like may determine the configuration of the data set based on information about the data set or the data set. For example, if the application does not explicitly define the structure of the data set, but the data set is determined to be a text file, the job may be executed assuming that the records are separated by line feed codes. Good. At this time, information on the configuration of the data set defined by the application may be notified to the data reader / writer via the system module.
 システムモジュール等は、データセットからレコードを抽出する際に、データセットの一部のデータを主記憶等にキャッシュし、ストレージへのアクセスを減らすようにしてもよい。例えば、テキストファイルを走査してレコードを取得する場合、レコードの毎にストレージにアクセスするのではなく、一度に1メガバイト等の単位でテキストファイルからデータを読み込んで主記憶に格納し、そのデータの中からレコードを取り出すようにしてもよい。 When extracting a record from a data set, the system module or the like may cache a part of the data in the data set in the main memory to reduce access to the storage. For example, when acquiring a record by scanning a text file, instead of accessing the storage for each record, the data is read from the text file in units of 1 megabyte at a time and stored in the main memory. A record may be taken out from the inside.
 図8Aは、実施例1に係るノードレベルの資源制約管理表の構成を示す。 FIG. 8A shows a configuration of a node-level resource constraint management table according to the first embodiment.
 図8Aの上側のノードレベルの資源制約管理表900は、各計算ノード100を統括する統括スーパバイザプロセスにより管理される。 8A is managed by a supervisory supervisor process that supervises each computation node 100.
 ノードレベルの資源制約管理表900は、計算ノード毎の情報として、計算ノードID901、資源制約902を有する。資源制約902は、スレッド数903と、主記憶割当て904とを有する。各種情報は、下記の通りである。
(*)計算ノードID901は、計算ノードのIDを示す。
(*)資源制約902は、計算ノードID901に対応する計算ノードにおける資源の制約を示す。
(*)スレッド数903は、計算ノードID901に対応する計算ノードにおいて、生成可能な最大のスレッドの数を示す。
(*)主記憶割当て904は、計算ノードID901に対応する計算ノードにおいて、割当て可能な主記憶の最大の記憶量を示す。
The node level resource constraint management table 900 includes a computation node ID 901 and a resource constraint 902 as information for each computation node. The resource constraint 902 has a thread count 903 and a main memory allocation 904. Various information is as follows.
(*) The calculation node ID 901 indicates the ID of the calculation node.
(*) Resource constraint 902 indicates a resource constraint in the computation node corresponding to the computation node ID 901.
(*) The number of threads 903 indicates the maximum number of threads that can be generated in the calculation node corresponding to the calculation node ID 901.
(*) Main memory allocation 904 indicates the maximum amount of main memory that can be allocated in the calculation node corresponding to the calculation node ID 901.
 図8Aの下側のノードレベルの資源制約管理表910は、各計算ノード100におけるスーパバイザプロセスにより管理される。 The node-level resource constraint management table 910 on the lower side of FIG. 8A is managed by a supervisor process in each computation node 100.
 ノードレベルの資源制約管理表910は、自身の計算ノードの情報として、計算ノードID911、資源制約912、及び資源利用913を有する。資源制約912は、スレッド数914と、主記憶割当て915とを有する。資源利用913は、スレッド数916と、主記憶割当て917とを有する。各種情報は、下記の通りである。
(*)計算ノードID911は、自身の計算ノードのID(計算ノードID)を示す。
(*)資源制約912は、自身の計算ノードにおける資源の制約を示す。
(*)資源利用913は、自身の計算ノードにおいて利用している資源を示す。
(*)スレッド数914は、自身の計算ノードにおいて、生成可能な最大のスレッドの数を示す。
(*)主記憶割当て915は、自身の計算ノードにおいて、割当て可能な主記憶の最大の記憶量を示す。
(*)スレッド数916は、自身の計算ノードにおいて、実際に生成しているスレッドの数を示す。
(*)主記憶割当て917は、自身の計算ノードにおいて、実際に割当てている主記憶の記憶量を示す。
The node level resource constraint management table 910 includes a calculation node ID 911, a resource constraint 912, and a resource usage 913 as information of its own calculation node. The resource constraint 912 has a thread number 914 and a main memory allocation 915. The resource use 913 has a thread number 916 and a main memory allocation 917. Various information is as follows.
(*) The calculation node ID 911 indicates the ID (calculation node ID) of its own calculation node.
(*) Resource constraint 912 indicates a resource constraint in its own computation node.
(*) Resource use 913 indicates a resource used in its own computation node.
(*) The number of threads 914 indicates the maximum number of threads that can be generated in its own computation node.
(*) Main memory allocation 915 indicates the maximum amount of main memory that can be allocated in its own computation node.
(*) The number of threads 916 indicates the number of threads actually generated in its own computation node.
(*) Main memory allocation 917 indicates the storage amount of the main memory actually allocated in its own computation node.
 図8Bは、実施例1に係るジョブレベルの資源制約管理表の構成を示す。 FIG. 8B shows the configuration of a job level resource constraint management table according to the first embodiment.
 図8Bの上側のジョブレベルの資源制約管理表920は、統括スーパバイザプロセスにより管理される。 The resource level management table 920 at the upper level of FIG. 8B is managed by the overall supervisor process.
 ジョブレベルの資源制約管理表920は、ジョブ毎の情報として、ジョブID921、計算ノードID922、資源制約923を有する。資源制約923は、スレッド数924と、主記憶割当て925とを有する。各種情報は、下記の通りである。
(*)ジョブID921は、ジョブのID(ジョブID)を示す。
(*)計算ノードID922は、ジョブID921のジョブを実行する計算ノードのID(計算ノードID)を示す。
(*)資源制約923は、計算ノードID922の計算ノードにおけるジョブID921のジョブに対する資源の制約を示す。
(*)スレッド数924は、計算ノードID922の計算ノードにおけるジョブID921のジョブに対する生成可能な最大のスレッドの数を示す。
(*)主記憶割当て925は、計算ノードID922の計算ノードにおけるジョブID921のジョブに対する割当て可能な主記憶の最大の記憶量を示す。
The job level resource constraint management table 920 includes a job ID 921, a calculation node ID 922, and a resource constraint 923 as information for each job. The resource constraint 923 has a thread number 924 and a main memory allocation 925. Various information is as follows.
(*) The job ID 921 indicates a job ID (job ID).
(*) The calculation node ID 922 indicates the ID (calculation node ID) of the calculation node that executes the job with the job ID 921.
(*) Resource constraint 923 indicates a resource constraint for the job with job ID 921 in the computation node with computation node ID 922.
(*) The thread number 924 indicates the maximum number of threads that can be generated for the job with the job ID 921 in the calculation node with the calculation node ID 922.
(*) Main memory allocation 925 indicates the maximum amount of main memory that can be allocated to the job with job ID 921 in the calculation node with calculation node ID 922.
 図8Bの下側のノードレベルの資源制約管理表930は、各計算ノード100におけるスーパバイザプロセスにより管理される。 The node-level resource constraint management table 930 on the lower side of FIG. 8B is managed by a supervisor process in each computation node 100.
 ノードレベルの資源制約管理表930は、自身の計算ノードにおける各ジョブに対する情報として、ジョブID931、計算ノードID932、資源制約933、及び資源利用934を有する。資源制約933は、スレッド数935と、主記憶割当て936とを有する。資源利用934は、スレッド数937と、主記憶割当て938とを有する。各種情報は、下記の通りである。
(*)ジョブID931は、ジョブのID(ジョブID)を示す。
(*)計算ノードID932は、自身の計算ノードのID(計算ノードID)を示す。
(*)資源制約933は、自身の計算ノード100におけるジョブID931のジョブに対する資源の制約を示す。
(*)資源利用934は、自身の計算ノード100においてジョブID931のジョブに対して利用している資源を示す。
(*)スレッド数935は、自身の計算ノード100におけるジョブID931のジョブに対する、生成可能な最大のスレッドの数を示す。
(*)主記憶割当て936は、自身の計算ノード100におけるジョブID931のジョブに対する、割当て可能な主記憶の最大の記憶量を示す。
(*)スレッド数937は、自身の計算ノード100においてジョブID931のジョブに対して、実際に生成しているスレッドの数を示す。
(*)主記憶割当て938は、自身の計算ノード100においてジョブID931のジョブに対して、実際に割当てている主記憶の記憶量を示す。
The node level resource constraint management table 930 includes a job ID 931, a calculation node ID 932, a resource constraint 933, and a resource usage 934 as information for each job in its own computation node. The resource constraint 933 has a thread number 935 and a main memory allocation 936. The resource use 934 has a thread number 937 and a main memory allocation 938. Various information is as follows.
(*) Job ID 931 indicates a job ID (job ID).
(*) The calculation node ID 932 indicates an ID (calculation node ID) of its own calculation node.
(*) Resource constraint 933 indicates a resource constraint for the job with job ID 931 in its own computation node 100.
(*) Resource use 934 indicates the resource used for the job with the job ID 931 in its own computation node 100.
(*) The number of threads 935 indicates the maximum number of threads that can be generated for the job with the job ID 931 in its own computation node 100.
(*) Main memory allocation 936 indicates the maximum amount of main memory that can be allocated to the job with the job ID 931 in its own computation node 100.
(*) The number of threads 937 indicates the number of threads actually generated for the job with the job ID 931 in its own computation node 100.
(*) The main memory allocation 938 indicates the storage amount of the main memory actually allocated to the job with the job ID 931 in its own computation node 100.
 図8Cは、実施例1に係る統括するスーパバイザプロセスにおけるプロセスレベルの資源制約管理表の構成を示す。 FIG. 8C shows a configuration of a process level resource constraint management table in the supervisor process according to the first embodiment.
 プロセスレベルの資源制約管理表940は、統括スーパバイザプロセスにより管理される。 The process level resource constraint management table 940 is managed by the supervisory supervisor process.
 プロセスレベルの資源制約管理表940は、プロセス毎の情報として、プロセスID941、ジョブID942、計算ノードID943、資源制約944を有する。資源制約944は、スレッド数945と、主記憶割当て946とを有する。各種情報は、下記の通りである。
(*)プロセスID941は、プロセスのID(プロセスID)を示す。
(*)ジョブID942は、ジョブIDを示す。
(*)計算ノードID943は、ジョブID921のジョブのプロセスID941のプロセスを実行する計算ノードのID(計算ノードID)を示す。
(*)資源制約944は、計算ノードID943の計算ノードにおけるジョブID942のジョブのプロセスID941のプロセスに対する資源の制約を示す。
(*)スレッド数945は、計算ノードID943の計算ノードにおけるジョブID942のジョブのプロセスID941のプロセスに対する生成可能な最大のスレッドの数を示す。
(*)主記憶割当て946は、計算ノードID943の計算ノードにおけるジョブID942のジョブのプロセスID941のプロセスに対する割当て可能な主記憶の最大の記憶量を示す。
The process level resource constraint management table 940 includes a process ID 941, a job ID 942, a calculation node ID 943, and a resource constraint 944 as information for each process. The resource constraint 944 has a thread number 945 and a main memory allocation 946. Various information is as follows.
(*) Process ID 941 indicates a process ID (process ID).
(*) Job ID 942 indicates a job ID.
(*) The calculation node ID 943 indicates the ID (calculation node ID) of the calculation node that executes the process with the process ID 941 of the job with the job ID 921.
(*) Resource constraint 944 indicates a resource constraint for the process with the process ID 941 of the job with the job ID 942 in the computation node with the computation node ID 943.
(*) The number of threads 945 indicates the maximum number of threads that can be generated for the process with the process ID 941 of the job with the job ID 942 in the calculation node with the calculation node ID 943.
(*) Main memory allocation 946 indicates the maximum storage amount of main memory that can be allocated to the process with the process ID 941 of the job with the job ID 942 in the calculation node with the calculation node ID 943.
 図8Dは、実施例1に係る各ノードのスーパバイザプロセスにおけるプロセスレベルの資源制約管理表の構成を示す。 FIG. 8D shows a configuration of a process level resource constraint management table in the supervisor process of each node according to the first embodiment.
 プロセスレベルの資源制約管理表950は、各計算ノード100におけるスーパバイザプロセスにより管理される。 The process level resource constraint management table 950 is managed by a supervisor process in each computation node 100.
 プロセスレベルの資源制約管理表950は、自身の計算ノードにおける各ジョブにおける各プロセスに対する情報として、プロセスID951、ジョブID952、計算ノードID953、資源制約954、及び資源利用955を有する。資源制約954は、スレッド数956と、主記憶割当て957とを有する。資源利用955は、スレッド数958と、主記憶割当て959とを有する。各種情報は、下記の通りである。
(*)プロセスID951は、プロセスのIDを示す。
(*)ジョブID952は、ジョブのIDを示す。
(*)計算ノードID953は、自身の計算ノード100のID(計算ノードID)を示す。
(*)資源制約954は、自身の計算ノード100におけるジョブID952のジョブのプロセスID951のプロセスに対する資源の制約を示す。
(*)資源利用955は、自身の計算ノード100においてジョブID952のジョブのプロセスID951のプロセスに対して利用している資源を示す。
(*)スレッド数956は、自身の計算ノード100におけるジョブID952のジョブのプロセスID951のプロセスに対する、生成可能な最大のスレッドの数を示す。
(*)主記憶割当て957は、自身の計算ノード100におけるジョブID952のジョブのプロセスID951のプロセスに対する、割当て可能な主記憶の最大の記憶量を示す。
(*)スレッド数958は、自身の計算ノード100においてジョブID952のジョブのプロセスID951のプロセスに対して、実際に生成しているスレッドの数を示す。
(*)主記憶割当て959は、自身の計算ノード100においてジョブID952のジョブのプロセスID951のプロセスに対して、実際に割当てている主記憶の記憶量を示す。
The process level resource constraint management table 950 includes a process ID 951, a job ID 952, a computation node ID 953, a resource constraint 954, and a resource usage 955 as information for each process in each job in its own computation node. The resource constraint 954 has a thread count 956 and a main memory allocation 957. The resource use 955 has a thread count 958 and a main memory allocation 959. Various information is as follows.
(*) Process ID 951 indicates the ID of the process.
(*) Job ID 952 indicates a job ID.
(*) The calculation node ID 953 indicates the ID (calculation node ID) of its own calculation node 100.
(*) Resource constraint 954 indicates a resource constraint for the process with the process ID 951 of the job with the job ID 952 in its own computation node 100.
(*) Resource use 955 indicates the resource used for the process with the process ID 951 of the job with the job ID 952 in its own computation node 100.
(*) The number of threads 956 indicates the maximum number of threads that can be generated for the process with the process ID 951 of the job with the job ID 952 in its own computation node 100.
(*) Main memory allocation 957 indicates the maximum amount of main memory that can be allocated to the process with the process ID 951 of the job with the job ID 952 in its own computation node 100.
(*) The number of threads 958 indicates the number of threads actually generated for the process with the process ID 951 of the job with the job ID 952 in its own computation node 100.
(*) Main memory allocation 959 indicates the storage amount of the main memory actually allocated to the process with the process ID 951 of the job with the job ID 952 in its own computation node 100.
 図8Eは、実施例1に係る統括スーパバイザプロセスにおけるタスクレベルの資源制約管理表の構成を示す。 FIG. 8E shows the configuration of a task level resource constraint management table in the overall supervisor process according to the first embodiment.
 タスクレベルの資源制約管理表960は、統括スーパバイザプロセスにより管理される。 The task level resource constraint management table 960 is managed by the supervisory supervisor process.
 タスクレベルの資源制約管理表960は、タスク毎の情報として、タスクID961、プロセスID962、ジョブID963、計算ノードID964、資源制約965を有する。資源制約944は、スレッド数945と、主記憶割当て946とを有する。各種情報は、下記の通りである。
(*)タスクID961は、タスクのID(プロセスID)を示す。
(*)プロセスID962は、プロセスのID(プロセスID)を示す。
(*)ジョブID963は、ジョブIDを示す。
(*)計算ノードID964は、ジョブID963のジョブのプロセスID962のプロセスのタスクID961のタスクを実行する計算ノードのID(計算ノードID)を示す。
(*)資源制約965は、計算ノードID964の計算ノードにおけるジョブID963のジョブのプロセスID962のプロセスのタスクID961のタスクに対する資源の制約を示す。
(*)スレッド数966は、計算ノードID964の計算ノードにおけるジョブID963のジョブのプロセスID962のプロセスのタスクID961のタスクに対する生成可能な最大のスレッドの数を示す。
(*)主記憶割当て967は、計算ノードID964の計算ノードにおけるジョブID963のジョブのプロセスID962のプロセスのタスクID961のタスクに対する割当て可能な主記憶の最大の記憶量を示す。
The task level resource constraint management table 960 includes a task ID 961, a process ID 962, a job ID 963, a calculation node ID 964, and a resource constraint 965 as information for each task. The resource constraint 944 has a thread number 945 and a main memory allocation 946. Various information is as follows.
(*) Task ID 961 indicates a task ID (process ID).
(*) Process ID 962 indicates a process ID (process ID).
(*) Job ID 963 indicates a job ID.
(*) The calculation node ID 964 indicates the ID (calculation node ID) of the calculation node that executes the task with the task ID 961 of the process with the process ID 962 of the job with the job ID 963.
(*) Resource constraint 965 indicates a resource constraint for the task with the task ID 961 of the process with the process ID 962 of the job with the job ID 963 in the computation node with the computation node ID 964.
(*) The number of threads 966 indicates the maximum number of threads that can be generated for the task with the task ID 961 of the process with the process ID 962 of the job with the job ID 963 in the calculation node with the calculation node ID 964.
(*) Main memory allocation 967 indicates the maximum storage amount of main memory that can be allocated to the task with task ID 961 of the process with process ID 962 of job ID 963 in the calculation node with calculation node ID 964.
 図8Fは、実施例1に係る各ノードのスーパバイザプロセスにおけるタスクレベルの資源制約管理表の構成を示す。 FIG. 8F illustrates a configuration of a task level resource constraint management table in the supervisor process of each node according to the first embodiment.
 タスクレベルの資源制約管理表970は、各計算ノード100におけるスーパバイザプロセスにより管理される。 The task level resource constraint management table 970 is managed by a supervisor process in each computation node 100.
 タスクレベルの資源制約管理表970は、自身の計算ノードにおける各ジョブにおける各プロセスの各タスクに対する情報として、タスクID971、プロセスID972、ジョブID973、計算ノードID974、資源制約975、及び資源利用976を有する。資源制約975は、スレッド数977と、主記憶割当て978とを有する。資源利用976は、スレッド数979と、主記憶割当て980とを有する。各種情報は、下記の通りである。
(*)タスクID971は、タスクのIDを示す。
(*)プロセスID972は、プロセスのIDを示す。
(*)ジョブID973は、ジョブのIDを示す。
(*)計算ノードID974は、自身の計算ノード100のID(計算ノードID)を示す。
(*)資源制約975は、自身の計算ノード100におけるジョブID973のジョブのプロセスID972のプロセスのタスクID971のタスクに対する資源の制約を示す。
(*)資源利用976は、自身の計算ノード100においてジョブID973のジョブのプロセスID972のプロセスのタスクID971のタスクに対して利用している資源を示す。
(*)スレッド数977は、自身の計算ノード100におけるジョブID973のジョブのプロセスID972のプロセスのタスクID971のタスクに対する、生成可能な最大のスレッドの数を示す。
(*)主記憶割当て978は、自身の計算ノード100におけるジョブID973のジョブのプロセスID972のプロセスのタスクID971のタスクに対する、割当て可能な主記憶の最大の記憶量を示す。
(*)スレッド数979は、自身の計算ノード100においてジョブID973のジョブのプロセスID972のプロセスのタスクID971のタスクに対して、実際に生成しているスレッドの数を示す。
(*)主記憶割当て980は、自身の計算ノード100においてジョブID973のジョブのプロセスID972のプロセスのタスクID971のタスクに対して、実際に割当てている主記憶の記憶量を示す。
The task level resource constraint management table 970 includes a task ID 971, a process ID 972, a job ID 973, a calculation node ID 974, a resource constraint 975, and a resource usage 976 as information on each task of each process in each job in its own computation node. . The resource constraint 975 has a thread number 977 and a main memory allocation 978. The resource use 976 has a thread number 979 and a main memory allocation 980. Various information is as follows.
(*) Task ID 971 indicates the ID of the task.
(*) Process ID 972 indicates the ID of the process.
(*) Job ID 973 indicates a job ID.
(*) The calculation node ID 974 indicates the ID (calculation node ID) of its own calculation node 100.
(*) The resource constraint 975 indicates a resource constraint for the task with the task ID 971 of the process with the process ID 972 of the job with the job ID 973 in its own computation node 100.
(*) Resource use 976 indicates a resource that is used for the task with the task ID 971 of the process with the process ID 972 of the job with the job ID 973 in its own computation node 100.
(*) The number of threads 977 indicates the maximum number of threads that can be generated for the task with the task ID 971 of the process with the process ID 972 of the job with the job ID 973 in its own computation node 100.
(*) Main memory allocation 978 indicates the maximum amount of main memory that can be allocated to the task of task ID 971 of the process ID 972 of the job of job ID 973 in its own computation node 100.
(*) The number of threads 979 indicates the number of threads actually generated for the task with the task ID 971 of the process with the process ID 972 of the job with the job ID 973 in the own computation node 100.
(*) Main memory allocation 980 indicates the storage amount of main memory that is actually allocated to the task of task ID 971 of the process ID 972 of the job of job ID 973 in its own computation node 100.
 図8Gは、実施例1に係る統括資源制約管理処理の流れを示す。 FIG. 8G shows the flow of the integrated resource constraint management process according to the first embodiment.
 S81で、各計算ノード100のスーパバイザプロセスを統括する計算ノード100における統括スーパバイザプロセスは、新たにタスクを割り当てる際に、当該新たなタスクに対する資源制約を計算する。なお、ユーザが指定した資源制約としてもよいし、ユーザが指定したポリシーに基づいて資源制約を計算(例えば、比例配分)してもよい。 In S81, when the supervisory process in the computing node 100 that supervises the supervisor process of each computing node 100 assigns a new task, it calculates resource constraints for the new task. The resource constraint specified by the user may be used, or the resource constraint may be calculated (for example, proportionally distributed) based on the policy specified by the user.
 S82で、統括スーパバイザプロセスは、図8Eに示すようなタスクレベルの資源制約管理表960に、新たなタスクに対するレコードを追加し、当該レコードの資源制約に対して計算した資源制約を格納する。また、統括スーパバイザプロセスは、資源制約の範囲でタスクを実行可能な計算ノード100を選択し、当該計算ノード100に対して、計算ノードに関わる資源制約を送信する。 In S82, the supervisory supervisor process adds a record for the new task to the task level resource constraint management table 960 as shown in FIG. 8E, and stores the resource constraint calculated for the resource constraint of the record. In addition, the supervisory supervisor process selects a computation node 100 that can execute a task within the scope of the resource constraint, and transmits the resource constraint related to the computation node to the computation node 100.
 S83で、統括スーパバイザプロセスは、選択した計算ノード100に対して、タスクを割り当てて、処理を終了する。 In S83, the supervisory supervisor process assigns a task to the selected computation node 100 and ends the process.
 S84で、タスクを割当てられた計算ノード100のスーパバイザプロセスは、ステップS82で送信された資源制約を受信し、当該資源制約を図8Fに示すようなタスクレベルの資源制約管理表970に登録する。 In S84, the supervisor process of the computing node 100 to which the task is assigned receives the resource constraint transmitted in Step S82, and registers the resource constraint in the task level resource constraint management table 970 as shown in FIG. 8F.
 S85で、タスクを割当てられた計算ノード100のシステムモジュール120は、割り当てられたタスクを実行する。 In S85, the system module 120 of the compute node 100 to which the task is assigned executes the assigned task.
 図8Hは、実施例1に係る各計算ノードにおける資源制約管理処理の流れを示す。 FIG. 8H illustrates a flow of resource constraint management processing in each computation node according to the first embodiment.
 資源制約管理処理は、例えば、システムモジュール120がタスクを実行することにより、実現される。図8Hの左上の処理(ステップS90~S94)は、タスクにおいて、スレッドを生成しようとする際に実行される処理である。これは、例えば、図4AのS13、図4BのS24、S31において実行される処理である。 The resource constraint management process is realized, for example, when the system module 120 executes a task. The process at the upper left of FIG. 8H (steps S90 to S94) is a process executed when attempting to generate a thread in a task. This is, for example, processing executed in S13 of FIG. 4A and S24 and S31 of FIG. 4B.
 S90で、システムジュール120(具体的には、マップ関数121)は、スレッドを生成するのに十分な資源があるか否かを判断する。ここで、スレッドを生成するのに十分な資源があるか否かについては、タスクレベルの資源制約管理表970、プロセスレベルの資源制約管理表950、ジョブレベルの資源制約管理表930、及びノードレベルの資源制約管理表910のそれぞれを参照し、各レベルにおいて資源制約の範囲内で利用可能な資源が、スレッドを生成するのに十分な資源以上であるか否かにより判断することができる。 In S90, the system module 120 (specifically, the map function 121) determines whether there are sufficient resources to generate a thread. Here, as to whether or not there are sufficient resources to generate a thread, a task level resource constraint management table 970, a process level resource constraint management table 950, a job level resource constraint management table 930, and a node level Each resource constraint management table 910 can be referred to, and it can be determined whether or not the resources available within the resource constraint range at each level are more than the resources sufficient to generate threads.
 そして、この判断の結果が肯定的であれば、S91を行う一方、この判断の結果が否定的であれば、S93を行う。 If the result of this determination is affirmative, S91 is performed. If the result of this determination is negative, S93 is performed.
 S91で、システムモジュール120は、スレッドマネージャ133によりスレッドを生成させて、当該スレッドに資源を割当てさせ、割当結果を各資源制約管理表(910、930、950、及び970)の資源利用に反映させる。 In S91, the system module 120 causes the thread manager 133 to generate a thread, allocates the resource to the thread, and reflects the allocation result in the resource usage of each resource constraint management table (910, 930, 950, and 970). .
 S92で、システムモジュール120は、スレッドの実行を開始し、資源制約管理処理を終了する。 In S92, the system module 120 starts executing the thread and ends the resource constraint management process.
 S93で、システムモジュール120は、スレッドを生成するために参照するスレッド生成情報をスレッド生成保留管理表990に退避する。 In S93, the system module 120 saves the thread generation information to be referenced for generating a thread in the thread generation suspension management table 990.
 S94で、システムモジュール120は、自スレッドをスレッドの生成を保留している保留状態として処理を終了する。 In S94, the system module 120 sets the own thread as a suspended state where the generation of the thread is suspended, and ends the process.
 スレッド生成保留管理表990は、スレッドの生成を保留しているスレッドの情報として、タスクID991、親スレッドID992、子スレッドID993、時刻994、及びスレッド生成情報995を有する。各種情報は、下記の通りである。
(*)タスクID991は、タスクのIDを示す。
(*)親スレッドID992は、他のスレッドを生成する親となるスレッド(親スレッド)のIDを示す。
(*)子スレッドID993は、スレッドから生成される子となるスレッド(子スレッド)のIDを示す。
(*)時刻994は、スレッドの生成を保留した時刻を示す。
(*)スレッド生成情報995は、スレッドを生成する際に必要な情報(例えば、子スレッドで参照するレコードを示す参照を含む情報)である。
The thread generation suspension management table 990 includes a task ID 991, a parent thread ID 992, a child thread ID 993, a time 994, and thread generation information 995 as information on threads that are suspended from thread generation. Various information is as follows.
(*) Task ID 991 indicates the ID of the task.
(*) The parent thread ID 992 indicates the ID of a parent thread (parent thread) that generates another thread.
(*) Child thread ID 993 indicates the ID of a thread (child thread) that is a child generated from the thread.
(*) Time 994 indicates the time when the generation of the thread is suspended.
(*) The thread generation information 995 is information necessary for generating a thread (for example, information including a reference indicating a record referred to by a child thread).
 図8Hの右上の処理(ステップS95~S96)は、スレッドにより実行する処理が終了した際に、スレッドを停止させる処理である。 The process in the upper right of FIG. 8H (steps S95 to S96) is a process for stopping the thread when the process executed by the thread is completed.
 S95で、システムモジュール120は、実行している自スレッドを停止する。 In S95, the system module 120 stops the executing thread.
 S96で、システムモジュール120は、自スレッドに割り当てられている資源を解放する。すなわち、システムモジュール120は、資源制約管理表910等の資源利用で管理されている資源量(スレッド数、主記憶割当て量)から、自スレッドに割当てられていた資源の量を削除する。これにより、自スレッドに割り当てられていた資源を、他のスレッドに割当てることができるようになる。 In S96, the system module 120 releases resources allocated to its own thread. That is, the system module 120 deletes the amount of resources allocated to its own thread from the resource amounts (number of threads, main memory allocation amount) managed by resource usage such as the resource constraint management table 910. As a result, the resources allocated to the own thread can be allocated to other threads.
 図8Hの右下の処理(ステップS97~S99)は、例えば、資源制約管理表910に基づいて、スレッドを生成するのに十分な資源があることを判定した場合に実行される処理である。この手続きは、例えば、S96によって資源が解放されたことに伴い、割り込みやシグナルなどの手段により、駆動されてもよい。 The processing at the lower right of FIG. 8H (steps S97 to S99) is processing that is executed when it is determined, for example, that there are sufficient resources to generate a thread based on the resource constraint management table 910. This procedure may be driven, for example, by means such as an interrupt or a signal when resources are released in S96.
 S97で、システムモジュール120は、スレッド生成保留管理表990に管理されているスレッド生成情報を選択する。選択するスレッド生成情報としては、例えば、最古に保留されたスレッド生成情報であってもよい。 In S97, the system module 120 selects the thread generation information managed in the thread generation suspension management table 990. The thread generation information to be selected may be, for example, the oldest thread generation information reserved.
 S98で、システムモジュール120は、選択したスレッド生成情報によりスレッドを生成する親スレッドを再開する。 In S98, the system module 120 resumes the parent thread that generates a thread based on the selected thread generation information.
 S99で、システムモジュール120は、スレッド生成情報に基づいて、子スレッドの生成を再び実行する。この処理により、スレッドを生成するのに十分な資源がある場合に、生成を保留していたスレッドを生成することができる。 In S99, the system module 120 executes child thread generation again based on the thread generation information. With this process, when there are sufficient resources to generate a thread, a thread that has been suspended can be generated.
 図9Aは、実施例1に係るタスクの第1の例を示す。 FIG. 9A shows a first example of tasks according to the first embodiment.
 図9Aは、マップ・リデュースジョブ#1(図1Aのジョブ実行プランに対応)のマッププロセス#111のマップタスク#1111を示している。ここで、入力データセット#1の#1001のレコードには、入力データセット#2の#2001~#2010までの10個のレコードに対する参照が含まれているものとする。また、マップタスク#1111は、入力データセット#1の#1001のレコードを取得し、入力データセット#2のレコードを取得するものとする。 FIG. 9A shows map task # 1111 of map process # 111 of map reduce job # 1 (corresponding to the job execution plan of FIG. 1A). Here, it is assumed that the record of # 1001 of the input data set # 1 includes references to 10 records # 2001 to # 2010 of the input data set # 2. Also, map task # 1111 acquires the record of # 1001 of input data set # 1, and acquires the record of input data set # 2.
 計算ノード100が、マップタスク#1111を実行すると、入力データセット#1の#1001のレコードを参照し、当該レコードが所定の条件を満たしているとすると、当該レコードに含まれている参照を用いて、入力データセット#2の#2001~#2010のレコードを取得する。 When the calculation node 100 executes the map task # 1111, the record of # 1001 of the input data set # 1 is referred to. If the record satisfies a predetermined condition, the reference included in the record is used. Thus, records # 2001 to # 2010 of the input data set # 2 are acquired.
 図9Bは、第1の例に示すタスクにおけるスレッドの生成の一例を示す。図9Bは、図9Aに示すタスク#1111を実行する際において、図8Hに示す資源制約管理処理を行わない場合におけるスレッドの生成を示している。なお、図9Bの表記は、次のルールに従う。
(*)横軸は、時刻を表す。
(*)図中の横に長い角丸四角形は、1つのスレッドによる一連の処理を意味する。角丸四角形の左端はスレッドによる処理を開始する時刻を表し、角丸四角形の右端は当該スレッドによる処理を終了する時刻を表す。
(*)角丸四角形の内部の値は、スレッドに対応した処理に伴って読み込まれるレコードを示す情報(例えば、レコードID)を表す。
(*)レコードを取得するスレッドについての同時に実行可能なスレッド数は、「8」とする。
FIG. 9B shows an example of thread generation in the task shown in the first example. FIG. 9B illustrates thread generation when the task # 1111 illustrated in FIG. 9A is not performed when the resource constraint management process illustrated in FIG. 8H is not performed. Note that the notation in FIG. 9B follows the following rules.
(*) The horizontal axis represents time.
(*) A round rectangle with a long side in the figure means a series of processing by one thread. The left end of the rounded rectangle represents the time at which the processing by the thread is started, and the right end of the rounded rectangle represents the time at which the processing by the thread ends.
The value inside the (*) rounded rectangle represents information (for example, record ID) indicating a record that is read along with the processing corresponding to the thread.
(*) The number of threads that can be executed simultaneously for the thread that acquires the record is “8”.
 図8Hに示す資源制約管理処理を行わない場合においては、入力データセット#1の#1001のレコードを取得して処理を行うスレッド10aが実行されると、スレッド10aにより、#1001のレコードが取得され、当該#1001のレコードに含まれている参照に基づいて、入力データセット#2の#2001のレコードを取得して処理を行うスレッド10bが生成されて実行され、入力データセット#2の#2002のレコードを取得して処理を行うスレッド10cが生成されて実行され、同様にして、スレッド10d、スレッド10e、スレッド10f、スレッド10g、スレッド10hが生成されて実行される。この時点においては、同時に実行可能なスレッド数である「8」と同数のスレッドが実行されることとなる。 When the resource constraint management process shown in FIG. 8H is not performed, when the thread 10a that executes the process by acquiring the record of # 1001 of the input data set # 1 is executed, the record of # 1001 is acquired by the thread 10a. Then, based on the reference included in the record of # 1001, the thread 10b that acquires and processes the record of # 2001 of the input data set # 2 is generated and executed, and # of the input data set # 2 A thread 10c that acquires and records a record 2002 is generated and executed. Similarly, a thread 10d, a thread 10e, a thread 10f, a thread 10g, and a thread 10h are generated and executed. At this time, the same number of threads as “8”, which is the number of threads that can be executed simultaneously, are executed.
 この後、更に、スレッド10aにより、入力データセット#2の#2008のレコードを取得して処理を行うスレッド10i、入力データセット#2の#2009のレコードを取得して処理を行うスレッド10j、及び入力データセット#2の#2010のレコードを取得して処理を行うスレッド10kが生成されて実行されることとなる。利用可能な量の主記憶を超えて主記憶の割り当てが行われ、スラッシングが発生してしまい、結果としてこれらスレッドに対する実行時間が長時間となってしまう。 Thereafter, the thread 10a further acquires and processes the # 2008 record of the input data set # 2 and performs processing, the thread 10j that acquires and processes the record of # 2009 of the input data set # 2, and A thread 10k that acquires and processes a record of # 2010 of the input data set # 2 is generated and executed. The main memory is allocated beyond the available amount of main memory, and thrashing occurs, resulting in a long execution time for these threads.
 図9Cは、実施例1に係る第1の例に示すタスクにおけるスレッドの生成の一例を示す。図9Cは、図9Aに示すタスク#1111を実行する際において、図8Hに示す資源制約管理処理を行う場合におけるスレッドの生成を示している。なお、図9Cの表記は、図9Bのルールと同様である。 FIG. 9C illustrates an example of thread generation in the task illustrated in the first example according to the first embodiment. FIG. 9C shows thread generation when the resource constraint management process shown in FIG. 8H is performed when the task # 1111 shown in FIG. 9A is executed. The notation in FIG. 9C is the same as the rule in FIG. 9B.
 計算ノード100において、入力データセット#1の#1001のレコードを取得して処理を行うスレッド10aが実行されると、スレッド10aにより、#1001のレコードが取得され、当該#1001のレコードに含まれている参照に基づいて、入力データセット#2の#2001のレコードを取得して処理を行うスレッド10bが生成されて実行され、入力データセット#2の#2002のレコードを取得して処理を行うスレッド10cが生成されて実行され、同様にして、スレッド10d、スレッド10e、スレッド10f、スレッド10g、スレッド10hが生成されて実行される。この時点においては、同時に実行可能なスレッド数である「8」と同数のスレッドが実行されることとなる。 When the thread 10a that executes processing by acquiring the record # 1001 of the input data set # 1 is executed in the computation node 100, the thread # 10a acquires the record # 1001 and includes it in the record # 1001. The thread 10b that acquires and processes the record of # 2001 of the input data set # 2 is generated and executed based on the received reference, and acquires and processes the record of # 2002 of the input data set # 2. A thread 10c is generated and executed. Similarly, a thread 10d, a thread 10e, a thread 10f, a thread 10g, and a thread 10h are generated and executed. At this time, the same number of threads as “8”, which is the number of threads that can be executed simultaneously, are executed.
 この後、資源制約管理処理のステップS90で十分な資源がないと判定されるので、スレッド10aは、新たなスレッドを生成することなく、自スレッドが保留状態となる。そして、スレッド10bの実行が終了した場合には、新たに1つのスレッドが実行可能となるので、ステップS98でスレッド10aの実行が再開されて、ステップS99で入力データセット#2の#2008のレコードを取得して処理を行うスレッド10iが生成される。同様にして、スレッド10cの実行が終了した場合には、スレッド10aの実行が再開されて、入力データセット#2の#2009のレコードを取得して処理を行うスレッド10jが生成されて実行され、スレッド10dの実行が終了した場合には、スレッド10aの実行が再開されて、入力データセット#2の#2010のレコードを取得して処理を行うスレッド10kが生成されて実行される。 Thereafter, since it is determined in step S90 of the resource constraint management process that there are not enough resources, the thread 10a is put on hold without generating a new thread. When the execution of the thread 10b is completed, one new thread can be executed. Therefore, the execution of the thread 10a is resumed in step S98, and the record of # 2008 of the input data set # 2 is detected in step S99. A thread 10i is generated that performs processing by acquiring. Similarly, when the execution of the thread 10c is finished, the execution of the thread 10a is resumed, and the thread 10j that acquires and processes the record of # 2009 of the input data set # 2 is generated and executed. When the execution of the thread 10d is completed, the execution of the thread 10a is resumed, and the thread 10k that acquires and processes the record of # 2010 of the input data set # 2 is generated and executed.
 この結果、複数のスレッドの実行時に、利用可能な主記憶の量の範囲内で主記憶を割り当てることが可能となり、スラッシングが発生することを防止でき、タスク全体の実行時間を、図9Bに示す場合と比較して、短縮することができる。 As a result, when executing a plurality of threads, it becomes possible to allocate main memory within the range of the amount of main memory that can be used, so that thrashing can be prevented, and the execution time of the entire task is shown in FIG. 9B. Compared to the case, it can be shortened.
 次に、複数のタスクが並行して実行される場合におけるスレッドの生成について説明する。 Next, the generation of threads when multiple tasks are executed in parallel will be described.
 図9Dは、実施例2に係るタスクの第2の例を示す。 FIG. 9D shows a second example of tasks according to the second embodiment.
 図9Dは、マップ・リデュースジョブ#1のマッププロセス#111のマップタスク#1111と、マップ・リデュースジョブ#2のマッププロセス#211のマップタスク#2111とを示している。マップタスク#1111と、マップタスク#2111とは、並行して実行されるものとする。 FIG. 9D shows the map task # 1111 of the map process # 111 of the map reduce job # 1 and the map task # 2111 of the map process # 211 of the map reduce job # 2. It is assumed that map task # 1111 and map task # 2111 are executed in parallel.
 入力データセット#1の#1001のレコードには、入力データセット#2の#2001~#2010までの10個のレコードに対する参照が含まれているものとする。また、マップタスク#1111は、入力データセット#1の#1001のレコードを取得し、このレコードに対応する入力データセット#2のデータを取得するものとする。 Suppose that the record of # 1001 of the input data set # 1 includes references to 10 records from # 2001 to # 2010 of the input data set # 2. The map task # 1111 acquires the record of # 1001 of the input data set # 1, and acquires the data of the input data set # 2 corresponding to this record.
 システムモジュール120は、マップタスク#1111を実行すると、入力データセット#1の#1001のレコードを参照し、当該レコードが所定の条件を満たしているとすると、当該レコードに含まれている参照を用いて、入力データセット#2の#2001~#2010のレコードを取得する。 When executing the map task # 1111, the system module 120 refers to the record of # 1001 of the input data set # 1, and if the record satisfies a predetermined condition, the system module 120 uses the reference included in the record. Thus, records # 2001 to # 2010 of the input data set # 2 are acquired.
 また、入力データセット#5の#5001のレコードには、入力データセット#6の#6001~#6010までの10個のレコードに対する参照が含まれているものとする。また、マップタスク#2111は、入力データセット#5の#5001のレコードを取得し、このレコードに対応する入力データセット#6のレコードを取得するものとする。 Also, it is assumed that the record of # 5001 of the input data set # 5 includes references to 10 records from # 6001 to # 6010 of the input data set # 6. Also, map task # 2111 acquires a record of # 5001 of input data set # 5, and acquires a record of input data set # 6 corresponding to this record.
 システムモジュール120は、マップタスク#2111を実行すると、入力データセット#5の#5001のレコードを参照し、当該レコードが所定の条件を満たしているとすると、当該レコードに含まれている参照を用いて、入力データセット#6の#6001~#6010のレコードを取得する。 When executing the map task # 2111, the system module 120 refers to the record of # 5001 of the input data set # 5. If the record satisfies a predetermined condition, the system module 120 uses the reference included in the record. Thus, records # 6001 to # 6010 of the input data set # 6 are acquired.
 図9Eは、実施例1に係る第2の例に示すタスクにおけるスレッドの生成の一例を示す。図9Eは、図9Dに示すタスク#1111と、タスク#2111とを並行して実行する際において、図8Hに示す資源制約管理処理を行う場合におけるスレッドの生成を示している。ここで、タスク#1111で利用可能な主記憶の領域は、5スレッド分であり、タスク#2111で利用可能な主記憶の領域は、3スレッド分であるとする。なお、図9Eの表記は、図9Bのルールと同様である。 FIG. 9E illustrates an example of thread generation in the task illustrated in the second example according to the first embodiment. FIG. 9E shows thread generation when the resource constraint management process shown in FIG. 8H is performed when task # 1111 and task # 2111 shown in FIG. 9D are executed in parallel. Here, it is assumed that the main memory area available for task # 1111 is for five threads, and the main memory area available for task # 2111 is for three threads. Note that the notation in FIG. 9E is the same as the rule in FIG. 9B.
 計算ノード100において、入力データセット#1の#1001のレコードを取得して処理を行うスレッド11aが実行されると、スレッド11aにより、#1001のレコードが取得され、当該#1001のレコードに含まれている参照に基づいて、入力データセット#2の#2001のレコードを取得して処理を行うスレッド11bが生成されて実行され、入力データセット#2の#2002のレコードを取得して処理を行うスレッド11cが生成されて実行され、同様にして、スレッド10d、スレッド10eが生成されて実行される。この時点においては、タスク#1111で利用可能な主記憶の5スレッド分の領域が使用されることとなる。 When the thread 11a that executes processing by acquiring the record of # 1001 of the input data set # 1 is executed in the calculation node 100, the thread 11a acquires the record of # 1001 and is included in the record of # 1001. The thread 11b that acquires and processes the record of # 2001 of the input data set # 2 is generated and executed based on the received reference, and acquires and processes the record of # 2002 of the input data set # 2. A thread 11c is generated and executed. Similarly, a thread 10d and a thread 10e are generated and executed. At this time, an area corresponding to 5 threads in the main memory that can be used by the task # 1111 is used.
 この後、資源制約管理処理のステップS90で十分な資源がないと判定されるので、スレッド11aは、新たなスレッドを生成することなく、自スレッドが保留状態となる。そして、スレッド11bの実行が終了した場合には、新たに1つのスレッドが実行可能となるので、ステップS98でスレッド11aの実行が再開されて、ステップS99で入力データセット#2の#2005のレコードを取得して処理を行うスレッド11fが生成される。同様にして、スレッド11cの実行が終了した場合には、スレッド11aの実行が再開されて、入力データセット#2の#2006のレコードを取得して処理を行うスレッド11gが生成されて実行され、スレッド11dの実行が終了した場合には、スレッド11aの実行が再開されて、入力データセット#2の#2007のレコードを取得して処理を行うスレッド11hが生成され、スレッド11dの実行が終了した場合には、スレッド11aの実行が再開されて、入力データセット#2の#2008のレコードを取得して処理を行うスレッド11iが生成され、スレッド11fの実行が終了した場合には、スレッド11aの実行が再開されて、入力データセット#2の#2009のレコードを取得して処理を行うスレッド11jが生成され、スレッド11gの実行が終了した場合には、スレッド11aの実行が再開されて、入力データセット#2の#2010のレコードを取得して処理を行うスレッド11kが生成される。 Thereafter, since it is determined in step S90 of the resource constraint management process that there are not enough resources, the thread 11a does not generate a new thread, and its own thread is put on hold. When the execution of the thread 11b is completed, one new thread can be executed. Therefore, the execution of the thread 11a is resumed in step S98, and the record of # 2005 of the input data set # 2 in step S99. A thread 11f is generated that performs processing by acquiring. Similarly, when the execution of the thread 11c is finished, the execution of the thread 11a is resumed, and the thread 11g for acquiring and processing the record of # 2006 of the input data set # 2 is generated and executed. When the execution of the thread 11d is finished, the execution of the thread 11a is resumed, and the thread 11h that acquires and processes the record of # 2007 of the input data set # 2 is generated, and the execution of the thread 11d is finished. In this case, the execution of the thread 11a is resumed, and the thread 11i for obtaining and processing the record of # 2008 of the input data set # 2 is generated. When the execution of the thread 11f is completed, the thread 11a Execution is resumed, and a thread 11j is generated that acquires and processes the record of # 2009 of the input data set # 2. , If the execution of the thread 11g is completed, the execution of the thread 11a is resumed, the input data set # 2 # thread 11k to perform acquisition and processing records 2010 are generated.
 一方、入力データセット#5の#5001のレコードを取得して処理を行うスレッド12aが並行して実行されると、スレッド12aにより、#5001のレコードが取得され、当該#5001のレコードに含まれている参照に基づいて、入力データセット#6の#6001のレコードを取得して処理を行うスレッド12bが生成されて実行され、入力データセット#6の#6002のレコードを取得して処理を行うスレッド12cが生成されて実行される。この時点においては、タスク#2111に利用可能な主記憶の3スレッド分の領域が使用されることとなる。 On the other hand, when the thread 12a that performs processing by acquiring the record of # 5001 of the input data set # 5 is executed in parallel, the record of # 5001 is acquired by the thread 12a and included in the record of # 5001. The thread 12b that acquires and processes the record of # 6001 of the input data set # 6 is generated and executed based on the received reference, and acquires and processes the record of # 6002 of the input data set # 6 A thread 12c is generated and executed. At this time, an area corresponding to three threads of the main memory that can be used for task # 2111 is used.
 この後、資源制約管理処理のステップS90で十分な資源がないと判定されるので、スレッド12aは、新たなスレッドを生成することなく、自スレッドが保留状態となる。そして、スレッド12bの実行が終了した場合には、新たに1つのスレッドが実行可能となるので、ステップS98でスレッド12aの実行が再開されて、ステップS99で入力データセット#6の#6003のレコードを取得して処理を行うスレッド12dが生成される。同様にして、スレッド12cの実行が終了した場合には、入力データセット#6の#6004のレコードを取得して処理を行うスレッド12eが生成され、スレッド12dの実行が終了した場合には、入力データセット#6の#6005のレコードを取得して処理を行うスレッド12fが生成され、スレッド12eの実行が終了した場合には、入力データセット#6の#6006のレコードを取得して処理を行うスレッド12gが生成され、スレッド12fの実行が終了した場合には、入力データセット#6の#6007のレコードを取得して処理を行うスレッド12hが生成され、スレッド12gの実行が終了した場合には、入力データセット#6の#6008のレコードを取得して処理を行うスレッド12iが生成され、スレッド12hの実行が終了した場合には、入力データセット#6の#6009のレコードを取得して処理を行うスレッド12jが生成され、スレッド12iの実行が終了した場合には、入力データセット#6の#6010のレコードを取得して処理を行うスレッド12kが生成される。このように、複数のタスクを並行して実行させることができる。 Thereafter, since it is determined in step S90 of the resource constraint management process that there are not enough resources, the thread 12a does not generate a new thread, and its own thread is put on hold. When the execution of the thread 12b ends, one new thread can be executed. Therefore, the execution of the thread 12a is resumed in step S98, and the record of # 6003 of the input data set # 6 is detected in step S99. A thread 12d is generated that performs processing by acquiring. Similarly, when the execution of the thread 12c is finished, a thread 12e for obtaining and processing the record of # 6004 of the input data set # 6 is generated, and when the execution of the thread 12d is finished, the input When a thread 12f for obtaining and processing the record of # 6005 of the data set # 6 is generated and the execution of the thread 12e is finished, the record of # 6006 of the input data set # 6 is obtained and processed. When the thread 12g is generated and the execution of the thread 12f is finished, a thread 12h for obtaining and processing the record of # 6007 of the input data set # 6 is generated, and when the execution of the thread 12g is finished. , A thread 12i for obtaining and processing the record of # 6008 of the input data set # 6 is generated, and the thread 12h When the execution is finished, a thread 12j for obtaining and processing the record of # 6009 of the input data set # 6 is generated, and when the execution of the thread 12i is finished, # 6010 of the input data set # 6. A thread 12k that acquires and processes the record is generated. In this way, a plurality of tasks can be executed in parallel.
 この結果、複数のタスクにおいて複数のスレッドの実行時に、各々のタスクで利用可能な主記憶の量の範囲内で主記憶を割り当てることが可能となり、スラッシングが発生することを防止でき、タスク全体の実行時間がスラッシングにより長時間化することを防ぐことができる。 As a result, when multiple threads are executed in multiple tasks, it becomes possible to allocate main memory within the range of the amount of main memory available for each task, so that thrashing can be prevented. The execution time can be prevented from being prolonged due to thrashing.
 上記では、資源の制約として、スレッド数、主記憶の例を示したが、本発明はこの例に限定されるものではない。例えば、プロセッサ実行時間、ストレージとの入出力スループット、ネットワークの伝送スループット等に関しても、同様に資源の制約を行うことにより、同様の効果を期待することができる。 In the above, examples of the number of threads and main memory are shown as resource constraints, but the present invention is not limited to this example. For example, with respect to processor execution time, storage input / output throughput, network transmission throughput, and the like, the same effect can be expected by similarly restricting resources.
 以上、幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。 As mentioned above, although several examples were described, it cannot be overemphasized that this invention can be variously changed in the range which is not limited to these Examples and does not deviate from the summary.
 並列データ処理を実行する際に動的に生成するスレッドとしては、多様な実装形態が考えられ、例えば、プロセスであってもよいし、カーネルレベルのスレッド(ネイティブPOSIXスレッドや軽量プロセス等、オペレーティングシステムのカーネルが管理するスレッド)であってもよいし、ユーザレベルのスレッド(ファイバ等のユーザプログラムやライブラリが管理するスレッド)であってもよいし、他と並行して実行することができるように管理される一定の手続きの集まり(例えば、関数ポインタを適当な構造体で管理するもの)であってもよいし、これらを組み合わせたものであってもよい。 Various implementation forms are conceivable as threads that are dynamically generated when executing parallel data processing. For example, a process or a kernel level thread (such as a native POSIX thread or a lightweight process) Threads managed by the kernel), user-level threads (threads managed by user programs and libraries such as fiber), and so that they can be executed in parallel with others It may be a collection of fixed procedures to be managed (for example, a function pointer managed by an appropriate structure), or a combination of these.
 本明細書では、並列データ処理が扱うデータの単位をレコードとしているが、レコードは任意のデータであってよい。例えば、一定個数のカラムの集まりであってもよいし、可変個数のカラムの集まりであってもよいし、単なるテキストであってもよいし、バイト列であってもよいし、画像や音声等のマルチメディアコンテンツであってもよいし、これらの集まりであってもよい。 In this specification, the unit of data handled by parallel data processing is a record, but the record may be arbitrary data. For example, it may be a collection of a certain number of columns, a collection of a variable number of columns, a simple text, a byte string, an image, sound, etc. The multimedia content may also be a collection of these.
 100…計算ノード、110…アプリケーション、120…システムモジュール 100 ... Compute node 110 ... Application 120 ... System module

Claims (17)

  1.  複数の計算機で並行してデータ処理を実行する計算機システムにおける1つの計算機が有する並列データ処理システムであって、
     複数の第1データを含む第1データ群と複数の第2データを含む第2データ群とを含むデータ群からデータを読み込んで処理を実行する並列データ処理実行部
    を有し、
     前記並列データ処理実行部は、
     (A)前記第1データ群から、前記第1データを読み込み、アプリケーションから取得した第1書式情報に基づいて、前記第1データから第1の値を取得し、
     (B)前記アプリケーションから取得した第1参照情報に基づき、前記第1の値に対応する1以上の前記第2データのそれぞれを前記第2データ群から読み込むための1以上のスレッドを生成し、
     (C)前記(A)~前記(B)を、前記第1データ群の1以上の第1データに対して実行し、
     (D)複数の前記スレッドを並行して実行する
     並列データ処理システム。
    A parallel data processing system included in one computer in a computer system that executes data processing in parallel on a plurality of computers,
    A parallel data processing execution unit that reads data from a data group that includes a first data group that includes a plurality of first data and a second data group that includes a plurality of second data, and executes processing;
    The parallel data processing execution unit
    (A) Reading the first data from the first data group, and acquiring a first value from the first data based on the first format information acquired from the application,
    (B) generating one or more threads for reading each of the one or more second data corresponding to the first value from the second data group based on the first reference information acquired from the application;
    (C) performing (A) to (B) on one or more first data of the first data group;
    (D) A parallel data processing system that executes a plurality of the threads in parallel.
  2.  前記並列データ処理実行部は、
     (E)前記(D)でスレッドを実行することにより前記第2データを読み込み、アプリケーションから取得した第2書式情報に基づいて、前記第2データから第2の値を取得する
    請求項1に記載の並列データ処理システム。
    The parallel data processing execution unit
    (E) The second data is read by executing a thread in (D), and a second value is acquired from the second data based on second format information acquired from an application. Parallel data processing system.
  3.  前記並列データ処理実行部は、
     前記第2の値により、前記アプリケーションから取得した第2条件を評価する
    請求項2に記載の並列データ処理システム。
    The parallel data processing execution unit
    The parallel data processing system according to claim 2, wherein the second condition acquired from the application is evaluated based on the second value.
  4.  前記並列データ処理実行部は、
     1つ以上の前記第2データから取得した前記第2の値から、出力データを生成する
    請求項2に記載の並列データ処理システム。
    The parallel data processing execution unit
    The parallel data processing system according to claim 2, wherein output data is generated from the second value acquired from one or more of the second data.
  5.  前記並列データ処理実行部は、
     前記第1の値により、前記アプリケーションから取得した第1条件を評価し、当該第1条件が満たされる場合に前記(B)を実行する
    請求項1に記載の並列データ処理システム。
    The parallel data processing execution unit
    The parallel data processing system according to claim 1, wherein a first condition acquired from the application is evaluated based on the first value, and the process (B) is executed when the first condition is satisfied.
  6.  前記第1参照情報は、前記第2データ群において前記第2データが格納されている物理的な位置を特定する情報を含む
    請求項1に記載の並列データ処理システム。
    The parallel data processing system according to claim 1, wherein the first reference information includes information for specifying a physical position where the second data is stored in the second data group.
  7.  前記第1参照情報は、前記第2データ群において前記第2データを検索するための情報を含む
    請求項1に記載の並列データ処理システム。
    The parallel data processing system according to claim 1, wherein the first reference information includes information for searching for the second data in the second data group.
  8.  前記第2データ群の少なくとも一部の第2データは、ネットワークを介して接続される別の計算機の記憶装置に格納されており、
     前記並列データ処理実行部は、
     前記スレッドを実行して、前記ネットワークを介して接続された前記別の計算機から前記第2データを取得する際に、前記別の計算機に対して、取得要求を送信して、前記記憶デバイスから前記第2データを取得する
    請求項1に記載の並列データ処理システム。
    The second data of at least a part of the second data group is stored in a storage device of another computer connected via a network,
    The parallel data processing execution unit
    When the second data is acquired from the another computer connected via the network by executing the thread, an acquisition request is transmitted to the another computer, and the storage device transmits the second data. The parallel data processing system according to claim 1, wherein the second data is acquired.
  9.  前記並列データ処理実行部は、
     複数のスレッドの実行により生成される同一の計算機に対する複数の取得要求を1つにまとめたブロック化取得要求を前記別の計算機に送信することにより、複数の前記第2データを取得する
    請求項8に記載の並列データ処理システム。
    The parallel data processing execution unit
    9. The plurality of second data is acquired by sending a block acquisition request, which is a collection of a plurality of acquisition requests for the same computer generated by execution of a plurality of threads, to the other computer. Parallel data processing system described in 1.
  10.  前記第1書式情報は、プログラムコードであり、
     前記並列データ処理実行部は、
     ユーザから所定のマークアップ言語で記述される第1書式情報の作成に必要なカタログ情報を受け付け、
     前記カタログ情報に基づいて、前記第1書式情報を作成する
    請求項1に記載の並列データ処理システム。
    The first format information is a program code,
    The parallel data processing execution unit
    Receiving catalog information necessary for creating first format information described in a predetermined markup language from a user;
    The parallel data processing system according to claim 1, wherein the first format information is created based on the catalog information.
  11.  前記並列データ処理実行部は、前記並列データ処理実行部を有する計算機におけるスレッドの生成に関する資源制約情報に基づいて、新たなスレッドを生成すると、自身を構成する前記計算ノードにおけるスレッドの実行に利用される資源量が制約を超えると判断した場合には、前記スレッドの生成を保留する
    請求項1に記載の並列データ処理システム。
    When the parallel data processing execution unit generates a new thread based on resource constraint information related to thread generation in a computer having the parallel data processing execution unit, the parallel data processing execution unit is used for execution of the thread in the calculation node constituting the parallel data processing execution unit. The parallel data processing system according to claim 1, wherein the generation of the thread is suspended when it is determined that a resource amount to be exceeded exceeds a constraint.
  12.  前記並列データ処理実行部は、並列データ処理における一部の段階を担当するプロセスにおけるスレッドの生成に関する資源制約情報に基づいて、新たなスレッドを生成すると、前記プロセスにおけるスレッドの実行に利用される資源量が制約を超える場合には、当該スレッドの生成を保留する
    請求項1に記載の並列データ処理システム。
    When the parallel data processing execution unit generates a new thread based on resource constraint information regarding generation of a thread in a process responsible for a part of the parallel data processing, a resource used for executing the thread in the process The parallel data processing system according to claim 1, wherein the generation of the thread is suspended when the amount exceeds a constraint.
  13.  処理の指示をアプリケーションから受け付ける受付部を更に有し、
     前記アプリケーションからの前記指示は、手続を規定しており、
     前記並列データ処理実行部は、前記指示を受けて、前記(A)乃至(D)を実行することにより、前記指示が、前記手続を規定していても、前記手続に依存しない非順序の処理を実行する、
    請求項1に記載の並列データ処理システム。
    It further has a reception unit that receives processing instructions from the application,
    The instructions from the application define the procedure,
    The parallel data processing execution unit, upon receiving the instruction, executes the steps (A) to (D), so that even if the instruction defines the procedure, an out-of-order process that does not depend on the procedure Run the
    The parallel data processing system according to claim 1.
  14.  複数の計算機で並行してデータ処理を実行する計算機システムにおける計算機であって、
     前記計算機システムにおける別の計算機と通信するための通信インタフェースデバイスと、
     前記通信インタフェースデバイスに接続されており、複数の第1データを含む第1データ群と複数の第2データを含む第2データ群とを含むデータ群からデータを読み込んで処理を実行する制御デバイスと
    を有し、
     前記制御デバイスは、
     (A)前記第1データ群から、前記第1データを読み込み、アプリケーションから取得した第1書式情報に基づいて、前記第1データから第1の値を取得し、
     (B)前記アプリケーションから取得した第1参照情報に基づき、前記第1の値に対応する1以上の前記第2データのそれぞれを前記第2データ群から読み込むための1以上のスレッドを生成し、
     (C)前記(A)~前記(B)を、前記第1データ群の1以上の第1データに対して実行し、
     (D)複数の前記スレッドを並行して実行する
    計算機。
    A computer in a computer system that executes data processing in parallel on a plurality of computers,
    A communication interface device for communicating with another computer in the computer system;
    A control device connected to the communication interface device, which reads data from a data group including a first data group including a plurality of first data and a second data group including a plurality of second data, and executes processing; Have
    The control device is
    (A) Reading the first data from the first data group, and acquiring a first value from the first data based on the first format information acquired from the application,
    (B) generating one or more threads for reading each of the one or more second data corresponding to the first value from the second data group based on the first reference information acquired from the application;
    (C) performing (A) to (B) on one or more first data of the first data group;
    (D) A computer that executes a plurality of the threads in parallel.
  15.  複数の計算機で並行してデータ処理を実行する計算機システムでの並列データ処理方法であって、
     (A)複数の第1データを含む第1データ群と複数の第2データを含む第2データ群とを含むデータ群のうちの前記第1データ群から、前記第1データを読み込み、アプリケーションから取得した第1書式情報に基づいて、前記第1データから第1の値を取得し、
     (B)前記アプリケーションから取得した第1参照情報に基づき、前記第1の値に対応する1以上の前記第2データのそれぞれを前記第2データ群から読み込むための1以上のスレッドを生成し、
     (C)前記(A)~前記(B)を、前記第1データ群の1以上の第1データに対して実行し、
     (D)複数の前記スレッドを並行して実行する
    並列データ処理方法。
    A parallel data processing method in a computer system that executes data processing in parallel on a plurality of computers,
    (A) Reading the first data from the first data group of the data group including a first data group including a plurality of first data and a second data group including a plurality of second data, and from an application Obtaining a first value from the first data based on the obtained first format information;
    (B) generating one or more threads for reading each of the one or more second data corresponding to the first value from the second data group based on the first reference information acquired from the application;
    (C) performing (A) to (B) on one or more first data of the first data group;
    (D) A parallel data processing method for executing a plurality of threads in parallel.
  16.  複数の計算機を有し、
     各計算機が、
     複数の第1データを含む第1データ群と複数の第2データを含む第2データ群とを含むデータ群からデータを読み込んで処理を実行する並列データ処理システム
    を有し、
     各計算機の並列データ処理システムは、
     (A)前記第1データ群から、前記第1データを読み込み、アプリケーションから取得した第1書式情報に基づいて、前記第1データから第1の値を取得し、
     (B)前記アプリケーションから取得した第1参照情報に基づき、前記第1の値に対応する1以上の前記第2データのそれぞれを前記第2データ群から読み込むための1以上のスレッドを生成し、
     (C)前記(A)~前記(B)を、前記第1データ群の1以上の第1データに対して実行し、
     (D)複数の前記スレッドを並行して実行する
    計算機システム。
    Have multiple calculators,
    Each calculator
    A parallel data processing system that reads data from a data group that includes a first data group that includes a plurality of first data and a second data group that includes a plurality of second data, and executes processing;
    The parallel data processing system of each computer is
    (A) Reading the first data from the first data group, and acquiring a first value from the first data based on the first format information acquired from the application,
    (B) generating one or more threads for reading each of the one or more second data corresponding to the first value from the second data group based on the first reference information acquired from the application;
    (C) performing (A) to (B) on one or more first data of the first data group;
    (D) A computer system that executes a plurality of the threads in parallel.
  17.  複数の計算機で並行してデータ処理を実行する計算機システムでの計算機が実行するコンピュータプログラムであって、
     (A)複数の第1データを含む第1データ群と複数の第2データを含む第2データ群とを含むデータ群のうちの前記第1データ群から、前記第1データを読み込み、アプリケーションから取得した第1書式情報に基づいて、前記第1データから第1の値を取得し、
     (B)前記アプリケーションから取得した第1参照情報に基づき、前記第1の値に対応する1以上の前記第2データのそれぞれを前記第2データ群から読み込むための1以上のスレッドを生成し、
     (C)前記(A)~前記(B)を、前記第1データ群の1以上の第1データに対して実行し、
     (D)複数の前記スレッドを並行して実行する
    ことを前記計算機に実行させるコンピュータプログラム。
    A computer program executed by a computer in a computer system that executes data processing in parallel on a plurality of computers,
    (A) Reading the first data from the first data group of the data group including a first data group including a plurality of first data and a second data group including a plurality of second data, and from an application Obtaining a first value from the first data based on the obtained first format information;
    (B) generating one or more threads for reading each of the one or more second data corresponding to the first value from the second data group based on the first reference information acquired from the application;
    (C) performing (A) to (B) on one or more first data of the first data group;
    (D) A computer program that causes the computer to execute a plurality of threads in parallel.
PCT/JP2012/064149 2012-05-31 2012-05-31 Parallel data processing system, computer, and parallel data processing method WO2013179451A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP12878202.6A EP2857975A4 (en) 2012-05-31 2012-05-31 Parallel data processing system, computer, and parallel data processing method
JP2014518181A JP5881025B2 (en) 2012-05-31 2012-05-31 Parallel data processing system, computer, and parallel data processing method
US14/404,550 US9841989B2 (en) 2012-05-31 2012-05-31 Parallel data processing system, computer, and parallel data processing method
PCT/JP2012/064149 WO2013179451A1 (en) 2012-05-31 2012-05-31 Parallel data processing system, computer, and parallel data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/064149 WO2013179451A1 (en) 2012-05-31 2012-05-31 Parallel data processing system, computer, and parallel data processing method

Publications (1)

Publication Number Publication Date
WO2013179451A1 true WO2013179451A1 (en) 2013-12-05

Family

ID=49672705

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/064149 WO2013179451A1 (en) 2012-05-31 2012-05-31 Parallel data processing system, computer, and parallel data processing method

Country Status (4)

Country Link
US (1) US9841989B2 (en)
EP (1) EP2857975A4 (en)
JP (1) JP5881025B2 (en)
WO (1) WO2013179451A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015157338A1 (en) * 2014-04-08 2015-10-15 RedPoint Global Inc. Data transformation system and method
CN111651489A (en) * 2020-06-05 2020-09-11 厦门理工学院 Big data processing server system

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9501483B2 (en) 2012-09-18 2016-11-22 Mapr Technologies, Inc. Table format for map reduce system
JP5939123B2 (en) * 2012-10-09 2016-06-22 富士通株式会社 Execution control program, execution control method, and information processing apparatus
US10114674B2 (en) * 2014-03-06 2018-10-30 International Business Machines Corporation Sorting database collections for parallel processing
CN107329846B (en) * 2017-07-11 2020-06-12 深圳市信义科技有限公司 Big finger data comparison method based on big data technology
US10489348B2 (en) 2017-07-17 2019-11-26 Alteryx, Inc. Performing hash joins using parallel processing
US10552452B2 (en) * 2017-10-16 2020-02-04 Alteryx, Inc. Asynchronously processing sequential data blocks
US10558364B2 (en) 2017-10-16 2020-02-11 Alteryx, Inc. Memory allocation in a data analytics system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010092222A (en) * 2008-10-07 2010-04-22 Internatl Business Mach Corp <Ibm> Caching mechanism based on update frequency
US7756919B1 (en) 2004-06-18 2010-07-13 Google Inc. Large-scale data processing in a distributed and parallel processing enviornment
JP2011170774A (en) * 2010-02-22 2011-09-01 Nippon Telegr & Teleph Corp <Ntt> Device and method for generation of decision tree, and program
WO2012049794A1 (en) * 2010-10-14 2012-04-19 日本電気株式会社 Distributed processing device and distributed processing system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7669015B2 (en) * 2006-02-22 2010-02-23 Sun Microsystems Inc. Methods and apparatus to implement parallel transactions
US9170848B1 (en) * 2010-07-27 2015-10-27 Google Inc. Parallel processing of data
US8782053B2 (en) * 2011-03-06 2014-07-15 Happy Cloud Inc. Data streaming for interactive decision-oriented software applications
US9720708B2 (en) * 2011-08-19 2017-08-01 Advanced Micro Devices, Inc. Data layout transformation for workload distribution

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7756919B1 (en) 2004-06-18 2010-07-13 Google Inc. Large-scale data processing in a distributed and parallel processing enviornment
JP2010092222A (en) * 2008-10-07 2010-04-22 Internatl Business Mach Corp <Ibm> Caching mechanism based on update frequency
JP2011170774A (en) * 2010-02-22 2011-09-01 Nippon Telegr & Teleph Corp <Ntt> Device and method for generation of decision tree, and program
WO2012049794A1 (en) * 2010-10-14 2012-04-19 日本電気株式会社 Distributed processing device and distributed processing system

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
JEFFREY DEAN; SANJAY GHEMAWAT: "MapReduce: Simplified Data Processing on Large Clusters", PROCEEDINGS OF OSDI 2004, 2004, pages 137 - 15
MICHAEL ISARD; MIHAI BUDIU; YUAN YU; ANDREW BIRRELL; DENNIS FETTERLY: "Dryad: distributed data-parallel programs from sequential building blocks", PROCEEDINGS OF EUROSYS, 2007, pages 59 - 72
See also references of EP2857975A4
TAKANORI UEDA ET AL.: "QueueLinker: A Distributed Framework for Pipelined Applications", DAI 2 KAI FORUM ON DATA ENGINEERING AND INFORMATION MANAGEMENT -DEIM 2010- RONBUNSHU, 25 May 2010 (2010-05-25), XP055179049, Retrieved from the Internet <URL:http://db-event.jpn.org/deim2010/proceedings/files/E1-3.pdf> [retrieved on 20120802] *
VINAYAK R. BORKAR; MICHAEL J. CAREY; RAMAN GROVER; NICOLA ONOSE; RARES VERNICA: "Hyracks: A flexible and extensible foundation for data-intensive computing", PROCEEDINGS OF ICDE 2011, 2011, pages 1151 - 1162, XP031868515, DOI: doi:10.1109/ICDE.2011.5767921

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015157338A1 (en) * 2014-04-08 2015-10-15 RedPoint Global Inc. Data transformation system and method
CN111651489A (en) * 2020-06-05 2020-09-11 厦门理工学院 Big data processing server system

Also Published As

Publication number Publication date
US20150113535A1 (en) 2015-04-23
EP2857975A1 (en) 2015-04-08
EP2857975A4 (en) 2016-03-02
US9841989B2 (en) 2017-12-12
JPWO2013179451A1 (en) 2016-01-14
JP5881025B2 (en) 2016-03-09

Similar Documents

Publication Publication Date Title
JP5881025B2 (en) Parallel data processing system, computer, and parallel data processing method
Padhy Big data processing with Hadoop-MapReduce in cloud systems
Raicu Many-task computing: bridging the gap between high-throughput computing and high-performance computing
Sim et al. Analyzethis: an analysis workflow-aware storage system
US20200034484A1 (en) User-defined analysis of distributed metadata
Lu et al. Dlobd: A comprehensive study of deep learning over big data stacks on hpc clusters
KR101765725B1 (en) System and Method for connecting dynamic device on mass broadcasting Big Data Parallel Distributed Processing
Tannir Optimizing Hadoop for MapReduce
Aggarwal et al. Small files’ problem in Hadoop: A systematic literature review
Sundarakumar et al. A comprehensive study and review of tuning the performance on database scalability in big data analytics
Shan et al. KubeAdaptor: A docking framework for workflow containerization on Kubernetes
Salehian et al. Comparison of spark resource managers and distributed file systems
Fukutomi et al. GPUhd: Augmenting YARN with GPU resource management
JP6097910B2 (en) Parallel data processing system, computer, and parallel data processing method
Zhao et al. Gpu-accelerated cloud computing for data-intensive applications
Pan The performance comparison of hadoop and spark
CN113626510A (en) Transaction checking method, device, electronic equipment and storage medium
CN103631648A (en) Task processing method and system
Ho et al. A mapreduce programming framework using message passing
Mian et al. Managing data-intensive workloads in a cloud
JP5031538B2 (en) Data distribution method, data distribution program, and parallel database system
JP6210501B2 (en) Database management system, computer, database management method
Ludwig Research trends in high performance parallel input/output for cluster environments
Wadhwa Scalable Data Management for Object-based Storage Systems
Marcu et al. In support of push-based streaming for the computing continuum

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014518181

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 14404550

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2012878202

Country of ref document: EP