JP2013140510A - データ処理方法、分散処理システムおよびプログラム - Google Patents

データ処理方法、分散処理システムおよびプログラム Download PDF

Info

Publication number
JP2013140510A
JP2013140510A JP2012000598A JP2012000598A JP2013140510A JP 2013140510 A JP2013140510 A JP 2013140510A JP 2012000598 A JP2012000598 A JP 2012000598A JP 2012000598 A JP2012000598 A JP 2012000598A JP 2013140510 A JP2013140510 A JP 2013140510A
Authority
JP
Japan
Prior art keywords
input data
result
processing
data
map
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012000598A
Other languages
English (en)
Other versions
JP5919825B2 (ja
Inventor
Yuji Mizobuchi
裕司 溝渕
Tomohiro Otake
智裕 大嶽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012000598A priority Critical patent/JP5919825B2/ja
Priority to US13/717,997 priority patent/US9135351B2/en
Publication of JP2013140510A publication Critical patent/JP2013140510A/ja
Application granted granted Critical
Publication of JP5919825B2 publication Critical patent/JP5919825B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • 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/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers

Landscapes

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

Abstract

【課題】過去の処理結果の再利用可能性を高めることができる。
【解決手段】記憶装置1は、過去に処理した入力データの集合D2,D3に対応する第2の処理の結果R2,R3を記憶する。検索手段2aは、入力データの集合D1が指定されると、記憶装置1から入力データの集合D1と重複する入力データの集合D2に対応する第2の処理の結果R2を検索する。データ処理手段3aは、入力データの集合D2に含まれ入力データの集合D1に含まれない差分の入力データD2aに対応する第1の処理の結果R2aを取得し、当該第1の処理の結果R2aを用いて、検索した第2の処理の結果R2から差分の入力データD2aの影響を除去することで、入力データの集合D1に対応する第2の処理の結果R1を生成する。
【選択図】図1

Description

本発明はデータ処理方法、分散処理システムおよびプログラムに関する。
ネットワークに接続された複数のノード(例えば、コンピュータなどの情報処理装置)を備えた分散処理システムを用いてデータ処理を行うことがある。データを分割して複数のノードに割り当て、複数のノードを並列に用いることで、データ処理を高速化し得る。このようなデータ処理の並列化は、例えば、サーバ装置に対するアクセスを示すアクセスログの解析など、大量のデータを処理する際に行われる。
並列データ処理を行うプログラムの作成を支援するために、MapReduceなどのフレームワークが提案されている。MapReduceで定義されるデータ処理方法は、MapフェーズとReduceフェーズを含む。Mapフェーズでは、入力されたデータを分割し、複数のノードを用いてデータを処理する。Reduceフェーズでは、Mapフェーズの結果を、キーなどに応じて1またはそれ以上のノードを用いて集約する。Reduceフェーズの結果を次のMapフェーズに渡すこともできる。データの分割や集約は、フレームワークに自動的に実行させることもできる。
ところで、データ処理を更に高速化するため、過去の処理結果を再利用することが考えられている。例えば、データを更新頻度に基づき複数のグループに分類し、各グループについてデータの更新頻度を算出し、更新頻度が低いグループに属するデータのReduce結果をキャッシュして、Reduce結果を再利用できるようにする提案がある。
また、文書管理システムにおいて、入力された検索条件が以前の検索と同じであれば、以前の検索時の時刻よりも登録/更新時刻が新しい文書のみを検索対象とし、今回検索時の検索結果に前回検索時の検索結果を付け加える提案がある。
特開2010−92222号公報 特開2002−259443号公報
入力データの集合に対して複数のノードを用いて第1段階の処理を行い、第2段階の処理において第1段階の処理結果を集計する分散処理システムが考えられる。この分散処理システムでは、ある入力データの集合に対してデータ処理を行う場合、当該入力データの集合と重複部分がある他の入力データの集合に対して過去にデータ処理を行っていた場合は、当該過去のデータ処理の結果を再利用できることが好ましい。
しかし、今回の入力データの集合と過去の入力データの集合の間にずれがあると、過去のデータ処理の結果の再利用が難しい場合があるという問題がある。
一側面では、本発明は、過去の処理結果の再利用可能性を高めたデータ処理方法、分散処理システムおよびプログラムを提供することを目的とする。
一側面では、複数のノードを用いて入力データに対して第1の処理を行い、第1の処理の結果に対して第2の処理を行うシステムで実行されるデータ処理方法が提供される。データ処理方法では、第1の入力データの集合が指定されると、過去に処理した入力データの集合に対応する第2の処理の結果を記憶する記憶装置から、第1の入力データの集合と重複する第2の入力データの集合に対応する第2の処理の結果を検索する。第2の入力データの集合に含まれ第1の入力データの集合に含まれない差分の入力データに対応する第1の処理の結果を取得する。差分の入力データに対応する第1の処理の結果を用いて、第2の入力データの集合に対応する第2の処理の結果から差分の入力データの影響を除去することで、第1の入力データの集合に対応する第2の処理の結果を生成する。
また、一側面では、複数のノードを用いて入力データに対して第1の処理を行い、第1の処理の結果に対して第2の処理を行うシステムで実行されるデータ処理方法が提供される。データ処理方法では、第1の入力データの集合が指定されると、過去に処理した入力データの集合に対応する第2の処理の結果を記憶する記憶装置から、第1の入力データの集合と重複する第2の入力データの集合に対応する第2の処理の結果を検索する。第1の入力データの集合に含まれ第2の入力データの集合に含まれない差分の入力データに対応する第1の処理の結果を取得する。第2の入力データの集合に対応する第2の処理の結果に、差分の入力データに対応する第1の処理の結果を合成することで、第1の入力データの集合に対応する第2の処理の結果を生成する。
また、一側面では、複数のノードを用いて入力データに対して第1の処理を行い、第1の処理の結果に対して第2の処理を行う分散処理システムが提供される。分散処理システムは、記憶装置、検索手段およびデータ処理手段を有する。記憶装置は、過去に処理した入力データの集合に対応する第2の処理の結果を記憶する。検索手段は、第1の入力データの集合が指定されると、記憶装置から第1の入力データの集合と重複する第2の入力データの集合に対応する第2の処理の結果を検索する。データ処理手段は、第2の入力データの集合に含まれ第1の入力データの集合に含まれない差分の入力データに対応する第1の処理の結果を取得し、差分の入力データに対応する第1の処理の結果を用いて、第2の入力データの集合に対応する第2の処理の結果から差分の入力データの影響を除去することで、第1の入力データの集合に対応する第2の処理の結果を生成する。
また、一側面では、コンピュータが実行するプログラムであって、入力データに対して複数のノードを用いて行われた第1の処理の結果に対して第2の処理を行うためのプログラムが提供される。
一側面によれば、過去の処理結果の再利用可能性を高めることができる。
第1の実施の形態の分散処理システムを示す図である。 第2の実施の形態の分散処理システムを示す図である。 第2の実施の形態の実行制御サーバのハードウェア例を示す図である。 第2の実施の形態のソフトウェア例を示す図である。 第2の実施の形態のMapReduceの例を示す図である。 第2の実施の形態のログデータの例を示す図である。 第2の実施の形態のログデータの処理例を示す図である。 第2の実施の形態のReduce結果テーブルの例を示す図である。 第2の実施の形態の分散処理の例を示すシーケンス図である。 第2の実施の形態の分析処理の例を示すフローチャートである。 第2の実施の形態の分析処理の結果の例を示す図である。 第2の実施の形態の分散処理制御の例を示すフローチャートである。 第2の実施の形態の分散処理の例を示す図である。 第2の実施の形態のワードカウントのコード例を示す図である。 第2の実施の形態のMap結果テーブルの例を示す図である。 第3の実施の形態のMapReduceの例を示す図である。 第3の実施の形態の評価値テーブルの例を示す図である。 第3の実施の形態の第1のMapの入出力例である。 第3の実施の形態の第1のshuffle&sortの入出力例である。 第3の実施の形態の第1のReduceの入出力例である。 第3の実施の形態の第2のMapの入出力例である。 第3の実施の形態の第2のshuffle&sortの入出力例である。 第3の実施の形態の第2のReduceの入出力例である。 第3の実施の形態のReduce結果テーブルの例を示す図である。 第3の実施の形態の分析処理の結果の例を示す図である。 第3の実施の形態の分散処理の例を示す図である。 第3の実施の形態の分散処理の例(続き)を示す図である。 第3の実施の形態の逆Reduceのコード例を示す図である。 第3の実施の形態のReduceのコード例を示す図である。 第4の実施の形態の分散処理の例を示すフローチャートである。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の分散処理システムを示す図である。第1の実施の形態の分散処理システムは、入力データに対して複数のノードを用いて行われた第1の処理の結果に対して第2の処理を行うシステムである。第1の実施の形態の分散処理システムは、記憶装置1、情報処理装置2,3およびノード4,4aを含む。記憶装置1、情報処理装置2,3およびノード4,4aは、ネットワークで接続されている。ノード4,4aは、データ処理を行うノードである。
ここで、第1の処理を行う際、例えば、入力データの集合が複数に分割されてノード4,4aに入力される。本例では、ノード4,4aが2つであるので、2つに分割される。ただし、ノードの数は3以上でもよい。第1の処理の結果は、入力データの集合の分割単位でノード4,4aで生成される。すなわち、第1の処理の結果はノード4,4aで生成された結果の集合である。第2の処理は、例えば当該結果の集合を集約する処理である。
情報処理装置2,3およびノード4,4aは、CPU(Central Processing Unit)などのプロセッサとRAM(Random Access Memory)などのメモリとを備えてもよく、メモリに記憶されたプログラムをプロセッサが実行するコンピュータであってもよい。
記憶装置1は、過去に行った入力データの集合に対応する第2の処理の結果を記憶する。
情報処理装置2は、検索手段2aを有する。検索手段2aは、第1の入力データの集合D1が指定されると、記憶装置1から第1の入力データの集合D1と重複する第2の入力データD2の集合に対応する第2の処理の結果R2を検索する。
情報処理装置3は、データ処理手段3aを有する。データ処理手段3aは、第2の入力データの集合D2に含まれ第1の入力データの集合D1に含まれない差分の入力データD2aに対応する第1の処理の結果R2aを取得する。データ処理手段3aは、取得した第1の処理の結果R2aを用いて、検索した第2の処理の結果R2から差分の入力データD2aの影響を除去することで、第1の入力データの集合D1に対応する第2の処理の結果R1を生成する。
ノード4,4aは、入力データの集合に対して第1の処理を実行し、第1の処理の結果を生成する。
なお、検索手段2aとデータ処理手段3aとを同一の情報処理装置上に設けてもよい。また、データ処理手段3aの処理をノード4,4aが実行してもよい。
第1の実施の形態の分散処理システムによれば、検索手段2aにより、第1の入力データの集合D1が指定されると、記憶装置1から第1の入力データの集合D1と重複する第2の入力データの集合D2に対応する第2の処理の結果R2が検索される。データ処理手段3aにより、第2の入力データの集合D2に含まれ第1の入力データの集合D1に含まれない差分の入力データD2aに対応する第1の処理の結果R2aが取得され、当該第1の処理の結果R2aを用いて、検索された第2の処理の結果R2から差分の入力データD2aの影響を除去することで、第1の入力データの集合D1に対応する第2の処理の結果R1が生成される。
これにより、過去の処理結果の再利用可能性を高めることができる。例えば、分散処理システムにより、入力データの集合に対して複数のノードを用いて第1段階の処理を行い、第2段階の処理において第1段階の処理結果を集計することがある。当該分散処理システムにおいて、第2段階の処理結果を保存して再利用することが考えられる。しかし、第2段階の処理結果が集計結果であると、事後的に当該処理結果を入力データの範囲と対応するように分割できるとは限らない。このため、今回の入力データの集合と過去の入力データの集合の間にずれがあると、そのままでは再利用が難しい場合が生じ得る。
そこで、第1の実施の形態の分散処理システムでは、過去の入力データの集合に含まれるが今回の入力データの集合には含まれない差分の入力データの第1の処理の結果を取得する。そして、当該差分の入力データの第1の処理の結果を用いて、過去の入力データの集合に対応する第2の処理の結果から当該差分の入力データの影響を除去する。これにより、過去の入力データの集合に対応する第2の処理の結果の再利用可能性を高められる。
なお、今回の入力データの集合に含まれるが過去の入力データの集合には含まれない他の差分の入力データが存在する場合もある。上記の例で言えば、第1の入力データの集合D1に含まれるが第2の入力データの集合D2には含まれない他の差分の入力データD1aである。この場合、他の差分の入力データD1aについて第1の処理の結果R1aを取得すればよい。
すなわち、第2の処理の結果R2から差分の入力データD2aの影響を除去すると、第2の入力データの集合D2のうち第1の入力データの集合D1に重複する部分の入力データD2bに対応する第2の処理の結果R2bが得られる。当該重複する部分の入力データD2bは、第1の入力データの集合D1のうち第2の入力データの集合D2に重複する部分の入力データD1bに等しい。このため、第2の処理の結果R2bは、重複する部分の入力データD1bに対応する第2の処理の結果に等しい。よって、第2の処理の結果R2bに第2の処理の結果R1aを合成すれば、第1の入力データの集合D1に対応する第2の処理の結果R1を得られる。
このように、過去の入力データの集合に対応する第2の処理の結果の再利用性を高めることで、今回の入力データの集合に対応する第2の処理の結果を生成する処理を効率的に行えるようになる。
更に、第1の入力データの集合D1と重複する複数の第2の入力データの集合D2,D3に対応する第2の処理の結果R2,R3が検索される場合もある。その場合には、入力データの集合間で重複する範囲が最も大きい第2の処理の結果を選択するようにしてもよい。重複する範囲がより大きい程、過去の結果を利用できる範囲も大きくなる。このため、今回の入力データに対する処理範囲を小さくでき、データ処理をより効率的に行えるからである。
[第2の実施の形態]
図2は、第2の実施の形態の分散処理システムを示す図である。第2の実施の形態の分散処理システムは、入力されたログデータに含まれる文字列(文字を含む)をカウントする処理(以下、ワードカウントと呼ぶことがある)を複数のノードに分散処理させる。第2の実施の形態の分散処理システムでは、分散処理にMapReduceを用いるものとする。MapReduceを利用するためのフレームワークとして、例えば、Hadoopが知られている。
第2の実施の形態の分散処理システムは、EC(Electronic Commerce)サーバ20、クライアント30、実行制御サーバ100、分析サーバ200、処理組立サーバ300、結果登録サーバ400、入力情報管理サーバ500、結果情報管理サーバ600およびデータ処理サーバ700,700a,・・・を含む。各サーバは、ネットワーク10に接続されている。ネットワーク10は、例えばLAN(Local Area Network)である。また、ネットワーク10は、インターネット(図示を省略)に接続されている。
ECサーバ20は、電子商取引による商品販売サービスを提供するサーバコンピュータである。ECサーバ20は、顧客による商品の購入を受け付ける。ECサーバ20は、顧客が購入した商品の内容を示すログを入力情報管理サーバ500に格納する。
クライアント30は、分散処理システムを管理する管理者が操作するクライアントコンピュータである。クライアント30は、管理者による所定の操作入力を受け付けると、入力情報管理サーバ500に格納されたログデータの集計を実行制御サーバ100に依頼する。当該処理依頼には、集計を行う期間(時間範囲)を示す情報やカウントしたい商品を示す文字列の情報が含まれる。管理者は、クライアント30を操作して、当該期間や文字列を入力できる。
実行制御サーバ100は、分散処理システム全体を制御するサーバコンピュータである。実行制御サーバ100は、クライアント30からの指示に応じて、他のサーバと連携し、分散処理の実行を制御する。具体的には、実行制御サーバ100は、指定された期間のログデータの分析を分析サーバ200に依頼する。実行制御サーバ100は、分析サーバ200から分析結果を得ると、ワードカウントに係るMapReduceの組立を処理組立サーバ300に依頼する。当該組立依頼は、分析結果の情報を含む。実行制御サーバ100は、処理組立サーバ300によるMapReduceの組立結果に基づいて、データ処理サーバ700,700a,・・・を制御し、指定された文字列につき、ワードカウントを実行させる。例えば、実行制御サーバ100は、データ処理サーバ700,700a,・・・のうち、アイドル(idle)状態のサーバにMap処理またはReduce処理を割り当てる。実行制御サーバ100のような制御を行うノードをマスター(master)と呼ぶことがある。
分析サーバ200は、ログデータの分析処理を実行するサーバコンピュータである。分析サーバ200は、実行制御サーバ100からログデータの分析依頼を受け付けると、入力情報管理サーバ500に格納されたログデータを参照して、指定された期間のログを分析する。具体的には、分析サーバ200は、結果情報管理サーバ600に格納された過去の処理結果と今回指定された期間との対比を行い、過去の処理結果のうち今回のMapReduceの結果として利用可能なものがあるかを検索する。分析サーバ200は、分析結果を実行制御サーバ100に応答する。
処理組立サーバ300は、MapReduceの組立処理を実行するサーバコンピュータである。処理組立サーバ300は、実行制御サーバ100からMapReduceの組立依頼および分析サーバ200による分析結果を受け付けると、組立処理を実行する。具体的には、過去の処理結果のうち今回のMapReduceの結果として利用可能なものがある場合、当該過去の処理結果を利用したMapReduceの組立を行う。過去の処理結果のうち今回のMapReduceの結果として利用可能なものがない場合、入力データの全部に対するMapReduceの組立を行う。
結果登録サーバ400は、データ処理サーバ700,700a,・・・によるReduce処理の結果を取得して、結果情報管理サーバ600に登録するサーバコンピュータである。
入力情報管理サーバ500は、入力情報を管理するサーバコンピュータである。入力情報は、ECサーバ20によって記録されたログデータである。
結果情報管理サーバ600は、結果情報を管理するサーバコンピュータである。結果情報は、結果登録サーバ400によって登録されたReduce処理の結果である。
データ処理サーバ700,700a,・・・は、データを並列処理するサーバコンピュータである。データ処理サーバ700,700a,・・・は、実行制御サーバ100から割り当てられたMap処理またはReduce処理を実行する。1つのデータ処理サーバがMap処理およびReduce処理を割り当てられることもある。このようにデータの並列処理を担当するノードを、ワーカー(worker)あるいはスレーブ(slave)と呼ぶことがある。
図3は、第2の実施の形態の実行制御サーバのハードウェア例を示す図である。実行制御サーバ100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、ディスクドライブ106および通信部107を有する。各ユニットが実行制御サーバ100のバスに接続されている。他のサーバやクライアント30も、実行制御サーバ100と同様のハードウェアを用いて実装できる。
CPU101は、実行制御サーバ100の情報処理を制御するプロセッサである。CPU101は、HDD103に記憶されているプログラムやデータの少なくとも一部を読み出し、RAM102に展開してプログラムを実行する。なお、実行制御サーバ100は、複数のプロセッサを設けて、プログラムを分散して実行してもよい。
RAM102は、CPU101が実行するプログラムや処理に用いるデータを一時的に記憶する揮発性メモリである。なお、実行制御サーバ100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えていてもよい。
HDD103は、OS(Operating System)プログラムやアプリケーションプログラムなどのプログラムおよびデータを記憶する不揮発性の記憶装置である。HDD103は、CPU101の命令に従って、内蔵の磁気ディスクに対してデータの読み書きを行う。なお、実行制御サーバ100は、HDD以外の種類の不揮発性の記憶装置(例えば、SSDなど)を備えてもよく、複数の記憶装置を備えていてもよい。
画像信号処理部104は、CPU101の命令に従って、実行制御サーバ100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、例えば、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイを用いることができる。
入力信号処理部105は、実行制御サーバ100に接続された入力デバイス12から入力信号を取得し、CPU101に出力する。入力デバイス12としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
ディスクドライブ106は、記録媒体13に記録されたプログラムやデータを読み取る駆動装置である。記録媒体13として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。ディスクドライブ106は、例えば、CPU101の命令に従って、記録媒体13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信部107は、ネットワーク10を介して他のサーバと通信を行う通信インタフェースである。通信部107は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
図4は、第2の実施の形態のソフトウェア例を示す図である。図4に示すユニットの一部または全部は、各サーバが実行するプログラムのモジュールであってもよい。また、図4に示すユニットの一部または全部は、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)などの電子回路であってもよい。
ECサーバ20は、ECアプリ21を有する。ECアプリ21は、電子商取引の機能を実現するアプリケーションである。ECサーバ20はWebサーバとして機能する。ECアプリ21は、当該Webサーバ上のWebアプリケーションとして、ユーザが操作する端末装置から利用可能である。
クライアント30は、ブラウザ31を有する。ブラウザ31は、実行制御サーバ100にWebアクセスするためのWebブラウザである(実行制御サーバ100は、Webサーバとしても機能する)。管理者は、ブラウザ31を操作して、ワードカウントの処理依頼を実行制御サーバ100に行える。処理依頼と共に、処理に用いる情報(処理対象期間や検索する文字列など)を入力できる。なお、クライアント30から実行制御サーバ100への処理依頼は、例えば、CLI(Command Line Interface)を用いて行ってもよい。
実行制御サーバ100は、実行制御部110を有する。実行制御部110は、分散処理の実行を制御する。実行制御部110は、クライアント30から受信した処理依頼に応じて、ワードカウントの処理を開始する。実行制御部110は、指定された期間のログの分析を分析サーバ200に依頼する。実行制御部110は、分析サーバ200から分析結果を取得すると、ワードカウントに係るMapReduceの組立を処理組立サーバ300に依頼する。当該組立依頼は、分析結果の情報を含む。実行制御部110は、処理組立サーバ300から組立結果を取得すると、当該組立結果に基づいて、Map処理やReduce処理をデータ処理サーバ700,700a,・・・に割り当てる。Map処理に対する入力データは、指定された期間のログとなる。
実行制御部110は、MapReduceによる分散処理によって得られたワードカウントの結果をクライアント30に応答する。また、実行制御部110は、Reduce処理の結果を結果登録サーバ400に送信する。
分析サーバ200は、分析部210を有する。分析部210は、実行制御部110からの分析依頼に応じて、入力情報管理サーバ500および結果情報管理サーバ600に格納された情報を参照して、指定された期間のログの分析を実行し、分析結果を実行制御部110に応答する。
処理組立サーバ300は、処理組立部310を有する。処理組立部310は、実行制御部110からの組立依頼および分析結果に応じて、MapReduceの組立処理を実行し、組立結果を実行制御部110に応答する。
結果登録サーバ400は、結果登録部410を有する。結果登録部410は、実行制御部110からReduce処理の結果を取得し、結果情報管理サーバ600に登録する。
入力情報管理サーバ500は、入力情報記憶部510を有する。入力情報記憶部510は、入力情報を記憶する。
結果情報管理サーバ600は、結果情報記憶部610を有する。結果情報記憶部610は、結果情報を記憶する。
データ処理サーバ700は、データ処理部710を有する。データ処理部710は、実行制御部110によりMap処理が割り当てられると、入力データの一部を取得してMap処理を実行する。また、データ処理部710は、実行制御部110によりReduce処理が割り当てられるとMap処理の結果に対してReduce処理を実行し、Reduce処理の結果を実行制御サーバ100に応答する。
図5は、第2の実施の形態のMapReduceの例を示す図である。第2の実施の形態の分散処理システムが実行するワードカウントは、ステップS1,S2,S3を含む。
ステップS1は、Map処理である。Map処理では、各データ処理部が、自身が担当する入力データの一部に対して、キー(key)とバリュー(value)とのペア(以下、キー・バリュー・ペアと呼ぶことがある)を生成する。具体的には、キーは商品を示す文字列の情報である。バリューは、当該入力データの一部に含まれる当該文字列の数である。
ステップS2は、shuffle&sort処理である。ステップS2には、ステップS1の出力が入力される。shuffle&sort処理では、入力されたキー・バリュー・ペアをキーでソートし、同じキーをもつキー・バリュー・ペア同士を集約する。同じキーをもつキー・バリュー・ペアを、同じデータ処理部に入力して、Reduce処理を実行する。第2の実施の形態の分散処理システムでは、データ処理サーバ700,700a,・・・が協調してshuffle&sort処理を実行する。
ステップS3は、Reduce処理である。ステップS3には、ステップS2の出力が入力される。Reduce処理では、入力されたキー・バリュー・ペアをマージして新たなキー・バリュー・ペアを出力する。出力するキー・バリュー・ペアについて、キーは商品を示す文字列の情報であり、バリューは入力データの全範囲に含まれる当該文字列の数である。
図6は、第2の実施の形態のログデータの例を示す図である。ログデータ511は、入力情報記憶部510に記憶される。ログデータ511の1行には、タイムスタンプが含まれる。例えば、タイムスタンプ“2011/05/01 00:00:02”は、当該1行分のログが2011年5月1日0時0分2秒に記録されたものであることを示す。また、ログデータ511の1行には、ログの内容を示すメッセージが含まれる。例えば、メッセージ“・・・apple・・・”は、購入された商品名“apple”を含んでいる。ログデータ511の1行分のデータがログデータ511の1レコードに相当する。すなわち、ログデータ511は、レコードの集合である。
ここで、以下ではデータ処理部710,710a,・・・に対し、入力データを日付で区分して入力し、Map処理を実行させるものとする。5月1日のレコードの集合をログデータ511aとする。5月2日のレコードの集合をログデータ511bとする。5月3日のレコードの集合をログデータ511cとする。5月4日のレコードの集合をログデータ511dとする。5月5日のレコードの集合をログデータ511eとする。5月6日のレコードの集合をログデータ511fとする。すなわち、ログデータ511a,511b,512c,511d,511e,511fは、ログデータ511の部分集合である。
なお、ログデータ511を区分する方法として日付以外の他の単位を用いてもよい。例えば、時間帯(例えば1時台、2時台など)の単位で区分してもよい。また、週(例えば第1週目、第2週目など)の単位で区分してもよい。
次に、第2の実施の形態の分散処理システムにおける、過去の結果を利用しない場合のワードカウントを例示する。なお、以下の説明では、ワードカウント対象の文字列として、“apple”および“orange”を含む文字列が指定されているとする。
図7は、第2の実施の形態のログデータの処理例を示す図である。図7では、5月1日〜5月5日の期間に属するログを入力データとして、ワードカウントを行う場合を例示している。
ステップS1では、ログデータ511a,511b,511c,511d,511eをデータ処理部710,710a,・・・に入力してMap処理を実行し、Map結果512a,512b,512c,512d,512eを生成する。
Map結果512aは、ログデータ511aに対するMap処理の結果(5月1日分)である。例えば、Map結果512aにはキー・バリュー・ペア<apple,3>、<orange,4>などが含まれる。
Map結果512bは、ログデータ511bに対するMap処理の結果(5月2日分)である。Map結果512cは、ログデータ511cに対するMap処理の結果(5月3日分)である。Map結果512dは、ログデータ511dに対するMap処理の結果(5月4日分)である。Map結果512eは、ログデータ511eに対するMap処理の結果(5月5日分)である。
ステップS2では、Map結果512a,512b,512c,512d,512eに対し、データ処理部710,710a,・・・がshuffle&sort処理を実行する。そして、検索対象の文字列ごとにshuffle&sort結果521,522,・・・を生成する。shuffle&sort結果521は、文字列“apple”に関するshuffle&sort処理の結果である。例えば、shuffle&sort結果521は、Map結果512a,512b,512c,512d,512eのうちキーが“apple”であるキー・バリュー・ペアの集合である。なお、shuffle&sort結果521は、当該キー・バリュー・ペアの集合をキーでマージしたキー・バリューズ・ペアとして取得されてもよい(例えば、<apple,3,4,5,・・・>など)。shuffle&sort結果522は、同様に文字列“orange”に関するshuffle&sort処理の結果である。
ステップS3では、shuffle&sort結果521,522,・・・をデータ処理部710,710a,・・・に入力してReduce処理を実行し、Reduce結果531,532,・・・を生成する。Reduce結果531,532,・・・は、キー・バリュー・ペアである。上述したようにキーは文字列の情報、バリューは入力データに含まれる当該文字列の数の合計である。例えば、Reduce結果531は、文字列“apple”に関するReduce処理の結果である。Reduce結果532は、文字列“orange”に関するReduce処理の結果である。
Reduce結果531,532,・・・をまとめた、Reduce結果530が当該ワードカウントの最終の処理結果となる。
このようにして、過去の結果を利用しない場合は、入力データの全範囲に対してMapReduceを実行する。
Reduce結果530は、結果登録サーバ400により結果情報記憶部610に登録される。
図8は、第2の実施の形態のReduce結果テーブルの例を示す図である。Reduce結果テーブル611は、結果情報記憶部610に記憶される。Reduce結果テーブル611は、入力データ識別子およびReduce結果の項目を含む。
入力データ識別子の項目には、Reduce結果に対応する入力データの識別情報(以下、入力データ識別子と呼ぶことがある)が登録される。当該入力データ識別子には、入力データの処理対象範囲を示す情報が含まれる。例えば、入力データ識別子“2011/05/01−2011/05/05−Reduce”は、2011年5月1日〜2011年5月5日の期間を処理対象範囲としたことを示す。Reduce結果の項目には、当該処理対象範囲の入力データに対するReduce結果が登録される。
次に、以上の構成の分散処理システムにおける分散処理の手順を説明する。まず、分散処理の全体の流れを説明する。
図9は、第2の実施の形態の分散処理の例を示すシーケンス図である。以下、図9に示す処理をステップ番号に沿って説明する。
(ステップST1)クライアント30は、実行制御サーバ100にワードカウントの処理依頼を送信する。処理依頼は、処理対象の期間および検索対象とする文字列の情報を含む。実行制御サーバ100は、処理依頼を受信する。
(ステップST2)実行制御サーバ100は、分析サーバ200に分析依頼を送信する。分析依頼は、処理対象の期間の情報を含む。ここでは、期間は日付範囲(例えば、“2011/05/02〜2011/05/06”)で指定されるものとする。分析サーバ200は、分析依頼を受信する。
(ステップST3)分析サーバ200は、入力情報記憶部510および結果情報記憶部610を参照して、指定された期間のログデータ(以下、「今回の入力データ」ということがある)について分析処理を実行し、分析結果を得る。分析処理の詳細は後述する。
(ステップST4)分析サーバ200は、実行制御サーバ100に分析結果を応答する。実行制御サーバ100は、分析結果を受信する。
(ステップST5)実行制御サーバ100は、MapReduceを用いたワードカウントの処理の組立依頼を処理組立サーバ300に送信する。組立依頼は、分析結果の情報を含む。処理組立サーバ300は、組立依頼を受信する。
(ステップST6)処理組立サーバ300は、組立処理を実行し、組立結果を得る。組立処理の詳細は後述する。
(ステップST7)処理組立サーバ300は、実行制御サーバ100に組立結果を応答する。実行制御サーバ100は、組立結果を受信する。
(ステップST8)実行制御サーバ100は、組立結果に基づいてデータ処理サーバ700,700a,・・・にMap処理およびReduce処理を割り当て、指定された文字列に関するワードカウントの処理を実行させる。図9では、データ処理サーバ700,700a以外のデータ処理サーバの図示を省略している。実行制御サーバ100は、各文字列に関するワードカウントの結果(Reduce結果531,532,・・・に相当)をデータ処理サーバ700,700a,・・・から受信する。
(ステップST9)実行制御サーバ100は、ワードカウントの結果を結果登録サーバ400に送信する。結果登録サーバ400は、受信したワードカウントの結果を入力データ識別子に対応付けて、結果情報記憶部610に記憶されたReduce結果テーブル611に登録する。
(ステップST10)実行制御サーバ100は、ワードカウントの結果をクライアント30に応答する。
このように、第2の実施の形態の分散処理システムでは、MapReduceを実行する前に、処理組立サーバ300が処理の組立を行う。処理の組立は、分析サーバ200の分析結果に応じた方法で行われる。次に、ステップST3の分析処理の手順を説明する。
図10は、第2の実施の形態の分析処理の例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
(ステップS11)分析部210は、入力情報記憶部510を参照して、処理対象の期間として指定された期間のログデータ(今回の入力データ)を取得する。分析部210は、今回の入力データの入力データ識別子を取得する。分析部210は、指定された期間の最も早い日付と最も遅い日付とをハイフン“−”で結合し、更にその最後にハイフン“−”と“Reduce”の文字列を結合することで、当該入力データ識別子を得る。
(ステップS12)分析部210は、結果情報記憶部610に記憶されたReduce結果テーブル611から過去に処理された入力データの入力データ識別子の一覧を取得する。
(ステップS13)分析部210は、ステップS11で得た今回の入力データの入力データ識別子と、ステップS12で得た入力データ識別子の一覧とを照合して、今回のワードカウントの結果を得るために利用可能な過去の処理(Reduce)結果を検索する。具体的には、分析部210は、今回の入力データの入力データ識別子で示される期間(以下、「今回の入力データの期間」と呼ぶことがある)と重複する期間をもつ過去の処理結果を検索する。複数の処理結果が検索された場合には、その中で重複する期間が最も長いものを選択する。ここで検索された処理結果を、今回のワードカウントの結果を得るために利用する「前回の処理結果」と呼ぶこととする。また、当該「前回の処理結果」を得るために過去に処理された入力データを「前回の入力データ」と呼ぶこととする。「前回の入力データ」は、本例では「前回の処理結果」に対応する入力データ識別子が示す期間(以下、「前回の入力データの期間」と呼ぶことがある)のログデータである。なお、「前回の処理結果」を検索できない場合は、ステップS14をスキップして分析処理を終了する。
(ステップS14)分析部210は、前回の入力データおよび今回の入力データから次の3種類のデータを抽出する。第1のデータは、「前回だけに出現する入力データ」である。「前回だけに出現する入力データ」は、前回の入力データの期間には含まれるが今回の入力データの期間には含まれない期間のログデータである。第2のデータは、「重複する入力データ」である。「重複する入力データ」は、前回の入力データの期間および今回の入力データの期間の両方の期間に含まれる期間のログデータである。第3のデータは、「今回だけに出現する入力データ」である。「今回だけに出現する入力データ」は、前回の入力データの期間には含まれないが今回の入力データの期間には含まれる期間のログデータである。
このようにして、分析部210は、入力データを分析する。なお、分析部210は、ステップS11で得た入力データ識別子を実行制御サーバ100に送信しておいてもよい。その場合、例えば、実行制御サーバ100は、データ処理サーバ700,700a,・・・から、今回の入力データに対するReduce結果を、当該入力データ識別子とともに結果登録サーバ400に送信する。すると、結果登録サーバ400は、当該入力データ識別子に対応付けてReduce結果を結果情報記憶部610に登録できる。
図11は、第2の実施の形態の分析処理の結果の例を示す図である。図11の例では、今回の入力データD10は、5月2日〜5月6日のログデータ511b,511c,511d,511e,511fの集合である(各ログデータに含まれるレコードの集合ということもできる)。前回の入力データD20は、5月1日〜5月5日のログデータ511a,511b,511c,511d,511eの集合である(各ログデータに含まれるレコードの集合ということもできる)。
この場合、前回だけに出現する入力データP1は、1日のログデータ511aである。重複する入力データP2は、2日〜5日のログデータ511b,511c,511d,511eである。今回だけに出現する入力データP3は、6日のログデータ511fである。
ここで、処理組立部310は、図9のステップST6においてMapReduceを組み立てる。このとき、入力データの全体に対してMapReduceを実行する場合には、図7で説明した手順を組み立てる。一方、処理組立部310は、図11のように区分されたデータに対しては、図7で説明した手順とは異なった手順を組み立てる。次に、図11のように区分されたデータに対する組立処理の手順を説明する。
図12は、第2の実施の形態の分散処理制御の例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
(ステップS21)処理組立部310は、前回だけに出現する入力データP1を入力としたMap処理を作成する。
(ステップS22)処理組立部310は、ステップS21のMap処理の結果および前回の入力データD2に対応する前回の処理結果を入力とした逆Reduce処理を作成する。ここで、逆Reduce処理とは、前回の処理結果から前回だけに出現する入力データP1の影響を除去する処理である。
(ステップS23)処理組立部310は、今回だけに出現する入力データP3を入力としたMap処理を作成する。
(ステップS24)処理組立部310は、ステップS22の逆Reduce処理の結果およびステップS23のMap処理の結果を入力としたReduce処理を作成する。
このようにして、処理組立部310はMapReduceを組み立てる。ここで、ステップS21で作成したMap処理およびステップS23で作成したMap処理は並列に実行するように組み立てる。ただし、ステップS22で作成した逆Reduce処理およびステップS23で作成したMap処理を並列に実行するように組み立ててもよい。
実行制御部110は、処理組立部310が組み立てたMap処理、逆Reduce処理およびReduce処理をデータ処理サーバ700,700a,・・・に割り当てる。ただし、ステップS23をステップS21の前に実行してもよい。
次に、このようにして組み立てられたワードカウントに係るMap処理、逆Reduce処理およびReduce処理の入出力を具体的に説明する。ここで、以下では、今回の入力データD10に対する処理結果を得るために前回の入力データD20を利用するものとする。
図13は、第2の実施の形態の分散処理の例を示す図である。以下、図13に示す処理をステップ番号に沿って説明する。
(ステップS31)データ処理部710,710a,・・・は、前回だけに出現する入力データP1に対するMap処理を実行し、前回だけに出現する入力データP1に対応するMap結果P1aを生成する。データ処理部710,710a,・・・には、各自がMap処理の対象とする入力データの範囲が実行制御部110により与えられる。本例では、入力データを日付単位で区切って1つのMap処理の処理単位とする。ここでは、前回だけに出現する入力データP1は、1日のログデータ511aである。したがって、この場合、当該ステップS31のMap処理を割り当てられるのは例えば1つのデータ処理部である。ただし、当該1日のログデータ511aを時間単位などに更に分割して複数のデータ処理部にMap処理を割り当ててもよい。そうすれば、当該Map処理を高速に行える。Map結果P1aは、1日のログデータ511aに対する1日のMap結果512aとなる。
(ステップS31a)データ処理部710,710a,・・・は、今回だけに出現する入力データP3に対するMap処理を実行し、今回だけに出現する入力データP3に対応するMap結果P3aを生成する。ここでは、今回だけに出現する入力データP3は、6日のログデータ511fである。したがって、この場合、ステップS31のMap処理と同様に、何れか1つのデータ処理部でMap処理を実行してもよいし、6日のログデータ511fを時間単位などに更に分割して複数のデータ処理部でMap処理を実行してもよい。Map結果P3aは、6日のログデータ511fに対する6日のMap結果512fとなる。なお、ステップS31,S31aは並列に実行可能である。例えば、ステップS31で用いるデータ処理サーバ以外のデータ処理サーバを用いて当該ステップS31aを実行することで、ステップS31,31aを並列実行する。
(ステップS32)データ処理部710,710a,・・・は、Map結果P1aに対してshuffle&sort処理を実行する。データ処理部710,710a,・・・は、結果情報記憶部610から前回の処理結果を取得し、当該shuffle&sort処理結果を用いて逆Reduce処理を実行し、逆Reduce結果612を生成する。ここでは、前回の処理結果は、前回の入力データD2に対応する前回のReduce結果530である。例えば、1日のMap結果512aはキー・バリュー・ペア<apple,3>および<orange,4>を含む。前回の処理結果(前回のReduce結果530)はキー・バリュー・ペア<apple,19>および<orange,12>を含む。この場合、例えば、データ処理部710は、キー“apple”に関して逆Reduce処理を行う。具体的には、前回の処理結果<apple,19>から<apple,3>を差し引いてキー・バリュー・ペア<apple,16>を生成する。また、例えば、データ処理部710aは、キー“orange”に関して逆Reduce処理を行う。具体的には、前回の処理結果<orange,12>から<orange,4>を差し引いてキー・バリュー・ペア<orange,8>を生成する。逆Reduce結果612は、重複する入力データP2に対応するReduce結果に等しい。
(ステップS33)データ処理部710,710a,・・・は、Map結果P3aに対してshuffle&sort処理を実行する。データ処理部710,710a,・・・は、逆Reduce結果612および当該shuffle&sort処理結果を用いてReduce処理を実行し、Reduce結果613を生成する。例えば、逆Reduce結果612はキー・バリュー・ペア<apple,16>および<orange,8>を含む。Map結果P3aはキー・バリュー・ペア<apple,9>および<orange,5>を含む。この場合、例えば、データ処理部710は、キー“apple”に関してReduce処理を行う。具体的には、逆Reduce結果<apple,16>に<apple,9>を加えてキー・バリュー・ペア<apple,25>を生成する。また、例えば、データ処理部710aは、キー“orange”に関してReduce処理を行う。具体的には、逆Reduce結果<orange,8>に<orange,5>を加えてキー・バリュー・ペア<orange,13>を生成する。
このようにして、前回の入力データD20を用いて、今回の入力データD10に対するMapReduceの結果を得る。
ここで、ステップS32では、Map結果P1aのみを処理対象とする。例えば、Map結果P1a,P3aの区別は、Map結果を何れのデータ処理サーバから取得したかにより行える。前回だけに出現する入力データP1に対するMap処理を割り当てたデータ処理サーバから取得したMap結果はMap結果P1aである。今回だけに出現する入力データP3に対するMap処理を割り当てたデータ処理サーバから取得したMap結果はMap結果P3aである。あるいは、データ処理サーバ側で、逆Reduce処理対象となるMap結果P1aのキー・バリュー・ペアのバリューに、所定のフラグを付加してもよい。
なお、ステップS31,S31aを並列に実行するものとしたが、ステップS31aをステップS32と並列に実行してもよい。また、ステップS31,S31aを直列に実行してもよい。直列に実行する場合、ステップS31,S31aの実行順序は任意に決定できる。すなわち、ステップS31を先に実行してもよいし、ステップS31aを先に実行してもよい。
また、図11では、今回の入力データD10および前回の入力データD20に対する分析処理の結果、3つにデータを区分できる場合を例示した。これは、分析結果のうちの1パターンである。分析結果のパターンとしてはこの場合も含めて次の場合が考えられる。
(1)「前回の処理結果」を検索できなかった場合。
(2)「前回の処理結果」を検索でき、重複する入力データP2および今回だけに出現する入力データP3のみが得られる場合(前回だけに出現する入力データP1は得られない)。例えば、前回の入力データが5月1日〜5月5日のログデータであるのに対して、今回の入力データが5月1日〜5月6日のログデータである場合である。
(3)「前回の処理結果」を検索でき、前回だけに出現する入力データP1および重複する入力データP2のみが得られる場合(今回だけに出現する入力データP3は得られない)。例えば、前回の入力データが5月1日〜5月5日のログデータであるのに対して、今回の入力データが5月2日〜5月5日のログデータである場合である。
(4)「前回の処理結果」を検索でき、前回だけに出現する入力データP1、重複する入力データP2および今回だけに出現する入力データP3が得られる場合。図11で説明した場合である。
分析結果が(1)の場合は、今回の入力データの全体に対して、図5で説明したMapReduceを実行する。
分析結果が(2)の場合は、今回だけに出現する入力データP3に関してMap処理を実行し(ステップS31aに相当)、当該Map結果にshuffle&sort処理を実行して前回の処理結果に加えればよい(ステップS33に相当)。すなわち、ステップS31,S32を実行せず、前回のReduce結果530およびMap結果P3aをステップS33の入力とする。
分析結果が(3)の場合は、前回だけに出現する入力データP1に関してMap処理を実行し(ステップS31に相当)、当該Map結果にshuffle&sort処理を実行して前回の処理結果からその影響を除去すればよい(ステップS32に相当)。すなわち、ステップS31a,S33を実行せず、逆Reduce結果612がワードカウントの最終結果となる。
分析結果が(4)の場合は、図13で説明した通りである。
図14は、第2の実施の形態のワードカウントのコード例を示す図である。図14(A)は、Reduce処理のコード例を示している。図14(B)は、逆Reduce処理のコード例を示している。なお、各コード例は、プログラム言語としてJava(登録商標)を想定している。
図14(A)では、WordCount_Reduceクラスに、reduceメソッドが定義されている。reduceメソッドは、キーワードに対するカウント値の合計を示す変数sumに初期値“0”を代入し、キー・バリュー・ペアのバリューの値を順次加算していき、キーワードのカウント数を集計する操作である。
図14(B)では、WordCount_Reverse_Reduceクラスに、wordcount_reduceメソッドおよびsetSumメソッドが定義されている。wordcount_reduceメソッドは、キーワードに対するカウント値の合計を示す変数sumから、キー・バリュー・ペアのバリューの値を順次減算していくことで、過去の集計結果から差分の集計結果の影響を除去する操作である。setSumメソッドは、変数sumの初期値に前回Reduce結果の値を設定する操作である。
このような操作を定義することで、ワードカウントの処理に対する逆Reduce処理を行える。
以上で説明したように、第2の実施の形態の分散処理システムでは、今回の入力データD10に対するワードカウントを行う際に、今回の入力データD10と重複する前回の入力データD20に対応する前回の処理結果を検索する。そして、前回の入力データだけに出現する入力データP1に対するMap処理を実行し、当該Map処理の結果にshuffle&sort処理を実行する。そして、当該shuffle&sort処理の結果を用いて前回の処理結果から、前回の入力データだけに出現する入力データP1の影響を除去する。これにより、今回の入力データD10と前回の入力データD20とにずれがあっても、前回の処理結果を利用することができる。このため、過去の処理結果の利用可能性を向上できる。
なお、上記の例では、前回のReduce結果から前回だけに出現する入力データP1の影響を除去するために、前回だけに出現する入力データP1に対するMap処理を行って(ステップS31に相当)、Map結果P1aを取得するものとした。一方、このような方法に限らず、ステップS31を省く方法も考えられる。
具体的には、前回の入力データに対するMap結果を入力データ識別子に対応付けて保存しておいてもよい。今回の入力データのワードカウントを行う際に、前回だけに出現する入力データP1に対応するMap結果P1a(差分のMap結果)を抽出する。そして、Map結果P1aに対するshuffle&sort処理から開始するようにする。そのためのMap結果の保存例を以下に示す。
図15は、第2の実施の形態のMap結果テーブルの例を示す図である。Map結果テーブル614は、結果情報記憶部610に記憶される。例えば、結果登録部410は、データ処理部710,710a,・・・からMap結果を取得して、結果情報記憶部610にMap結果識別子とともに格納する。Map結果テーブル614は、Map結果識別子およびMap結果の項目を含む。
Map結果識別子の項目には、Map結果識別子が登録される。Map結果識別子は、Map結果を識別するための識別情報である。Map結果の項目には、Map結果が登録される。
ここで、例えば、入力データを日付単位に分割し、各日付単位にMap処理を行うようにすることで、各日付のレコードに対応するMap結果を得られる。このため、結果登録部410は、各Map結果のMap結果識別子に、各日付を示す情報を付与する。例えば、Map結果識別子を“2011/05/01−Map”とする。これは、2011年5月1日のログデータ511aに対応するMap結果512aである。
このように、前回の入力データに対するMap結果を保存しておけば、今回の入力データのワードカウントを行う際に、前回だけに出現する入力データP1に対するMap処理を省ける。すなわち、前回だけに出現する入力データP1に対応するMap結果P1aを抽出し、当該Map結果P1aに対するshuffle&sort処理から実行開始できる。
[第3の実施の形態]
以下、第3の実施の形態を説明する。前述の第2の実施の形態との相違点を主に説明し、共通する点の説明を省略する。
第2の実施の形態では、ワードカウントの処理を例示して説明した。ワードカウントでは、逆Reduce処理において、前回の処理結果の集計値から前回だけに出現するデータP1に対応する値を引き算することで、前回だけに出現するデータP1の影響を除去した。一方、引き算をする場合に限らず、逆Reduce処理を利用可能である。そこで、第3の実施の形態では、MapReduceによる他の処理に対して、逆Reduce処理を利用する場合を例示する。
ここで、第3の実施の形態の分散処理システムの全体構成は、図2で説明した第2の実施の形態の分散処理システムの全体構成と同様である。第3の実施の形態の分散処理システムに含まれる各サーバを第2の実施の形態と同様の名称・符号を用いて示す。当該各サーバのハードウェア例およびソフトウェア例は、図3,4で説明した第2の実施の形態の各サーバのハードウェア例およびソフトウェア例と同様である。第3の実施の形態の各サーバに含まれる構成を第2の実施の形態と同様の名称・符号を用いて示す。
第3の実施の形態の分散処理システムでは、電子商取引において、ユーザによる商品の評価値を受け付け、その評価値に基づいて当該ユーザへ勧める商品を抽出する。具体的には、当該ユーザと他のユーザとの間の商品ごとの評価値の相関から、当該ユーザが高評価を付けると予測される商品を抽出してお勧め商品とする。第3の実施の形態の分散処理システムは、多数のユーザおよび商品に係る大量の評価値データを分散処理することで、お勧め商品の抽出処理を高速に実行する。なお、以下では、第3の実施の形態の分散処理システムが出力する、各商品の各ユーザによる予測評価値の情報を、リコメンド情報と称することがある。
第3の実施の形態のECサーバ20は、ユーザの商品に対する評価値を受け付ける。ユーザは、例えばインターネットを介して通信可能な端末装置を操作して、ECサーバ20に商品ごとの評価値を送信できる。ECサーバ20は、入力された評価値をユーザの情報(例えば、ユーザ名)や評価値を受け付けた時間を示すタイムスタンプに対応付けて、入力情報管理サーバ500に格納する。
図16は、第3の実施の形態のMapReduceの例を示す図である。第3の実施の形態の分散処理システムでは、リコメンド情報を生成するまでに、第1,第2フェーズの2回のフェーズで、MapReduceを利用する。第1,第2フェーズは、データ処理サーバ700,700a,・・・により実行される。第1,第2フェーズの結果、ユーザ間の評価値の相関を得ることができる。ユーザ間の相関に基づいて、各ユーザが高評価すると予測される商品を抽出し、これをお勧め商品とする。
第1フェーズは、ステップS1a,S2a,S3aを含む。ステップS1aは、第1のMap処理である。ステップS1aでは、例えばCSV(Comma Separated Value)形式のデータが入力される。当該入力データには、ユーザ名、商品を示す情報、評価した日付、評価値が含まれる。ステップS1aでは、入力データに対して、キー・バリュー・ペアが生成される。具体的には、キーは商品を示す情報である。バリューは当該商品を評価したユーザ名、その評価値および評価した日付のセットである。
ステップS2aは、第1のshuffle&sort処理である。ステップS2aでは、ステップS1aの出力が入力される。ステップS2aでは、入力されたキー・バリュー・ペアをキーでソートして出力する。このとき、キーが同一のキー・バリュー・ペアが同一のデータ処理部に入力されるように出力する。
ステップS3aは、第1のReduce処理である。ステップS3aでは、ステップS2aの出力が入力となる。ステップS3aでは、入力されたデータをマージして新たなキー・バリュー・ペアを出力する。具体的には、キーは商品を示す情報である。バリューは商品ごとの全ユーザの評価値のセットである。
第2フェーズは、ステップS4,S5,S6を含む。ステップS4は、第2のMap処理である。ステップS4では、ステップS3aの出力が入力となる。ステップS4では、入力されたデータに基づいて、新たなキー・バリュー・ペアを出力する。具体的には、キーはあるユーザ名と別のユーザ名のセットである。バリューは当該各ユーザによる評価値のセットである。
ステップS5は、第2のshuffle&sort処理である。ステップS5では、ステップS4の出力が入力される。ステップS5では、入力されたキー・バリュー・ペアをキーでソートして出力する。
ステップS6は、第2のReduce処理である。ステップS6では、ステップS5の出力が入力となる。ステップS6では、入力されたキー・バリュー・ペアに基づいて、ユーザ間の相関係数を求め、これを評価の類似度Similarity(user1,user2)とする。例えば、ユーザ“Taro”および“Jiro”の類似度Similarity(T,J)(“T”は“Taro”を、“J”は“Jiro”を示す)は、次の(1)式により求めることができる。
Figure 2013140510
ここで、Cov(T,J)は、ユーザ“Taro”および“Jiro”の評価値の共分散である。σTは“Taro”の評価値の標準偏差であり、σJは“Jiro”の評価値の標準偏差である。また、Tiは“Taro”の商品“Item”に対する評価値であり、Jiは“Jiro”の“Item”に対する評価値である。T,Jの上付きバーはそれぞれTi,Jiの相加平均を示す。
このように、第1,第2フェーズを実行して、各ユーザ間の相関係数を算出する。各ユーザ間の相関係数を用いて、例えば、“Taro”のある商品“Item”に対する予測評価値Rate(T,item)(“T”は“Taro”を示す)を次の(2)式により求めることができる。
Figure 2013140510
ここで、Σは、当該“Item”に対して計算対象の期間内に評価を行った全ユーザについての和をとるものである。“user”の上付きバーは当該期間内の全ユーザによる評価値の相加平均を示す。
図17は、第3の実施の形態の評価値テーブルの例を示す図である。評価値テーブル513は、入力情報記憶部510に記憶される。評価値テーブル513は、日付、商品ID(IDentifier)および評価値の項目を含む。
日付の項目には、評価値が入力された日付が登録される。商品IDの項目には、評価対象の商品を示す情報が登録される。評価値の項目には、各ユーザによる評価値が登録される。例えば、2011年3月1日に、商品ID“Item1”の商品に対して、ユーザ“Taro”が入力した評価値“1”が登録されている。評価値が大きい程、高評価であるとする。
なお、入力情報記憶部510に登録されるデータは、同様の項目を含めばCSV形式など他のデータ形式でもよい。
図18は、第3の実施の形態の第1のMapの入出力例である。データD11は、ステップS1a(第1のMap処理)の入力データである。データD11は、評価値テーブル513から管理者が指定した期間の情報をCSV形式で抽出したものである。データD11には、ユーザ名、商品ID、評価日付および評価値の順で情報が記述されている。
データD12は、ステップS1aの出力データである。データD12は、データD11に含まれる商品IDをキーとしたキー・バリュー・ペアを含む。バリューは、ユーザ名、評価日付および評価値の各値を“−”(ハイフン)で結んだものである。
図19は、第3の実施の形態の第1のshuffle&sortの入出力例である。データD12は、ステップS1aの出力データであり、ステップS2a(第1のshuffle&sort処理)の入力データである。データD13は、ステップS2aの出力データである。
データD13は、データD12のキー・バリュー・ペアをキー(商品ID)でソートしたものである。
図20は、第3の実施の形態の第1のReduceの入出力例である。データD13は、ステップS2aの出力データであり、ステップS3a(第1のReduce処理)の入力データである。
データD14は、ステップS3aの出力データである。データD14は、データD13のキー・バリュー・ペアをキー(商品ID)でマージしたものであり、商品IDに対する全ユーザの評価値を集約したものである。例えば、キー(商品ID)に対するバリューとして、ユーザと評価値とのセットが評価を行ったユーザ分だけ抽出される。
なお、同一ユーザが同一商品に複数回評価を行っている場合には、新しい方の評価値を採用する。
図21は、第3の実施の形態の第2のMapの入出力例である。データD21は、ステップS3aの出力データ(データD14と同一)であり、ステップS4(第2のMap処理)の入力データである。データD22は、ステップS4の出力データである。
データD22は、データD21に基づいて生成された新たなキー・バリュー・ペアを含む。具体的には、データD21の各行について、評価したユーザの組をキーとして抽出し、抽出したユーザによる評価値の組をバリューとしたものである。データD22では、ユーザ名を“−”(ハイフン)で結んだ値をキーとしている(例えば、“Taro−Jiro”)。また、各ユーザによる評価値を“,”(カンマ)で区切った値をバリューとしている(例えば、“(1,4)”)。
図22は、第3の実施の形態の第2のshuffle&sortの入出力例である。データD22は、ステップS4の出力データであり、ステップS5(第2のshuffle&sort処理)の入力データである。
データD23は、ステップS5の出力データである。データD23は、データD22のキー・バリューをキー(ユーザ名の組)でソートしたものである。
図23は、第3の実施の形態の第2のReduceの入出力例である。データD23は、ステップS5の出力データであり、ステップS6(第2のReduce処理)の入力データである。データD24は、ステップS6の出力データであり、データD23に基づいて生成されるデータである。
データD24の各行は、データD23に基づいて(1)式により算出されたユーザ間の類似度(相関係数)である。
データD25は、ユーザ間の類似度を用いて(2)式により算出された各ユーザの各商品に対する予測評価値の一覧であり、お勧め商品を抽出するためのリコメンド情報である。例えば、ユーザ“Taro”に対するお勧め商品を3つ抽出したい場合には、データD25からRate(Taro,Item)のうち、大きい方から3つ選択して、該当する商品を特定すればよい。
図24は、第3の実施の形態のReduce結果テーブルの例を示す図である。Reduce結果テーブル615は、結果情報記憶部610に記憶される。Reduce結果テーブル611は、入力データ識別子およびReduce結果の項目を含む。各項目に登録される情報は、図8で説明したReduce結果テーブル611と同様である。
ここで、図18〜23では今回の入力データの全体について、第1,第2フェーズのMapReduceを行ってリコメンド情報を取得する方法を例示した。第3の実施の形態の分散処理システムでは、過去に取得済のリコメンド情報を検索し、今回の入力データに対するリコメンド情報の取得に利用することができる。
第3の実施の形態の分散処理の流れは、図9で説明した第2の実施の形態の分散処理の流れと同様である。また、第3の実施の形態の分析処理の手順は、図10で説明した第2の実施の形態の分散処理の手順と同様である。更に、第3の実施の形態の組立処理の手順は、図12で説明した第2の実施の形態の組立処理の手順と同様である。
図25は、第3の実施の形態の分析処理の結果の例を示す図である。図25の例では、今回の入力データD10aは、3月2日〜3月6日の評価値のデータの集合である。前回の入力データD20aは、3月1日〜3月5日の評価値のデータの集合である。
この場合、前回だけに出現する入力データP1は、1日の評価値データである。重複する入力データP2は、2日〜5日の評価値データである。今回だけに出現する入力データP3は、6日の評価値データである。
処理組立部310は、当該分析結果に基づいてMapReduceを組み立てる。このとき、入力データの全体に対してMapReduceを実行する場合には、図18〜23で説明した手順を組み立てる。一方、処理組立部310は、図25のように区分されたデータに対しては、図18〜23で説明した手順とは異なった手順を組み立てる。次に、処理組立部310により組み立てられた分散処理の手順の具体例を説明する。
図26は、第3の実施の形態の分散処理の例を示す図である。以下、図26に示す処理をステップ番号に沿って説明する。
(ステップS41)データ処理部710,710a,・・・は、前回だけに出現する入力データP1に対するMap処理を実行し、Map結果P1aを生成する。本例では、入力データを日付単位で区切って1つのMap処理の処理単位とする。ここでは、前回だけに出現する入力データP1は、1日の評価値データである。したがって、この場合、当該ステップS41のMap処理を割り当てられるのは例えば1つのデータ処理部である。ただし、当該1日の評価値データを更に分割して複数のデータ処理部にMap処理を割り当ててもよい。そうすれば、当該Map処理を高速に行える。
(ステップS42)データ処理部710,710a,・・・は、Map結果P1aに対してshuffle&sort処理を実行する。データ処理部710,710a,・・・は、結果情報記憶部610から前回の処理結果を取得し、当該shuffle&sort処理結果を用いて逆Reduce処理を実行し、逆Reduce結果616を生成する。ここでは、前回の処理結果は、前回の入力データ20aに対応する前回Reduce結果540である。例えば、Map結果P1aは、キー・バリュー・ペア<Item1,Taro−3/1−1>および<Item2,Jiro−3/1−2>を含む。前回の処理結果(前回Reduce結果540)は、キー・バリュー・ペア<Item1,(Taro−3/1−1,Jiro−3/2−4,・・・)>および<Item2,(Jiro−3/1−2,Kenji−3/2−4,・・・)>を含む。この場合、例えば、データ処理部710は、キー“Item1”に関して逆Redude処理を行う。具体的には、前回の処理結果<Item1,(Taro−3/1−1,Jiro−3/2−4,・・・)>から“Taro−3/1−1”を除去して、キー・バリュー・ペア<Item1,(Jiro−3/2−4,・・・)>を生成する。また、例えば、データ処理部710aは、キー“Item2”に関して逆Reduce処理を行う。具体的には、前回の処理結果<Item2,(Jiro−3/1−2,Kenji−3/2−4,・・・)>から“Jiro−3/1−2”を除去して、キー・バリュー・ペア<Item2,(Kenji−3/2−4,・・・)>を生成する。逆Reduce結果616は、重複する入力データP2に対応するReduce結果に等しい。
図27は、第3の実施の形態の分散処理の例(続き)を示す図である。以下、図27に示す処理をステップ番号に沿って説明する。
(ステップS41a)データ処理部710,710a,・・・は、今回だけに出現する入力データP3に対するMap処理を実行し、Map結果P3aを生成する。ここでは、今回だけに出現する入力データP3は、6日の評価値データである。したがって、この場合、ステップS41のMap処理と同様に、何れか1つのデータ処理部でMap処理を実行してもよいし、6日の評価値データを更に分割して複数のデータ処理部でMap処理を実行してもよい。なお、ステップS41,S41aは並列に実行可能である。例えば、ステップS41で用いたデータ処理サーバ以外のデータ処理サーバを用いて当該ステップS41aを実行することで、ステップS41,S41aを並列実行する。
(ステップS43)データ処理部710,710a,・・・は、Map結果P3aに対してshuffle&sort処理を実行する。データ処理部710,710a,・・・は、逆Reduce結果616および当該shuffle&sort処理結果を用いてReduce処理を実行し、Reduce結果617を生成する。例えば、逆Reduce結果616はキー・バリュー・ペア<Item1,(Jiro−3/2−4,・・・)>を含む。Map結果P3aはキー・バリュー・ペア<Item1,Taro−3/6−5>および<Item3,Kenji−3/6−5>を含む。この場合、例えば、データ処理部710は、キー“Item1”に関してReduce処理を行う。具体的には、逆Reduce結果<Item1,(Jiro−3/2−4,・・・)>に<Item1,Taro−3/6−5>を追加してキー・バリュー・ペア<Item1,(Taro−3/6−5,Jiro−3/2−4,・・・)>を生成する。また、例えば、データ処理部710aは、キー“Item3”に関してReduce処理を行う。具体的には、キー・バリュー・ペア<Item3,(Kenji−3/6−5)>を新たに生成する。
このようにして、前回の入力データD20aを用いて、今回の入力データD10aに対するMapReduceの結果を得る。
なお、ステップS41,S41aを並列に実行するものとしたが、ステップS41aをステップS42と並列に実行してもよい。また、ステップS41,S41aを直列に実行してもよい。直列に実行する場合、ステップS41,S41aの実行順序は任意に決定できる。すなわち、ステップS41を先に実行してもよいし、ステップS41aを先に実行してもよい。
図28は、第3の実施の形態の逆Reduceのコード例を示す図である。第3の実施の形態の逆Reduceのコードには、CollaborativeFilterring_phase1_Reverse_Reduceクラスに、reduceメソッドが定義されている。当該reduceメソッドは、前回の処理結果から、Map結果P1aに含まれるキー・バリュー・ペアのバリューに設定されたユーザ名および日付が同じデータを削除する操作である。例えば、図26のステップS42の例でいえば、前回Reduce結果540のキー・バリュー・ペア<Item1,(Taro−3/1−1,Jiro−3/2−4,・・・)>に含まれる“Taro−3/1−1”と、Map結果P1aのキー・バリュー・ペア<Item1,Taro−3/1−1>に含まれる“Taro−3/1−1”は、同一のユーザ名および日付を含む。よって、前回Reduce結果540の当該キー・バリュー・ペアから“Taro−3/1−1”を削除する。
このような操作を定義することで、第1フェーズにおける逆Reduce処理を行える。
図29は、第3の実施の形態のReduceのコード例を示す図である。第3の実施の形態のReduceのコードには、CollaborativeFiltering_phase1_Reduceクラスに、reduceメソッドが定義されている。当該reduceメソッドは、逆Reduce結果616にMap結果P3aに含まれるキー・バリュー・ペアのバリューに設定されたユーザ名および日付を設定する操作である。例えば、図27のステップS43の例でいえば、逆Reduce結果616のキー・バリュー・ペア<Item1,(Jiro−3/2−4,・・・)>に対して、Map結果P3aのキー・バリュー・ペア<Item1,Taro−3/6−5>に含まれる“Taro−3/6−5”を追加する。なお、逆Reduce結果616のキー・バリュー・ペアに、同じユーザ名で日付の古いものがある場合は、削除する。
このような操作を定義することで、逆Reduce結果616のキー・バリュー・ペアにMap結果P3aに含まれるキー・バリュー・ペアのバリューを追加するReduce処理を行える。
このように、第3の実施の形態の分散処理システムにおいても、逆Reduceを利用して、過去の処理結果の利用可能性を向上できる。
なお、以上の説明では、第1フェーズにおいて逆Reduceを行う例を示したが、第2フェーズに含まれる集計処理でも逆Reduceを利用してもよい。
例えば、式(1)では標準偏差の算出が含まれる。標準偏差は分散の平方根であり、分散は次の式(3)で求めることができる。
Figure 2013140510
式(3)には、各要素xiの二乗平均(xiの二乗総和を要素数nで除したもの)およびxiの平均値(xiの総和を要素数nで除したもの)の二乗が含まれている。ここで、xiの二乗平均の計算のうち、xiの二乗総和を算出する際に逆Reduceを利用することもできる。また、xiの平均値の二乗の計算のうち、xiの総和を算出する際に逆Reduceを利用することもできる。
[第4の実施の形態]
以下、第4の実施の形態を説明する。前述の第2,第3の実施の形態との相違点を主に説明し、共通する点の説明を省略する。
第2,第3の実施の形態の分散処理システムでは、逆Reduceによって過去の処理結果の利用可能性を向上できる。しかしながら、逆Reduceを用いる場合の計算量が逆Reduceを用いない場合の計算量を上回る場合も考えられる。この場合は逆Reduceを用いずに処理を行うことが好ましい。そこで、第4の実施の形態では、逆Reduceを用いる場合の計算量と逆Reduceを用いない場合の計算量とを比較し、比較結果を基に本番処理の実行方法を決定する機能を提供する。
ここで、第4の実施の形態の分散処理システムの全体構成は、図2で説明した第2の実施の形態の分散処理システムの全体構成と同様である。第4の実施の形態の分散処理システムに含まれる各サーバを第2の実施の形態と同様の名称・符号を用いて示す。当該各サーバのハードウェア例およびソフトウェア例は、図3,4で説明した第2の実施の形態の各サーバのハードウェア例およびソフトウェア例と同様である。第4の実施の形態の各サーバに含まれる構成を第2の実施の形態と同様の名称・符号を用いて示す。
図30は、第4の実施の形態の分散処理の例を示すフローチャートである。以下、図30に示す処理をステップ番号に沿って説明する。
(ステップS51)実行制御部110は、クライアント30から処理依頼を受信する。
(ステップS52)実行制御部110は、分析部210に入力データを分析させ、処理組立部310に分析結果に応じた組立処理を行わせる。ここで、分析により、前回だけに出現する入力データP1、重複する入力データP2および今回だけに出現する入力データP3が得られているとする。この場合、組立処理の結果、逆Reduceを用いた処理が作成される。実行制御部110は、逆Reduceを用いる場合の計算量と逆Reduceを用いない場合の計算量とを比較する。例えば、計算量は、各データに含まれるレコードの数により比較できる。具体的には、前回だけに出現する入力データP1に含まれるレコードの数が重複する入力データP2に含まれるレコードの数以上の場合は、逆Reduceを用いた場合の計算量が逆Reduceを用いない場合の計算量を上回ると判断する。一方、前回だけに出現する入力データP1に含まれるレコードの数が重複する入力データP2に含まれるレコードの数よりも小さい場合は、逆Reduceを用いた場合の計算量が逆Reduceを用いない場合の計算量を下回ると判断する。
(ステップS53)実行制御部110は、本番のMapReduceの方法を決定する。具体的には、逆Reduceを用いる場合の計算量が逆Reduceを用いない場合の計算量を下回る場合、逆Reduceを用いてMapReduceを実行すると決定する。一方、逆Reduceを用いる場合の計算量が逆Reduceを用いない場合の計算量を上回る場合、逆Reduceを用いずに、今回の入力データの全体に対してMapReduceを実行すると決定する。
(ステップS54)実行制御部110は、ステップS53で決定した方法に基づいて、データ処理部710,710a,・・・にMap処理およびReduce処理(逆Reduceを用いる場合は更に逆Reduce処理)を割り当て、MapReduceを実行する。
このようにして、実行制御部110は、計算量の小さい方法を選択してMapReduceを実行する。これにより、当該処理の高速化を図れる。
なお、ステップS52の判定では、所定割合の入力データを用いてMapReduceを試行して、処理時間を計測して、逆Reduceの適用による高速化の可否を求めてもよい。具体的には、前回だけに出現する入力データP1、重複する入力データP2および今回だけに出現する入力データP3から同じ割合ずつレコードを抽出する。そして、逆Reduceを用いる場合と、逆Reduceを用いない場合とで、MapReduceの処理時間(計算量に相当)を比較する。
逆Reduceを用いる場合の全体の処理時間T1は、例えば、次のように表せる。
T1=Max(前回分Map処理時間+前回分逆Reduce処理時間,今回分Map処理時間)+今回分Reduce処理時間
ここで、Max演算子は、括弧内の要素のうち、最大のものを選択することを表す。前回分Map処理時間は、前回だけに出現する入力データP1に対するMap処理の所要時間である。前回分逆Reduce処理時間は、前回分Map処理の結果に対する逆Reduce処理の所要時間である。今回分Map処理時間は、今回だけに出現する入力データP3に対するMap処理の所要時間である。今回分Reduce処理時間は、今回分Map処理の結果に対するReduce処理の所要時間である。なお、逆ReduceやReduceの処理時間が非常に小さいと考えて、これらの処理時間を無視してもよい。その場合、逆Reduceを用いる場合の全体の処理時間T1aをT1a=(前回分Map処理時間,今回分Map処理時間)と表すこともできる。
逆Reduceを用いない場合の全体の処理時間T2は、例えば、次のように表せる。
T2=Max(重複分Map処理時間,今回分Map処理時間)+Max(重複分Reduce処理時間,今回分Reduce処理時間)
ここで、重複分Map処理時間は重複する入力データP2に対するMap処理の所要時間である。重複分Reduce処理時間は、重複分Map処理の結果に対するReduce処理の所要時間である。
そして、ステップS53では、T1(あるいはT1a)とT2との大小関係に応じて、いずれの方法を用いて処理するか決定する。具体的には、T1(あるいはT1a)がT2よりも小さければ、逆Reduceを用いて処理を行う。T1(あるいはT1a)がT2以上であれば、逆Reduceを用いずに処理を行う。
このようにして、両方の処理の計算量の大小を比較することもできる。
なお、データ処理サーバ700,700a,・・・の機能はコンピュータに所定のプログラムを実行させることで実現できる。当該プログラムは、コンピュータ読み取り可能な可搬型の記録媒体に記録しておくことができる。当該記録媒体には、記録媒体13と同様に種々の媒体を用いることができる。当該プログラムを流通させるには、例えば、そのプログラムが記録された記録媒体を配布する。または、そのプログラムをサーバコンピュータに格納しておき、ネットワーク経由でデータ処理サーバ700,700a,・・・に転送する。データ処理サーバ700,700a,・・・は、例えば、記録媒体に記録されたプログラムまたはネットワークから取得したプログラムを、自装置の不揮発性の記憶媒体に格納する。そして、当該不揮発性の記憶媒体からプログラムを読み取り実行する。ただし、データ処理サーバ700,700a,・・・は、取得したプログラムを、不揮発性の記憶媒体に格納せずに逐次、RAMに展開して実行することも可能である。
1 記憶装置
2,3 情報処理装置
2a 検索手段
3a データ処理手段
4,4a ノード
D1 第1の入力データの集合
D2 第2の入力データの集合

Claims (7)

  1. 複数のノードを用いて入力データに対して第1の処理を行い、第1の処理の結果に対して第2の処理を行うシステムで実行されるデータ処理方法であって、
    第1の入力データの集合が指定されると、過去に処理した入力データの集合に対応する第2の処理の結果を記憶する記憶装置から、前記第1の入力データの集合と重複する第2の入力データの集合に対応する第2の処理の結果を検索し、
    前記第2の入力データの集合に含まれ前記第1の入力データの集合に含まれない差分の入力データに対応する第1の処理の結果を取得し、
    前記差分の入力データに対応する第1の処理の結果を用いて、前記第2の入力データの集合に対応する第2の処理の結果から前記差分の入力データの影響を除去することで、前記第1の入力データの集合に対応する第2の処理の結果を生成する、
    データ処理方法。
  2. 複数のノードを用いて入力データに対して第1の処理を行い、第1の処理の結果に対して第2の処理を行うシステムで実行されるデータ処理方法であって、
    第1の入力データの集合が指定されると、過去に処理した入力データの集合に対応する第2の処理の結果を記憶する記憶装置から、前記第1の入力データの集合と重複する第2の入力データの集合に対応する第2の処理の結果を検索し、
    前記第1の入力データの集合に含まれ前記第2の入力データの集合に含まれない差分の入力データに対応する第1の処理の結果を取得し、
    前記第2の入力データの集合に対応する第2の処理の結果に、前記差分の入力データに対応する第1の処理の結果を合成することで、前記第1の入力データの集合に対応する第2の処理の結果を生成する、
    データ処理方法。
  3. 第1の入力データの集合と重複する過去に処理した入力データの集合が複数あるとき、複数の入力データの集合に対応する複数の第2の処理の結果の中から、前記第1の入力データの集合との重複範囲が大きい入力データの集合に対応する第2の処理の結果を選択する、請求項1または2記載のデータ処理方法。
  4. 前記差分の入力データに対応する第1の処理の結果を前記第2の入力データの集合に対応する第2の処理の結果に適用することで前記第1の入力データの集合に対応する第2の処理の結果を生成する第1の生成方法の計算量と、前記第1の入力データの集合の全体に対して前記第1の処理および前記第2の処理を行う第2の生成方法の計算量と、を予測し、
    前記第1の生成方法の計算量が前記第2の生成方法の計算量よりも小さいときに、前記第1の生成方法に従って前記第1の入力データの集合に対応する第2の処理の結果を生成する、
    請求項1乃至3の何れか一項に記載のデータ処理方法。
  5. 前記差分の入力データの影響を除去する処理は、前記第2の入力データの集合に対応する第2の処理の結果の値から前記差分の入力データに対応する第1の処理の結果の値を減算する処理、または、前記第2の入力データの集合に対応する第2の処理の結果に含まれる複数のデータ要素から前記差分の入力データに対応する第1の処理の結果に含まれるデータ要素を削除する処理、である請求項1乃至4の何れか一項に記載のデータ処理方法。
  6. 複数のノードを用いて入力データに対して第1の処理を行い、第1の処理の結果に対して第2の処理を行う分散処理システムであって、
    過去に処理した入力データの集合に対応する第2の処理の結果を記憶する記憶装置と、
    第1の入力データの集合が指定されると、前記記憶装置から前記第1の入力データの集合と重複する第2の入力データの集合に対応する第2の処理の結果を検索する検索手段と、
    前記第2の入力データの集合に含まれ前記第1の入力データの集合に含まれない差分の入力データに対応する第1の処理の結果を取得し、前記差分の入力データに対応する第1の処理の結果を用いて、前記第2の入力データの集合に対応する第2の処理の結果から前記差分の入力データの影響を除去することで、前記第1の入力データの集合に対応する第2の処理の結果を生成するデータ処理手段と、
    を有する分散処理システム。
  7. 入力データに対して複数のノードを用いて行われた第1の処理の結果に対して第2の処理を行うためのプログラムであって、コンピュータに、
    第1の入力データの集合が指定されると、過去に処理した入力データの集合に対応する第2の処理の結果を記憶する記憶装置から、前記第1の入力データの集合と重複する第2の入力データの集合に対応する第2の処理の結果を取得し、
    前記第2の入力データの集合に含まれ前記第1の入力データの集合に含まれない差分の入力データに対応する第1の処理の結果を取得し、
    前記差分の入力データに対応する第1の処理の結果を用いて、前記第2の入力データの集合に対応する第2の処理の結果から前記差分の入力データの影響を除去することで、前記第1の入力データの集合に対応する第2の処理の結果を生成する、
    処理を実行させるプログラム。
JP2012000598A 2012-01-05 2012-01-05 データ処理方法、分散処理システムおよびプログラム Active JP5919825B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012000598A JP5919825B2 (ja) 2012-01-05 2012-01-05 データ処理方法、分散処理システムおよびプログラム
US13/717,997 US9135351B2 (en) 2012-01-05 2012-12-18 Data processing method and distributed processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012000598A JP5919825B2 (ja) 2012-01-05 2012-01-05 データ処理方法、分散処理システムおよびプログラム

Publications (2)

Publication Number Publication Date
JP2013140510A true JP2013140510A (ja) 2013-07-18
JP5919825B2 JP5919825B2 (ja) 2016-05-18

Family

ID=48744688

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012000598A Active JP5919825B2 (ja) 2012-01-05 2012-01-05 データ処理方法、分散処理システムおよびプログラム

Country Status (2)

Country Link
US (1) US9135351B2 (ja)
JP (1) JP5919825B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015207148A (ja) * 2014-04-21 2015-11-19 富士通株式会社 処理連携方法,処理連携プログラム及び処理連携システム
JP2018515844A (ja) * 2015-05-04 2018-06-14 アリババ グループ ホウルディング リミテッド データ処理方法及びシステム
JP2023514947A (ja) * 2020-12-13 2023-04-12 グーグル エルエルシー コンテンツ選択および配信のためのプライバシー保存技法

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11048765B1 (en) 2008-06-25 2021-06-29 Richard Paiz Search engine optimizer
US9607045B2 (en) 2012-07-12 2017-03-28 Microsoft Technology Licensing, Llc Progressive query computation using streaming architectures
CN104508636B (zh) * 2012-07-31 2017-10-31 英派尔科技开发有限公司 数据管理设备、系统和方法
US11809506B1 (en) 2013-02-26 2023-11-07 Richard Paiz Multivariant analyzing replicating intelligent ambience evolving system
US11741090B1 (en) 2013-02-26 2023-08-29 Richard Paiz Site rank codex search patterns
US9514214B2 (en) * 2013-06-12 2016-12-06 Microsoft Technology Licensing, Llc Deterministic progressive big data analytics
US9547553B1 (en) 2014-03-10 2017-01-17 Parallel Machines Ltd. Data resiliency in a shared memory pool
CN104951468A (zh) * 2014-03-28 2015-09-30 阿里巴巴集团控股有限公司 数据搜索处理方法和系统
US9781027B1 (en) 2014-04-06 2017-10-03 Parallel Machines Ltd. Systems and methods to communicate with external destinations via a memory network
US9690713B1 (en) 2014-04-22 2017-06-27 Parallel Machines Ltd. Systems and methods for effectively interacting with a flash memory
US9594688B1 (en) 2014-12-09 2017-03-14 Parallel Machines Ltd. Systems and methods for executing actions using cached data
US9594696B1 (en) 2014-12-09 2017-03-14 Parallel Machines Ltd. Systems and methods for automatic generation of parallel data processing code
US9690705B1 (en) 2014-12-09 2017-06-27 Parallel Machines Ltd. Systems and methods for processing data sets according to an instructed order
US9753873B1 (en) 2014-12-09 2017-09-05 Parallel Machines Ltd. Systems and methods for key-value transactions
US9781225B1 (en) 2014-12-09 2017-10-03 Parallel Machines Ltd. Systems and methods for cache streams
US9639473B1 (en) 2014-12-09 2017-05-02 Parallel Machines Ltd. Utilizing a cache mechanism by copying a data set from a cache-disabled memory location to a cache-enabled memory location
WO2016159883A1 (en) * 2015-03-30 2016-10-06 National University Of Singapore Extracting information from a data set in a distributed computing environment
US10740328B2 (en) 2016-06-24 2020-08-11 Microsoft Technology Licensing, Llc Aggregate-query database system and processing
US10769134B2 (en) 2016-10-28 2020-09-08 Microsoft Technology Licensing, Llc Resumable and online schema transformations
US10552435B2 (en) 2017-03-08 2020-02-04 Microsoft Technology Licensing, Llc Fast approximate results and slow precise results
US11200238B2 (en) * 2019-01-28 2021-12-14 Roblox Corporation Computing cross products using map reduce

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08287076A (ja) * 1995-04-11 1996-11-01 Fuji Xerox Co Ltd データベース管理装置
US20050240570A1 (en) * 2004-04-22 2005-10-27 Oracle International Corporation Partial query caching
JP2010092222A (ja) * 2008-10-07 2010-04-22 Internatl Business Mach Corp <Ibm> 更新頻度に基づくキャッシュ機構
US20110072006A1 (en) * 2009-09-18 2011-03-24 Microsoft Corporation Management of data and computation in data centers

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002259443A (ja) 2001-02-28 2002-09-13 Ricoh Co Ltd 文書管理システム、文書検索方法および文書検索プログラム
US8135698B2 (en) * 2004-06-25 2012-03-13 International Business Machines Corporation Techniques for representing relationships between queries
US20120053446A1 (en) * 2007-11-21 2012-03-01 Parascript Llc Voting in image processing
JP2010009222A (ja) 2008-06-25 2010-01-14 Nikon Corp 情報処理装置
JP5268508B2 (ja) * 2008-09-08 2013-08-21 キヤノン株式会社 情報処理装置及び検索方法
JP6002159B2 (ja) * 2011-02-24 2016-10-05 レクシスネクシス ア ディヴィジョン オブ リード エルザヴィア インコーポレイテッド 電子文書の検索方法及び電子文書検索のグラフィカル表示方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08287076A (ja) * 1995-04-11 1996-11-01 Fuji Xerox Co Ltd データベース管理装置
US20050240570A1 (en) * 2004-04-22 2005-10-27 Oracle International Corporation Partial query caching
JP2010092222A (ja) * 2008-10-07 2010-04-22 Internatl Business Mach Corp <Ibm> 更新頻度に基づくキャッシュ機構
US20110072006A1 (en) * 2009-09-18 2011-03-24 Microsoft Corporation Management of data and computation in data centers

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015207148A (ja) * 2014-04-21 2015-11-19 富士通株式会社 処理連携方法,処理連携プログラム及び処理連携システム
JP2018515844A (ja) * 2015-05-04 2018-06-14 アリババ グループ ホウルディング リミテッド データ処理方法及びシステム
US10872070B2 (en) 2015-05-04 2020-12-22 Advanced New Technologies Co., Ltd. Distributed data processing
JP2023514947A (ja) * 2020-12-13 2023-04-12 グーグル エルエルシー コンテンツ選択および配信のためのプライバシー保存技法
JP7457813B2 (ja) 2020-12-13 2024-03-28 グーグル エルエルシー コンテンツ選択および配信のためのプライバシー保存技法
US12052227B2 (en) 2020-12-13 2024-07-30 Google Llc Privacy-preserving techniques for content selection and distribution

Also Published As

Publication number Publication date
US9135351B2 (en) 2015-09-15
US20130179466A1 (en) 2013-07-11
JP5919825B2 (ja) 2016-05-18

Similar Documents

Publication Publication Date Title
JP5919825B2 (ja) データ処理方法、分散処理システムおよびプログラム
US11748394B1 (en) Using indexers from multiple systems
US20210342369A1 (en) Method and system for implementing efficient classification and exploration of data
US10444956B2 (en) Row drill down of an event statistics time chart
US10929173B2 (en) Design-time information based on run-time artifacts in a distributed computing cluster
US10127258B2 (en) Event time selection output techniques
US9965531B2 (en) Data storage extract, transform and load operations for entity and time-based record generation
US9645843B2 (en) Image instance mapping
US11182364B2 (en) Data analysis support apparatus and data analysis support method
US11163722B2 (en) Methods and apparatus for analyzing a live stream of log entries to detect patterns
US9910821B2 (en) Data processing method, distributed processing system, and program
JP5467062B2 (ja) 情報推薦装置及び方法及びプログラム
US11687219B2 (en) Statistics chart row mode drill down
CN111046237A (zh) 用户行为数据处理方法、装置、电子设备及可读介质
CN117971606B (zh) 基于ElasticSearch的日志管理系统及方法
US9727666B2 (en) Data store query
Nelson et al. Entity resolution for longitudinal studies in education using OYSTER
US11308115B2 (en) Method and system for persisting data
WO2016027364A1 (ja) 話題クラスタ選択装置、及び検索方法
JP6634938B2 (ja) 分析支援方法、分析支援プログラムおよび分析支援装置
US20160110387A1 (en) Product lifecycle management system
US12130789B1 (en) Data lineage tracking service
JP2014013476A (ja) ファイルの検索方法、ファイル検索装置及びプログラム
WO2016151865A1 (ja) ソフトウェア選択システム及びその方法
JPWO2018061070A1 (ja) 計算機システム及び分析ソースデータ管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140904

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150602

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150731

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160328

R150 Certificate of patent or registration of utility model

Ref document number: 5919825

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150