JP2010092222A - 更新頻度に基づくキャッシュ機構 - Google Patents

更新頻度に基づくキャッシュ機構 Download PDF

Info

Publication number
JP2010092222A
JP2010092222A JP2008260892A JP2008260892A JP2010092222A JP 2010092222 A JP2010092222 A JP 2010092222A JP 2008260892 A JP2008260892 A JP 2008260892A JP 2008260892 A JP2008260892 A JP 2008260892A JP 2010092222 A JP2010092222 A JP 2010092222A
Authority
JP
Japan
Prior art keywords
reduce
map
update frequency
result
partial
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
JP2008260892A
Other languages
English (en)
Other versions
JP5229731B2 (ja
Inventor
Hiroshi Horii
洋 堀井
Yosuke Ozawa
陽介 小澤
Kiyokuni Kawachiya
清久仁 河内谷
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2008260892A priority Critical patent/JP5229731B2/ja
Publication of JP2010092222A publication Critical patent/JP2010092222A/ja
Application granted granted Critical
Publication of JP5229731B2 publication Critical patent/JP5229731B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】更新頻度に基づいて、Map−Reduce処理において有効にキャッシュを利用することができるキャッシュ構造を提供すること。
【解決手段】複数のデータを分散処理するMap−Reduce処理システムにおいて、キャッシュ機構を構築する方法であって、処理対象である複数のデータを、それらデータそれぞれの更新頻度に基づいて、複数のグループに分けるステップと、複数のグループそれぞれを構成するデータの更新頻度であるデータ更新頻度に基づいて、複数のグループそれぞれの更新頻度であるグループ更新頻度を計算するステップと、複数のグループのうち、グループ更新頻度が閾値以下であるグループに対するMap−Reduce処理段階の部分的結果を生成するステップと、生成された部分的結果をキャッシュするステップ、を含む。
【選択図】図2

Description

本発明は、更新頻度に基づくキャッシュ機構に関する。特に、本発明は、並列性の高いプログラムを記述可能なMap−Reduceプログラミングモデルを拡張したプログラミングモデルに用い得るキャッシュ機構に関する。
複数サーバに配置されたデータ(ファイル)を処理するための分散プログラミングモデルであるMap−Reduceプログラミングモデルが近年利用されてきている(非特許文献1)。Map−Reduceプログラミングモデルは、任意のデータからキー・値のペアを生成するMap関数とその中間データから同じキーを持つ値を統合するReduce関数とからなり、一般に数百台から数千台のパーソナル・コンピュータ(Personal computer:PC)クラスタ上で実行される。このMap−Reduceプログラミングモデルを実装したものには、例えば、Hadoopというオープンソースのソフトウエアがある(非特許文献2)。
Map−ReduceプログラミングモデルによるMap−Reduce処理は多数のPC上で行なわれるが、その中には、「マスタ(Master)」と「ワーカー(Worker)」という2つのサーバが存在する。マスタは、Map−Reduce処理全体の動作を管理し、ワーカーに仕事を割り振る。ワーカーは、マスタの要求に従って、Map関数、または、Reduce関数のいずれかを実行する。但し、ワーカーは、Map関数、Reduce関数のいずれか一方ではなく、必要に応じていずれの処理も行なえるようになっている。
以下、ワーカーがデータに対してMap関数を実行することをMap処理といい、Map処理を行なっているワーカーをMapワーカー(図面においては、MapWorkerと記載)という。同様に、ワーカーがデータに対してReduce関数を実行することをReduce処理といい、Reduce処理を行なっているワーカーをReduceワーカー(図面においては、ReduceWorkerと記載)という。
具体的に、Map処理は、MapワーカーがMap関数を利用して、ローカルのデータからマップ型の結果(Map結果)を生成する。Reduce処理は、ReduceワーカーがReduce関数を利用して、全てのMap結果内の、同じキー値を持つ全ての値から1つの値(Reduce結果)を生成する。複数ファイルのワード集計を例に、Map−Reduce処理の概要について説明する。図14は、従来技術に係る、Map−Reduce処理概要を示す図である。
まず、Mapワーカーは、それぞれが担当するファイル内に含まれる、全てのワードの出現回数を生成する(Map処理)。Mapワーカー1は、file1(cat,fox,dog,cat)とfile2(fox,fox,fox,rat)との2つのファイルに含まれる、全てのワードの出現回数をMap結果10として生成する。同様に、Mapワーカー2はfile3とfile5との2つのファイル、Mapワーカー3はfile4の1つのファイル、それぞれに含まれる全てのワードの出現回数をそれぞれMap結果20,30として生成する。すなわち、図14に示すように、Map結果はワードを「キー」、ワードの出現回数を「値」とするMap型データとして、Mapワーカーから生成される。
次に、Reduceワーカーは、Map結果のキー毎の出現回数を計算し、生成する(Reduce処理)。図14において、Reduceワーカー1はキー「cat」およびキー「dog」、Reduceワーカー2はキー「fox」およびキー「rat」それぞれに関し、Reduce処理を行なう。
Reduceワーカー1は、Map結果10、20、30からキー「cat」に対するMap結果を収集し、そのMap結果に含まれる値の和をRedece結果11として生成する。Reduceワーカー1は、キー「dog」に関してもキー「cat」と同様のReduce処理を行い、Redece結果11を生成する。また、Reduceワーカー2は、キー「fox」およびキー「rat」それぞれに関し、Reduce処理を行ない、Redece結果21を生成する。なお、Map結果10’、20’、30’は、Map処理とReduce処理との間に行なわれる、Map結果内の同じキーの値を集約する、シャッフル(Shuffle)という作業を行なった結果である。このように、Map−Reduceプログラミングモデルを利用することで、ワード集計のような大量のファイルに対する処理を、並列に処理することが可能となる。その結果として、処理全体を低レイテンシで実現することが可能となる。
Jeffrey Dean and Sanjay Ghemawat、"MapReduce: Simplified Data Processing on Large Clusters"[online]、平成20年6月3日、[平成20年8月26日検索]、インターネット、<URL:http://labs.google.com/papers/mapreduce-osdi04.pdf> Hadoop"Welcome to Hadoop"、[online]、[平成20年10月7日検索]、インターネット、<URL:http://hadoop.apache.org/core/>
Map−Reduce処理を効率化するために、Map−Reduceプログラミングモデルに、ReduceワーカーがReduce結果を自身のキャッシュに保存する機能を追加し、拡張することが考えられる。つまり、Reduce結果を生成したReduceワーカーとなっているサーバ装置のキャッシュに、Reduce結果を保存することができる。それにより、同じファイルに対して、Map−Reduce処理を定期的に実行する場合に、キャッシュに保存したReduce結果を利用することが可能となる。
しかし、キャッシュに保存されているReduce結果は、Map−Reduce処理対象のファイルに更新が加わり、Mapワーカーが生成するMap結果が更新になると、更新になったMap結果から得られるReduce結果と整合性が無く、利用できないため、無効化する必要がある。そのため、Reduce結果をキャッシュに保存しても有効に利用できないという問題点がある。
そこで、本発明は上記課題に鑑み、Map−Reduceプログラミングを、キャッシュを有効活用することができるプログラミングに拡張し、更新頻度に基づく、拡張Map−Reduceプログラミングモデルの処理におけるキャッシュ機構の構築方法、およびシステムを提供することを目的とする。
本発明の1つの態様では、以下のような解決手段を提供する。
本発明の1つの態様によると、Map処理とReduce処理とを実行し、複数のデータを分散処理するMap−Reduce処理システムにおいて、前記Reduce処理のためのキャッシュ機構を構築する方法であって、前記Map処理の結果に対して前記Reduce処理を部分的に実行し、部分的に処理した結果を段階的に処理するReduceMerge処理を追加した、Map−Reduce−ReduceMerge処理システムにおいて、キャッシュ機構を構築する方法を提供する。キャッシュ機構を構築する方法は、処理対象である複数のデータを、それらデータそれぞれの更新頻度に基づいて、複数のグループに分けるステップと、複数のグループそれぞれを構成するデータの更新頻度であるデータ更新頻度に基づいて、複数のグループそれぞれの更新頻度であるグループ更新頻度を計算するステップと、複数のグループのうち、グループ更新頻度が予め設定されたグループ更新頻度の閾値以下であるグループそれぞれに対してMap処理を実行して複数のMap結果を生成するステップと、複数のMap結果に対して部分的にReduce処理を実行して、複数の部分的Reduce結果を生成するステップと、複数の部分的Reduce結果に対してReduceMerge処理を段階的に実行し、新たな部分的Reduce結果を生成するステップと、生成された部分的Reduce結果をキャッシュするステップとを含む。
本態様によると、Map−Reduce処理に、ReduceMerge処理を追加することにより、一度にReduce処理をするのではなく、部分的Reduce結果を生成し、段階的にReduce処理を行うようにする。また、Map−Reduce処理にReduceMerge処理を追加して拡張したMap−Reduce−ReduceMerge処理において、グループ更新頻度が閾値以下であるグループに対するReduce処置およびReduceMerge処理段階の部分的Reduce結果をキャッシュに保存する。すなわち、あまり更新されないデータ群に対するReduce処置およびReduceMerge処理段階の部分的Reduce結果をキャッシュに保存することにより、次回のMap−Reduce−ReduceMerge処理の際に再利用することができる。
ここで、Reduce処置およびReduce−Merge処理段階の部分的Reduce結果とは、処理対象である複数のグループの部分に対するReduce結果であって、Map−Reduce処理において段階的に生成される。例えば、グループA、B、C、Dに対するMap−Reduce−ReduceMerge処理においては、グループA、B、C、Dの部分であるグループA、B、グループC、グループD等のReduce結果が部分的Reduce結果である。また、グループCおよびグループDそれぞれのReduce結果(部分的Reduce結果)から生成されるグループC、DのReduce結果も部分的Reduce結果である。
また、本態様は、Map−Reduce−ReduceMerge処理が、複数のグループのうち、グループ更新頻度が閾値以下であるグループを、グループ更新頻度に基づいて組み合わせ、それぞれに対して部分的Reduce結果を生成するステップと、部分的Reduce結果に対応するグループのグループ更新頻度に基づいて、部分的Reduce結果の更新頻度である部分更新頻度を計算するステップと、部分的Reduce結果の組み合わせを作成することができなくなるまで、部分的Reduce結果を部分更新頻度に応じて組み合わせて、新たな部分的Reduce結果を生成するステップと、を含む。
本態様によると、部分更新頻度に基づいて、部分的Reduce結果を段階的に生成することができ、それらをキャッシュに保存することにより、キャッシュが有効であって、再利用することができるキャッシュ機構を構築することができる。部分更新頻度に基づいて、段階的に部分的Reduce結果を生成することにより、データが更新になった場合に、データ更新による影響を受けない部分的Reduce結果のキャッシュをそのまま利用することができる。
ここで、部分更新頻度とは、部分的Reduce結果の更新頻度であり、すなわち、処理対象である複数のグループの部分に対するReduce結果の更新頻度である。また、部分的Reduce結果を段階的に生成するとは、例えば、グループA、B、CのMap−Reduce−ReduceMerge処理においては、グループAの部分的Reduce結果、グループBの部分的Reduce結果、グループCの部分的Reduce結果、およびグループA、Bの部分的Reduce結果といった、最終的なグループA、B、CのReduce結果が得られるまでの間の部分的Reduce結果を段階的に生成することである。それにより、グループCが更新された場合であっても、グループCを含まないグループAの部分的Reduce結果、グループBの部分的Reduce結果、およびグループA、Bの部分的Reduce結果のキャッシュはそのまま利用することができる。
本発明は、分散ファイルシステムのGFS(Google(登録商標) File System)や大規模分散データベースBigTable等の既存の技術と組み合わせることができ、そのように組み合わせた技術もまた、本発明の技術範囲に含まれる。また、本発明の技法は、キャッシュ機構を構築する方法の諸段階を、FPGA(現場でプログラム可能なゲートアレイ)、ASIC(特定用途向け集積回路)、これらと同等のハードウェアロジック素子、プログラム可能な集積回路、またはこれらの組み合わせが記憶し得るプログラムの形態、すなわちプログラム製品として提供し得る。具体的には、データ入出力、データバス、メモリバス、システムバス等を備えるカスタムLSI(大規模集積回路)の形態として、本発明に係るキャッシュ機構を構築する方法の実施手段、デバイス、組み込み装置等を提供でき、そのように集積回路に記憶されたプログラム製品の形態も、本発明の技術範囲に含まれる。
本発明によれば、Map−Reduceプログラミングをキャッシュを有効活用することができるように拡張したMap−Reduce−ReduceMerge処理において、キャッシュを有効活用することにより、従来のMap−Reduce処理と比較し、Map−Reduce−ReduceMerge処理を低レイテンシで実現すること、すなわち、CPUコスト、通信コストを削減し、処理を効率化することが可能となる、更新頻度に基づく、Map−Reduce処理に適用するキャッシュ機構の構築方法、およびシステムを提供することができる。
以下、本発明の実施形態について図を参照しながら説明する。なお、これらはあくまでも一例であって、本発明の技術的範囲はこれらに限られるものではない。
最初に、従来のMap−Reduce処理において、キャッシュを利用する場合について説明する。上述した図14のMap−Rdeuce処理における、Reduce結果のキャッシュ方法について、図15を用いて説明する。
図15は、従来技術に係る、Map−Reduce処理における、Reduce結果のキャッシュ例を示す図である。Reduceワーカー1は、キー「dog」およびキー「cat」に関してReduce処理を行い、Reduce結果11を生成するとともに、Reduceワーカー1のキャッシュ(図面においては、Cacheと記載)1にReduce結果11を保存する。同様に、Reduceワーカー2は、キー「fox」およびキー「rat」のReduce処理を行い、Reduce結果21を生成するとともに、Reduceワーカー2のキャッシュ2にReduce結果21を保存する。
このようにすることで、同じファイルに対する、2回目以降のキー「dog」、キー「cat」、キー「fox」、およびキー「rat」に関するReduce結果はキャッシュ1、2から取得することができる。すなわち、2回目以降のMap処理とReduce処理とを省略することができ、CPUコスト、通信コストを削減することが可能となる。
しかし、キャッシュに保存されているReduce結果は、Map−Reduce処理対象のファイルに更新が加わり、Mapワーカーが生成するMap結果が更新になると、更新になったMap結果から得られるReduce結果と整合性が無く、利用できないため、無効化する必要がある。そのため、Reduce結果をキャッシュに保存しても有効に利用できないという問題点がある。上述した図15に示したReduce結果をキャッシュに保存したMap−Reduce処理において、Map結果が更新になった場合について、図16を用いて説明する。
図16は、従来技術に係る、キャッシュに保存されているReduce結果の利用時における、ファイル更新を示す図である。図15から図16への変更箇所は太字にて示す。図16に示すfile1のfoxがdogに更新された場合、file1を担当するMapワーカー1のMap結果10が更新され、更新されたワード「fox」および「dog」のReduce結果11、21は更新される。
すなわち、更新されたワード「fox」と「dog」とに関して、Reduceワーカー1、2のキャッシュに保存した値と異なるReduce結果となるため、Reduceワーカー1、2は再度Reduce処理をやり直すこととなり、Reduceワーカー1、2のキャッシュに保存した値を利用することはできない。このように、Map結果、すなわち、ファイルに更新が加わると、キャッシュに保存されているReduce結果は利用できず、無効化されてしまう。
図17は、従来技術に係る、実際のMap−Reduce処理を示す図である。図14から17を用いて、1つのMapワーカーが処理するファイルは1または2つとしてMap−Reduce処理の概要について説明したが、実際のMap−Reduce処理においては、図17に示すように1つのMapワーカーは大量のファイルを処理する。そのため、ファイルの更新は頻繁に行われ、Reduceワーカーのキャッシュは頻繁に無効化される。その結果、Map−Reduce処理において、Reduce結果をキャッシュしても有効に利用することはできない。
次に、従来のMap−Reduce処理においてキャッシュを有効に利用できないという問題点を解決する本発明の一実施形態について説明する。本発明の一実施形態においては、Map−Reduce処理にReduceMerge処理を追加し、Map−Reduce処理を拡張したMap−Reduce−ReduceMerge処理を用いることで、キャッシュを有効に利用することができるキャッシュ機構を構築する。Map−Reduce−ReduceMerge処理は、Map−Reduce処理とほぼ同等の機能を実現可能である。
Map−Reduce−ReduceMerge処理は、Map処理と、Reduce処理と、ReduceMerge処理とからなる。背景技術にて説明したように、Map処理は、複数のファイルにMap関数を適用してMap結果を生成し、Reduce処理は、Map結果にReduce関数を適用してReduce結果(部分的Reduce結果)を生成する。
ReduceMerge処理は、同一キーに対する複数のReduce結果にReduceMerge関数を適用して、新たなReduce結果(部分的Reduce結果)を生成する。なお、ReduceMerge処理は、全Map結果がReduce結果に反映された時点で、すなわち、処理対象である全ファイルに対するReduce結果が生成された時点で処理を終了する。ReduceMerge処理はワーカーが行い、ReduceMerge処理を行なっているワーカーをReduceMergeワーカーという。
ReduceMerge関数とは、同じキーに対する複数のReduce結果をマージして、新たな1つのReduce結果を生成する関数である。ReduceMerge関数の入力はReduce処理またはReduceMerge処理により生成されたReduce結果である。
すなわち、ReduceMerge処理により、Reduce処理またはReduceMerge処理により生成された同じキーに対する複数のReduce結果は段階的にマージされ、最終的に、キー毎に処理対象である全ファイルに対する1つのReduce結果が生成される。図1を用いて、ReduceMerge処理について具体的に説明する。
図1は、本発明の一実施形態に係る、Map−Reduce−ReduceMerge処理例を示す図である。本例において、Mapワーカーは、ファイルを更新頻度に分けて処理しないとする。Map−Reduce−ReduceMerge処理の場合も、従来のMap−Reduce処理と同様、まず、入力された複数のファイル(ID=1から30000)から、MapワーカーとReduceワーカーとによりReduce結果200、201、202が生成される。
ReduceMergeワーカー(図面においては、ReduceMergeWorkerと記載)1は、Reduce結果200、201にReduceMerge関数を適用し、新たなReduce結果210を生成する。更に、ReduceMergeワーカー2は、Reduce結果202、210にReduceMerge関数を適用し、新たなReduce結果220を生成する。
上述したように、ReduceMergeワーカーが、Reduce結果を段階的にマージすることにより、処理対象であるファイルに対する部分的Reduce結果を生成することができる。この部分的Reduce結果をキャッシュに保存することにより、キャッシュを有効に利用することができるキャッシュ機構を構築することができる。すなわち、従来のMap−Reduce処理においては一度で行われていたReduce処理を、本発明の一実施形態に係る、Map−Reduce−ReduceMerge処理においては、部分的Reduce結果を生成し,段階的にReduce処理を行うことにより、従来のReduce処理ではできなかった、キャッシュを有効に利用することができるキャッシュ機構を構築できる処理とすることができる。
本発明の一実施形態に係る、Map−Reduce−ReduceMerge処理におけるキャッシュ機構の構築方法には、大きく分けて3つの方法が含まれ、最初のMap−Reduce−ReduceMerge処理の際にキャッシュを生成する方法(キャッシュ生成方法)と、既にキャッシュが生成されているMap−Reduce−ReduceMerge処理において、データが更新された際にキャッシュを無効化する方法(キャッシュ無効化方法)と、キャッシュを利用してMap−Reduce−ReduceMerge処理を行う方法(キャッシュ再利用方法)と、がある。以下、それぞれの方法について説明する。
なお、本発明の一実施形態において、キャッシュとは、サーバ内でデータやプログラムを記憶する記憶手段である、RAMやROM等の半導体媒体、ハードディスク、デバイスドライバによりOSが割り当てた磁気媒体・電気媒体等である。
図2に、本発明の一実施形態に係る、キャッシュ生成方法を示すフローチャートである。図2に示すキャッシュ生成方法により生成されたキャッシュを用いることにより、2回目以降のMap−Reduce−ReduceMerge処理の一部を減らすことができる。
S10:Mapワーカーが、担当するファイル(データ)を、ファイルのファイル更新頻度(データ更新頻度)毎にグループ分けをする。ステップS10の処理について、ID=1からID=8までのファイルをファイル更新頻度毎にグループ分けする場合を例として、具体的に、説明する。
図3は、本発明の一実施形態に係る、ファイルのグループ分け例を示す図である。図3の例は、あるMapワーカーが担当するID=1からID=8までのファイルを、ファイル更新頻度の高いグループAとファイル更新頻度の低いグループBとの2種類のグループ(High、Low)に分類した場合である。各ファイルのファイル更新頻度は、一定時間における更新回数にて表し、例えば、10秒に1回更新される場合には、1/10とする。
図3には、各ファイル対し、ファイル内容、ID、およびファイル更新頻度を一まとまりとして表している。ここで、グループAとグループBのファイル更新頻度の閾値を1/150とすると、ファイル更新頻度が1/150以上であるファイル、ID=1,2,5,8はグループAに分けられる。一方、ファイル更新頻度が1/150以下であるファイル、ID=3,4,6,7はグループBに分けられる。なお、ファイル更新頻度の閾値は任意であり、ファイル更新頻度を変えてテストし、キャッシュを有効に利用できる最適な値を見つけてもよい。
図2に戻って、
S20:Mapワーカーは、ステップS10にて分けたグループ毎のグループ更新頻度を計算する。
例えば、上述した図3のグループAのグループ更新頻度を計算する場合、グループAを構成するID=1、2、5、8それぞれのファイル更新頻度を加算する。すなわち、1/10(ID=1)+3/20(ID=2)+1/5(ID=5)+1/40(ID=8)=19/40が、グループAのグループ更新頻度となる。
S30:Mapワーカーは、グループ毎にMap関数を適用し、それぞれについてMap結果を生成するとともに、対応するグループのグループ更新頻度を、Map結果の更新頻度とする。すなわち、ステップS20にて計算されたグループ毎のグループ更新頻度が、対応するMap結果の更新頻度となる。図4を用いて、ステップS30の処理について具体的に説明する。
図4は、本発明の一実施形態に係る、Mapワーカーの処理例を示す図である。図4の例は、ID=1からID=30000までのファイルをAからFの6グループに分け、それぞれのグループについてMap関数を適用した場合である。なお、図4以下、説明省略のため、キー「dog」のReduce結果を求めるための記述とする。
グループAはID=1からID=10000までのファイルのうち、所定の閾値よりも更新頻度が高いファイルのグループであり、一方、グループBは所定の閾値よりも更新頻度の低いファイルのグループである。同様に、C、DグループはID=10001からID=20000までのファイル、E、FグループはID=20001からID=30000までのファイルを所定の閾値よりも更新頻度が高いか低いかによって分けられたグループである。
Mapワーカー1は、グループAにMap関数を適用し、Map結果100を生成する。グループAのグループ更新頻度が1/8であるとき、Map結果100はAグループのグループ更新頻度を引き継ぎ、1/8となる。同様に、Mapワーカー1は、グループBに対してもMap関数を適用し、Map結果101を生成する。Map結果101はグループBのグループ更新頻度を引き継ぎ、1/1000となる。CからFグループについても同様に、グループ毎にMap結果が生成され、合わせて、Map結果の更新頻度が決定される。
このように、Mapワーカーにて生成されたMap結果は、対応するグループのグループ更新頻度に基づいて、更新頻度が決定される。
図2に戻って、
S40:Reduceワーカーは、1以上のMap結果に対し、Reduce関数を適用し、Reduce結果を生成する。ただし、複数のReduceワーカーによって、全Map結果、つまり全グループからReduce結果が生成される。
S50:Reduceワーカーは、ステップS40にて生成したReduce結果をキャッシュに保存する。なお、複数のReduceワーカーそれぞれのキャッシュには、各Reduceワーカーが生成したReduce結果が保存される。また、Reduceワーカーは、キャッシュにReduce結果の元データであるグループの名前を元データ情報として保存する。更に、Reduceワーカーは、生成したReduce結果の更新頻度をその元データとなっているグループのグループ更新頻度の和として求めることができ、キャッシュにReduce結果の更新頻度を保存する。図5を用いて、ステップS40の処理について具体的に説明する。
図5は、本発明の一実施形態に係る、Reduceワーカーによる処理例を示す図である。図5の例は、AからFの6グループから得られたReduce結果が各Reduceワーカーのキャッシュに保存される場合である。
Reduceワーカー1は、Map結果100を用いて得られたReduce結果110をキャッシュ1に保存する。また、Reduceワーカー1は、Reduce結果110の元データであるAグループを元データ情報としてキャッシュ1に保存する。Reduce結果110の入力データであるMap結果100は、Aグループから得られた値だからである。また、Reduceワーカー1は、Reduce結果110の元データであるAグループのグループ更新頻度1/8を、Reduce結果110の更新頻度としてキャッシュ1に保存する。Reduce結果110の更新頻度は入力データであるMap結果100の更新頻度であり、Map結果101の更新頻度はAグループのグループ更新頻度だからである。
Reduceワーカー2は、Map結果101、103、105を用いて得られたReduce結果111をキャッシュ2に保存する。また、Reduceワーカー2は、Reduce結果111の元データがB、D、Fグループであること元データ情報としてキャッシュ2に保存する。Reduce結果111の入力データであるMap結果101、103、105それぞれはB、D、Fグループそれぞれから得られた値だからである。
また、Reduceワーカー2は、Reduce結果111の元データであるB、D、Fグループの更新頻度の和1/1000+1/2000+1/4000=7/4000を、Reduce結果111の更新頻度としてキャッシュ2に保存する。Reduce結果111の更新頻度は入力データであるMap結果101、103、105の更新頻度の和であり、Map結果101、103、105それぞれはB、D、Fグループそれぞれの更新頻度だからである。
なお、上述したReduceワーカー2のように、Reduceワーカーが複数のMap結果に対して、Reduce関数を適用する場合には、更新頻度が高くならないようにMap結果を選択する。Reduceワーカーのキャッシュを有効に利用するためである。更新頻度が高くならないようにMap結果を選択する方法については、図11および12を用いて後述する。
図2に戻って、
S60:ReduceMergeワーカーは、複数のReduceワーカーが生成したReduce結果に対し、ReduceMerge関数を適用し、新たなReduce結果を生成する。
S70:ReduceMergeワーカーは、ステップS60にて生成したReduce結果をキャッシュに保存する。また、ReduceMergeワーカーは、キャッシュにReduce結果の元データであるグループの名前を元データ情報として保存する。更に、ReduceMergeワーカーは、生成したReduce結果の更新頻度をその元データとなっているグループのグループ更新頻度の和として求めることができ、キャッシュにReduce結果の更新頻度を保存する。
S80:マスタは、全てのグループのReduce結果をマージしたか判断し、YESの場合には、処理を終了する。一方、NOの場合には、ステップS60へ戻る。なお、ステップS80の全てのグループのReduce結果をマージしたか判断は、ReduceMergeワーカーが行ってもよい。図6を用いて、ステップS60からS80までの処理について具体的に説明する。
図6は、本発明の一実施形態に係る、ReduceMergeワーカーによる処理例を示す図である。なお、図5に示したReduceワーカーの処理例の続きである。ReduceMergeワーカーは、複数のReduce結果に対し、ReduceMerge関数を適用し、最終的に全てのグループを含むReduce結果を生成する。ReduceMergeワーカー1は、Reduceワーカー1が生成したReduce結果110と、Reduceワーカー2が生成したReduce結果111とにReduceMerge関数を適用し、Reduce結果120を生成する。ReduceMergeワーカー1は、Reduce結果120をキャッシュ11に保存する。
また、キャッシュ11には、ReduceMergeワーカー1は、Reduce結果120の元データがA、B、D、Fグループであることが合わせて保存される。Reduce結果120は、Aグループを元データとするReduce結果110と、B、D、Fグループを元データとするReduce結果111とから生成されるので、A、B、D、FグループがReduce結果120の元データであるからである。
更に、キャッシュ11には、Reduce結果120の更新頻度が保存される。Reduce結果120の更新頻度は、Reduce結果110の更新頻度1/8とReduce結果111の更新頻度7/4000との和であり、1/8+7/4000=507/4000である。なお、Reduce結果120の更新頻度は元データであるA、B、D、Fグループの更新頻度の和である。
更に、ReduceMergeワーカー2は、Reduceワーカー3が生成したReduce結果112と、ReduceMergeワーカー1が生成したReduce結果120とにReduceMerge関数を適用し、Reduce結果130を生成する。また、ReduceMergeワーカー2は、Reduce結果130をキャッシュ21に保存する。
このように、ReduceMergeワーカーは、他のReduceMergeワーカーにて生成されたReduce結果に対しても、Reduce関数を適用することができ、最終的に全てのグループを含むReduce結果を生成がされるまで、ReduceMergeワーカーの処理は続く。つまり、複数のグループの部分的なReduce結果が複数生成され最終的にそれらがまとめられ、1つのReduce結果が生成される。このようにReduceMergeワーカーは、Reduce結果を段階的に生成し、それらをキャッシュに保存する。
このように段階的に生成されたReduce結果それぞれをキャッシュに保存することにより、段階的なキャッシュ機構を構築することができる。その結果、Map−Reduce−ReduceMerge処理においてキャッシュを有効に利用することができる。すなわち、ReduceMerge処理をMap−Reduce処理に加えることにより、キャッシュの効きやすいMap−Reduce処理に拡張することができる。
キャッシュ機構を構築するシステムにおける各手段について、図2に示したキャッシュ生成処理フローを用いて説明する。分類手段は、処理対象であるファイルを受信すると、図2のステップS10の処理を行う。頻度計算手段はファイルそれぞれの更新頻度を受信し、図2のステップS20の処理を行う。結果生成手段は、分類手段にて分類されたグループを受信し、グループ毎に図2のステップS30からS40の処理を行う。キャッシュ手段は、結果生成手段にて作成されたReduce結果を受信し、図2のステップS50の処理を行う。
また、結果生成手段は、結果生成手段にて作成されたReduce結果を受信し、図2のステップS60の処理により、新たなReduce結果を生成することもできる。更に、キャッシュ手段は、結果生成手段にて新たに作成されたReduce結果を受信し、図2のステップS70の処理を行う。
次に、上述したキャッシュ生成処理にて構築されたキャッシュ機構をファイルが更新された際に一部無効化するキャッシュ無効化方法について説明する。図7は、本発明の一実施形態に係る、キャッシュ無効化処理を示すフローチャートである。なお、キャッシュ無効化処理は、Mapワーカーが行っても、マスタが行ってもよい。以下、マスタがキャッシュ無効化処理を行う場合について説明する。
S100:マスタは、ファイルの更新を検知する。具体的には、マスタは、ロボットやクローラと呼ばれるプログラムを常駐させ、ファイルの更新を検知する。
S110:マスタは、ステップS100で検知した、更新されたファイルを含むグループを特定する。
S120:マスタは、ステップS110で特定したグループを元データの1つとして生成されたReduce結果のキャッシュを全て無効化する。具体的には、マスタは、ステップS110で特定したグループを、元データ情報に含むキャッシュを検索し、ステップS110で特定したグループを元データ情報に含むキャッシュを検知するとキャッシュを無効化する。
図8は、本発明の一実施形態に係る、キャッシュ無効化例を示す図である。図8を用いて、上述したキャッシュ無効化方法について、具体的に説明する。なお、図8は図5と図6とをマージした図である。
グループCの内のファイルが更新されたとする。更新箇所は太字で表す。まず、マスタはファイルが更新されたことを検知し、更新されたファイルが含まれるグループ、ここではグループCを特定する。マスタはファイルが更新されたグループがグループCであることに基づいて、元データ情報にグループCを含むキャッシュ3およびキャッシュ21を無効化する。
また、個別ファイルの更新頻度が、そのファイルが属するグループ(High、またはLow)の更新頻度の閾値よりも大きくなった場合、以下の手順によりグループの再構成とキャッシュの無効化を行う。
図9は、本発明の一実施形態に係る、グループ再構成によるキャッシュ無効化の例を示す図である。図9のグループA、Bのうち、Bにあるデータが頻繁に更新されている場合について説明する。
まず、マスタは、頻繁に更新されているファイルを特定する。頻繁に更新されているか否かは、ファイル更新頻度が、ファイルをグループ分けした時の閾値を越えたか否かで判断する。マスタは特定したファイルの移動元のグループと移動先のグループとの情報を取得する。本例において、マスタは特定したファイルはグループBに含まれているので、移動元のグループはグループBである。グループBに対応するファイル更新頻度の高いグループはグループAであるので、移動先のグループはAグループである。
マスタは取得した情報に基づいて、キャッシュを無効化する。本例において、マスタは、グループA、Bを元データ情報に含むキャッシュ1、2、11、21を無効化する。ただし、この際、A、B以外のグループに由来するキャッシュ3はそのまま保持される。
次に、マスタは、特定したデータを移動元のグループであるグループBから、移動先のグループであるグループAに移す。
更新頻度の低いファイルをAからBに移す場合も同様の手順により行える。なお、ファイルは同じサーバの中でグループを移動されるだけなので、サーバ間のスプリッティングの状況には変化がない。また、本例では、たくさんのキャッシュが無効化されてしまっているように見えるが、実際にはキャッシュの数はもっと多く、無効化は局所的である。
次に、上述したキャッシュ生成方法およびキャッシュ無効化方法にて構築されたキャッシュ機構を利用したキャッシュ再利用方法について説明する。
図10は、本発明の一実施形態に係る、キャッシュ機構を利用したMap−Reduce−ReduceMerge処理を示すフローチャートである。
S200:マスタは、全ての有効なキャッシュを検索し、全グループのReduce結果が含まれるようにキャッシュを選択する。ただし、グループはかぶらないようにする必要がある。
S210:マスタは、選択された1以上のキャッシュの中に含まれないグループを担当するMapワーカーに対し、Map処理を依頼する。
S220:Reduceワーカーは、ステップS210でマスタからMap処理を依頼されたMapワーカーが作成したMap結果に基づいて、Reduce結果を生成する。
S230:ステップS200でマスタが選択したキャッシュのReduce結果と、ステップS220でReduceワーカーが生成したReduce結果に対し、ReduceMerge処理を行い、最終的なReduce結果を生成する。
図11は、本発明の一実施形態に係る、キャッシュ機構を利用したMap−Reduce−ReduceMerge処理例を示す図である。例えば、キャッシュが図11のようになっている場合、ReduceMergeワーカー1のキャッシュ11は、Reduceワーカー1のキャッシュ1とReduceワーカー2のキャッシュ2とを含んでいる。この場合、グループA、B、D、FのReduse結果のキャッシュとして、ReduceMergeワーカー1のキャッシュ11、もしくは、Reduceワーカー1とReduceワーカー2のそれぞれのキャッシュ1、2が選択される。図11では、ReduceMergeワーカー1のキャッシュ11を選択する。
次に、選択したキャッシュに含まれないグループに対して、MapワーカーがMap関数を適用し、Map結果を生成する。ReduceMergeワーカー1のキャッシュ11には、グループC、Eを元データに含まないReduce結果が保存されているため、Mapワーカー2、3はMap関数を適用し、グループC、EそれぞれのMap結果12、14を生成する。
次に、Mapワーカーが生成したMap結果から、ReduceワーカーがReduce結果を生成する。図11では、Reduceワーカー3がMap結果12、14からReduce結果112を生成する。
最後に、選択したキャッシュのReduce結果と、Reduceワーカーが生成したReduce結果に対し、ReduceMerge処理を行い、最終的なReduce結果を生成する。図11では、ReduceMergeワーカー2が、ReduceMergeワーカー1のキャッシュ11に保存されたReduce結果120と、Reduceワーカー3が生成したReduce結果112とから、Reduce結果130を生成している。
図11において、点線で表示される部分は、キャッシュを利用にしたことにより省略された処理を示している。図11からわかるように、多くの処理はキャッシュを利用することにより、省略することができる。その結果、システム全体の負荷を軽減させること、および処理全体を従来のMap−Reduce処理と比較し、低レイテンシで実現することが可能となる。
(変形例1)
上記実施形態では、MapワーカーまたはReduceワーカーを行うサーバは任意でよく、あるサーバのMapワーカーにて作成されたMap結果を、同一サーバのReduceワーカーが処理しても、別のサーバのReduceワーカーが処理してもよい。しかし、あるMapワーカーにて作成されたMap結果を同一サーバのReduceワーカーが処理するほうが効率がよい。なぜならMap結果の受け渡しが発生しないからである。そこで、MapワーカーとReduceワーカーの物理的な配置を最適化することにより、より効率のよいMap−Reduce−ReduceMerge処理が実現可能となる。
(変形例2)
上記実施形態では、全てのReduce結果を更新頻度に関わらず、キャッシュに保存している。しかし、更新頻度の高いReduce結果のキャッシュが利用できる回数は、更新頻度の低いReduce結果のキャッシュに比べ少ないので、更新頻度が高いReduce結果を、キャッシュ対象外としてもよい。それにより、更新頻度の高いReduce結果をキャッシュする処理、キャッシュを無効化する処理を省略することができ、より効率のよいMap−Reduce−ReduceMerge処理を実現可能となる。
(変形例3)
上記実施形態では、Reduce結果をキャッシュに保存したが、Reduce結果同様にMap結果をキャッシュに保存してもよい。Map結果は、それを生成したMapワーカーのキャッシュに保存される。更に、このとき、更新頻度の高いMap結果を対象外としてもよい。これにより、Reduce結果のキャッシュを利用できない場合であっても、Map結果のキャッシュを利用できるので、より効率のよいMap−Reduce−ReduceMerge処理を実現可能となる。
(変形例4)
上記実施形態にて、キャッシュされていないグループの特定は、全てのキャッシュのグループを確認して行うが、キャッシュ位置を格納するインデックスを1サーバに配置することにより、キャッシュされていないグループの特定を低レイテンシで実現することができる。その結果、より効率のよいMap−Reduce−ReduceMerge処理を実現可能となる。
(変形例5)
上記実施形態にて、ファイル更新頻度によるグループ分けは、ファイル更新頻度の高いグループ(High)とファイル更新頻度の低いグループ(Low)との2つのグループに分割する以外にも、任意の数に分割可能してもよい。ファイルをファイル更新頻度毎に細かくグループ分けすることにより、有効であるキャッシュを増やすことができ、より効率のよいMap−Reduce−ReduceMerge処理を実現可能となる。
(変形例6)
上記実施形態にて、Reduce(ReduceMerge)する組み合わせについては任意であったが、有効であるキャッシュをより多くするために、Reduce(ReduceMerge)する組み合わせを最適化する処理を付け加えてもよい。
図12は、本発明の一実施形態に係る、Reduce(ReduceMerge)する組み合わせを最適化する処理のフローチャートである。
S300:マスタは、Reduce(ReduceMerge)処理により生成されるReduce結果の更新頻度の閾値αを取得する。更新頻度の閾値は任意でよく、人間が決定してもよい。但し、閾値は1に近すぎないほうがよい。なぜならば、閾値が1に近いと、Reduce結果は多くのグループに対する結果となるため、Reduce結果のキャッシュが無効化される確率が上がり、キャッシュを有効に利用できないからである。
S310:マスタは、Reduceワーカー(ReduceMergeワーカー)を1つ選択する。このとき、すでに処理対象であるファイルが決まっているReduceワーカー(ReduceMergeワーカー)は除く。また、マスタは、グループ集合Gを空にする。グループ集合Gは、Reduce(ReduceMerge)する組み合わせを作成する際に、その組み合わせを一時的に格納するために用いる。
S320:マスタは、未選択のグループのうち、最もグループ更新頻度の低いグループ(以下、グループgとする)を1つ選択する。
S330:マスタは、ステップS320で選択したグループgをグループ集合Gに加えて、グループ集合Gを入力としてReduce処理を行った場合に、そのReduce結果の更新頻度がαを越すか否か判断する。判断結果が、YESの場合にはステップS350へ、NOの場合にはステップS340へ処理を移す。
S340:マスタは、ステップS330でYESと判断すると、グループ集合Gにグループgを加えて、ステップS320へ戻る。このようにして、グループ集合Gから得られるReduce結果の更新頻度が閾値αを越えるまで、グループ集合Gにグループgが加えられる。
S350:マスタは、ステップS330でNOと判断すると、グループ集合Gが空であるか否か判断する。判断の結果がYESの場合にはステップS360へ、NOの場合にはステップS370へ処理を移す。
S360:マスタは、グループ集合Gにグループgを加える。このようにするのは、1つのグループで、それから得られるReduce結果の更新頻度が閾値αを越えるものは、他のグループとは組み合わせず、単体でReduce処理を行うためである。
S360:マスタは、ステップS310にて選択されたReduce(ReduceMerge)ワーカーはグループ集合G内の全グループをReduce(ReduceMerge)対象とする。
S380:マスタは、全てのグループが選択されたか、つまり、全てのグループがReduce(ReduceMerge)ワーカーの処理対象となったか判断する。判断結果が、YESの場合には処理は終了し、NOの場合にはステップS310へ戻る。
このようにすることで、グループ更新頻度の低いグループはまとめられ、それらから1つのReduce結果が生成され、キャッシュに保存される。このようにすることで、Reduce対象であるグループの組み合わせを最適化することができ、より効率のよいMap−Reduce−ReduceMerge処理を実現可能となる。
図13は、本発明の一実施形態に係る、ReduceMerge処理のフローチャートである。
S400:マスタは、閾値γとΔとを取得する。ここで、マスタは、ReduceMerge処理により生成されるReduce結果の更新頻度α=γとする。なお、γとΔとは任意でよく、人間が決定してもよい。
S410:マスタは、更新頻度αを入力して、図13に示したReduceする組み合わせを最適化する処理を行う。
S420:ステップS410にて決定された処理対象であるグループを入力として、それぞれのReduceワーカーは、Reduce処理を行う。
S430:マスタは、ステップS420にて生成されたReduce結果が1つであるか判断する。判断結果が、NOの場合にはステップS440へ処理を移す。一方、YESの場合には処理は終了する。ReduceMerge処理の終了条件は、全てのグループに対応するReduce結果が生成されたことである。ステップS420にて生成されたReduce結果が1つであるということは、その結果は全てのグループに対応するReduce結果であり、ReduceMerge処理の終了条件を満たしているからである。
S440:マスタは、更新頻度α=α+Δとする。更新頻度を少しずつ大きくすることで、生成されるReduce結果の数を段階的に減らしていくことができる。すなわち、段階的にReduceMerge処理を行うことができる。
S450:マスタは、更新頻度αを入力して、図13に示したReduceMergeする組み合わせを最適化する処理を行う。
S460:ステップS450にて2つ以上のグループをReduceMerge処理対象としたReduceMergeワーカーは、ReduceMerge処理を行い、ステップS430へ処理を戻す。
このようにして、Reduce結果の更新頻度に応じて何段階かReduceMerge処理を行うことにより、更新が頻繁に起こっても、キャッシュしたReduce結果を有効に利用することができるキャッシュ機構を構築することができる。その結果、より効率のよいMap−Reduce−ReduceMerge処理を実現可能となる。
以上、本発明を実施形態に則して説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態または実施例に記載されたものに限定されるものではない。
本発明の一実施形態に係る、Map−Reduce−ReduceMerge処理例を示す図である。 本発明の一実施形態に係る、キャッシュ生成方法を示すフローチャートである。 本発明の一実施形態に係る、ファイルのグループ分け例を示す図である。 本発明の一実施形態に係る、Mapワーカーの処理例を示す図である。 本発明の一実施形態に係る、Reduceワーカーによる処理例を示す図である。 本発明の一実施形態に係る、ReduceMergeワーカーによる処理例を示す図である。 本発明の一実施形態に係る、キャッシュ無効化処理を示すフローチャートである。 本発明の一実施形態に係る、キャッシュ無効化例を示す図である。 本発明の一実施形態に係る、グループ再構成によるキャッシュ無効化の例を示す図である。 本発明の一実施形態に係る、キャッシュ機構を利用したMap−Reduce−ReduceMerge処理のフローチャートである。 本発明の一実施形態に係る、キャッシュ機構を利用したMap−Reduce−ReduceMerge処理例を示す図である。 本発明の一実施形態に係る、Reduce(ReduceMerge)するグループの最適化処理のフローチャートである。 本発明の一実施形態に係る、ReduceMerge処理のフローチャートである。 従来技術に係る、Map−Reduce処理概要を示す図である。 従来技術に係る、Map−Reduce処理における、Reduce結果のキャッシュ例を示す図である。 従来技術に係る、キャッシュに保存されているReduce結果の利用時における、ファイル更新を示す図である。 従来技術に係る、実際のMap−Reduce処理を示す図である。

Claims (13)

  1. Map処理とReduce処理とを実行し、複数のデータを分散処理するMap−Reduce処理システムにおいて、前記Reduce処理のためのキャッシュ機構を構築する方法であって、
    前記Map処理の結果に対して前記Reduce処理を部分的に実行し、部分的に処理した結果を段階的に処理するReduceMerge処理を追加した、Map−Reduce−ReduceMerge処理システムにおいて、
    前記複数のデータを、前記複数のデータそれぞれの更新頻度であるデータ更新頻度に基づいて、複数のグループに分類するステップと、
    前記複数のグループそれぞれを構成するデータの前記データ更新頻度に基づいて、前記複数のグループそれぞれの更新頻度であるグループ更新頻度を計算するステップと、
    前記複数のグループのうち、前記グループ更新頻度が予め設定された前記グループ更新頻度の閾値以下であるグループそれぞれに対して前記Map処理を実行して複数のMap結果を生成するステップと、
    前記複数のMap結果に対して部分的に前記Reduce処理を実行して、複数の部分的Reduce結果を生成するステップと、
    前記複数の部分的Reduce結果に対して前記ReduceMerge処理を段階的に実行し、新たな部分的Reduce結果を生成するステップと、
    前記部分的Reduce結果をキャッシュに保存するステップと、
    を含む方法。
  2. 更に、前記部分的Reduce結果が、キャッシュに保存される際に、前記部分的Reduce結果に対応するグループを特定する情報を合わせてキャッシュに保存する、請求項1に記載の方法。
  3. 更に、前記部分的Reduce結果に対応するグループの前記グループ更新頻度に基づいて、前記部分的Reduce結果の更新頻度である部分更新頻度を計算するステップを含み、
    前記部分的Reduce結果が、キャッシュに保存される際に、前記部分更新頻度を合わせてキャッシュに保存する、請求項1に記載の方法。
  4. 前記部分的Reduce結果を生成するステップは更に、
    前記部分的Reduce結果を、前記部分更新頻度に基づいて組み合わせ、それぞれに対して前記部分的Reduce結果を新たに生成するステップと、
    前記部分的Reduce結果を新たに生成するステップを、前記部分的Reduce結果の組み合わせを作成することができなくなるまで、繰り返すステップと、
    を含む請求項3に記載の方法。
  5. 新たな前記部分的Reduce結果を生成するステップは、
    組み合わせる前記部分的Reduce結果の部分更新頻度の和が、予め設定された前記部分更新頻度の閾値以下になるようにし、
    前記繰り返すステップは、
    前記部分更新頻度の閾値を段階的に高くすることにより、前記部分的Reduce結果を新たに生成するステップを繰り返す、請求項4に記載の方法。
  6. 更に、前記複数のデータのうち少なくとも1つのデータが更新されたことに応じて、更新されたデータを含む前記グループを特定するステップと、
    特定された前記グループに対応する前記部分的Reduce結果のキャッシュを無効化するステップと、
    を含む請求項1に記載の方法。
  7. 更に、前記複数のデータのうち少なくとも1つのデータの前記データ更新頻度が、前記複数のデータを前記複数のグループに分けた時と比較して著しく変化したことに応じて、前記データ更新頻度が著しく変化したデータが属するグループを変更するステップと、
    前記データ更新頻度が著しく変化したデータが、変更前に含まれていたグループと変更後に含まれていたグループとに対応する前記部分的Reduce結果のキャッシュを無効化するステップと、
    を含む請求項1に記載の方法。
  8. 更に、前記部分的Reduce結果のキャッシュ位置について、インデックスを作成するステップと、
    作成された前記インデックスを、前記Map−Reduce処理システムを構成するコンピュータのいずれか1つに保存するステップと、
    を含む請求項1に記載の方法。
  9. 前記Map結果を生成するステップが、前記複数のグループのうち、前記グループ更新頻度が前記グループ更新頻度の閾値を越えているグループそれぞれに対して前記Map処理を実行して複数のMap結果を生成する請求項1に記載の方法。
  10. 更に、前記複数のMap結果をキャッシュに保存するステップを含む請求項1に記載の方法。
  11. Map処理とReduce処理とを実行し、複数のデータを分散処理するMap−Reduce処理システムにおいて、前記Reduce処理のためのキャッシュ機構を構築する方法であって、
    前記Map処理の結果に対して前記Reduce処理を部分的に実行し、部分的に処理した結果を段階的に処理するReduceMerge処理を追加した、Map−Reduce−ReduceMerge処理システムにおいて、
    前記複数のデータを、前記複数のデータそれぞれの更新頻度であるデータ更新頻度に基づいて、複数のグループに分けるステップと、
    前記複数のグループそれぞれを構成するデータの前記データ更新頻度に基づいて、前記複数のグループそれぞれの更新頻度であるグループ更新頻度を計算するステップと、
    前記複数のグループのうち、前記グループ更新頻度が予め設定された前記グループ更新頻度の閾値以下であるグループそれぞれに対して前記Map処理を実行して複数のMap結果を生成するステップと、
    前記複数のMap結果に対して部分的に前記Reduce処理を実行して、複数の部分的Reduce結果を生成するステップと、
    前記複数の部分的Reduce結果に対して前記ReduceMerge処理を段階的に実行し、新たな部分的Reduce結果を生成するステップと、
    前記部分的Reduce結果に対応するグループの前記グループ更新頻度に基づいて、前記部分的Reduce結果の更新頻度である部分更新頻度を計算するステップと、
    前記部分的Reduce結果と、前記部分的Reduce結果に対応するグループを特定する情報と、前記部分的Reduce結果の更新頻度とをキャッシュに保存するステップと、
    を含み、
    更に、
    前記部分的Reduce結果と、前記部分的Reduce結果に対応するグループを特定する情報と、前記部分的Reduce結果の更新頻度とがキャッシュに保存されている際に、
    前記複数のデータのうち少なくとも1つのデータが更新されたことに応じて、更新されたデータを含む前記グループを特定するステップと、
    特定された前記グループに対応する前記部分的Reduce結果のキャッシュを無効化するステップと、
    前記複数のデータのうち少なくとも1つのデータの前記データ更新頻度が、前記複数のデータを前記複数のグループに分けた時と比較して著しく変化したことに応じて、前記データ更新頻度が著しく変化したデータが属するグループを変更するステップと、
    前記データ更新頻度が著しく変化したデータが、変更前に含まれていたグループと変更後に含まれていたグループとに対応する前記部分的Reduce結果のキャッシュを無効化するステップと
    を含む方法。
  12. Map処理とReduce処理とを実行し、複数のデータを分散処理するMap−Reduce処理システムにおいて、前記Reduce処理のためのキャッシュ機構を構築するプログラムであって、
    前記Map処理の結果に対して前記Reduce処理を部分的に実行し、部分的に処理した結果を段階的に処理するReduceMerge処理を追加した、Map−Reduce−ReduceMerge処理システムにおいて、
    前記Map−Reduce−ReduceMerge処理システムを構成するコンピュータに、
    前記複数のデータを、前記複数のデータそれぞれの更新頻度であるデータ更新頻度に基づいて、複数のグループに分けるステップと、
    前記複数のグループそれぞれを構成するデータの前記データ更新頻度に基づいて、前記複数のグループそれぞれの更新頻度であるグループ更新頻度を計算するステップと、
    前記複数のグループのうち、前記グループ更新頻度が予め設定された前記グループ更新頻度の閾値以下であるグループそれぞれに対して前記Map処理を実行して複数のMap結果を生成するステップと、
    前記複数のMap結果に対して部分的に前記Reduce処理を実行して、複数の部分的Reduce結果を生成するステップと、
    前記複数の部分的Reduce結果に対して前記ReduceMerge処理を段階的に実行し、新たな部分的Reduce結果を生成するステップと、
    前記部分的Reduce結果をキャッシュに保存するステップと、
    を実行させる、プログラム。
  13. Map処理とReduce処理とを実行し、複数のデータを分散処理するMap−Reduce処理システムにおいて、前記Reduce処理のためのキャッシュ機構を構築するシステムであって、
    前記Map処理の結果に対して前記Reduce処理を部分的に実行し、部分的に処理した結果を段階的に処理するReduceMerge処理を追加した、Map−Reduce−ReduceMerge処理システムにおいて、
    前記複数のデータを、前記複数のデータそれぞれの更新頻度であるデータ更新頻度に基づいて、複数のグループに分ける分類手段と、
    前記複数のグループそれぞれを構成するデータの前記データ更新頻度に基づいて、前記複数のグループそれぞれの更新頻度であるグループ更新頻度を計算する頻度計算手段と、
    前記複数のグループのうち、前記グループ更新頻度が予め設定された前記グループ更新頻度の閾値以下であるグループそれぞれに対して前記Map処理を実行して複数のMap結果を生成するMap処理手段と、
    前記複数のMap結果に対して部分的に前記Reduce処理を実行して、複数の部分的Reduce結果を生成するReduce処理手段と、
    前記複数の部分的Reduce結果に対して前記ReduceMerge処理を段階的に実行し、新たな部分的Reduce結果を生成するReduceMerge処理手段と、
    前記部分的Reduce結果をキャッシュに保存するキャッシュ手段と、
    を備えるシステム。
JP2008260892A 2008-10-07 2008-10-07 更新頻度に基づくキャッシュ機構 Expired - Fee Related JP5229731B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008260892A JP5229731B2 (ja) 2008-10-07 2008-10-07 更新頻度に基づくキャッシュ機構

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008260892A JP5229731B2 (ja) 2008-10-07 2008-10-07 更新頻度に基づくキャッシュ機構

Publications (2)

Publication Number Publication Date
JP2010092222A true JP2010092222A (ja) 2010-04-22
JP5229731B2 JP5229731B2 (ja) 2013-07-03

Family

ID=42254879

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008260892A Expired - Fee Related JP5229731B2 (ja) 2008-10-07 2008-10-07 更新頻度に基づくキャッシュ機構

Country Status (1)

Country Link
JP (1) JP5229731B2 (ja)

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101976534A (zh) * 2010-11-01 2011-02-16 百度在线网络技术(北京)有限公司 电子地图生成的方法及装置
JP2012078927A (ja) * 2010-09-30 2012-04-19 Internatl Business Mach Corp <Ibm> データベースにおけるキャッシュ制御方法、システム及びプログラム
JP2012160013A (ja) * 2011-01-31 2012-08-23 Nippon Telegr & Teleph Corp <Ntt> データ分析及び機械学習処理装置及び方法及びプログラム
JP2012190078A (ja) * 2011-03-08 2012-10-04 Fujitsu Ltd 処理装置、分散処理システム、及び処理プログラム
WO2012131927A1 (ja) * 2011-03-30 2012-10-04 株式会社日立製作所 計算機システム及びデータ管理方法
JP2012242972A (ja) * 2011-05-17 2012-12-10 Nippon Telegr & Teleph Corp <Ntt> 集約システム及び方法及び資源管理ノード及び計算ノード及び集約処理プログラム
JP2012242975A (ja) * 2011-05-17 2012-12-10 Nippon Telegr & Teleph Corp <Ntt> 分散並列処理キャッシュ装置及び方法及び資源管理ノード及びプログラム
JP2012247979A (ja) * 2011-05-27 2012-12-13 Fujitsu Ltd 処理プログラム、処理方法及び処理装置
JP2013508873A (ja) * 2009-10-27 2013-03-07 エグザリード 情報ストリームの情報を処理する方法およびシステム
WO2013051131A1 (ja) * 2011-10-06 2013-04-11 富士通株式会社 データ処理方法、分散処理システムおよびプログラム
JP2013140510A (ja) * 2012-01-05 2013-07-18 Fujitsu Ltd データ処理方法、分散処理システムおよびプログラム
JP2013541057A (ja) * 2010-06-19 2013-11-07 マップアール テクノロジーズ インコーポレイテッド マップリデュース即時分散ファイルシステム
WO2013179451A1 (ja) * 2012-05-31 2013-12-05 国立大学法人東京大学 並列データ処理システム、計算機および並列データ処理方法
JP2014016700A (ja) * 2012-07-06 2014-01-30 Fujitsu Ltd 情報処理システム、情報処理システムの制御方法及び制御プログラム
WO2014020735A1 (ja) * 2012-08-02 2014-02-06 富士通株式会社 データ処理方法、情報処理装置およびプログラム
JP2014507734A (ja) * 2011-03-04 2014-03-27 富士通株式会社 分散計算方法及び分散計算システム
US9037791B2 (en) 2013-01-22 2015-05-19 International Business Machines Corporation Tiered caching and migration in differing granularities
JP2016119111A (ja) * 2016-01-21 2016-06-30 国立大学法人 東京大学 並列データ処理システム、計算機および並列データ処理方法
JP2017037532A (ja) * 2015-08-11 2017-02-16 日本電信電話株式会社 データキャッシュ方法、ノード装置及びプログラム
JP2018515844A (ja) * 2015-05-04 2018-06-14 アリババ グループ ホウルディング リミテッド データ処理方法及びシステム
CN108334505A (zh) * 2017-01-19 2018-07-27 阿里巴巴集团控股有限公司 一种数据处理方法、装置、服务器及库存系统
US10049049B2 (en) 2013-03-27 2018-08-14 Fujitsu Limited Method and system for caching data managed by plural information processing apparatuses
CN113726845A (zh) * 2021-07-14 2021-11-30 深圳市有为信息技术发展有限公司 车载终端的数据传输方法、装置、车载终端和商用车辆
US11556377B2 (en) 2019-07-23 2023-01-17 Fujitsu Limited Storage medium, task execution management device, and task execution management method
US11726955B2 (en) 2010-06-19 2023-08-15 Hewlett Packard Enterprise Development Lp Methods and apparatus for efficient container location database snapshot operation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1091638A (ja) * 1996-09-17 1998-04-10 Toshiba Corp 検索システム
WO2007022199A2 (en) * 2005-08-15 2007-02-22 Google, Inc. Scalable user clustering based on set similarity
US20080086442A1 (en) * 2006-10-05 2008-04-10 Yahoo! Inc. Mapreduce for distributed database processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1091638A (ja) * 1996-09-17 1998-04-10 Toshiba Corp 検索システム
WO2007022199A2 (en) * 2005-08-15 2007-02-22 Google, Inc. Scalable user clustering based on set similarity
US20080086442A1 (en) * 2006-10-05 2008-04-10 Yahoo! Inc. Mapreduce for distributed database processing

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSNG200700830003; 水野 謙: '並列トランザクショナルアプリケーションのためのプログラミングフレームワーク' 情報処理学会論文誌 第48巻, 20070815, p.41-51, 社団法人情報処理学会 *
CSNG200800733037; 谷村 勇輔: 'MapReduceにおけるRDF-DB処理に適したデータ分散格納方法の提案' 情報処理学会研究報告 Vol.2008 No.74, 20080729, p.223-228, 社団法人情報処理学会 *
JPN6013006994; 谷村 勇輔: 'MapReduceにおけるRDF-DB処理に適したデータ分散格納方法の提案' 情報処理学会研究報告 Vol.2008 No.74, 20080729, p.223-228, 社団法人情報処理学会 *
JPN6013006997; 水野 謙: '並列トランザクショナルアプリケーションのためのプログラミングフレームワーク' 情報処理学会論文誌 第48巻, 20070815, p.41-51, 社団法人情報処理学会 *

Cited By (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013508873A (ja) * 2009-10-27 2013-03-07 エグザリード 情報ストリームの情報を処理する方法およびシステム
US9122769B2 (en) 2009-10-27 2015-09-01 Dassault Systemes Method and system for processing information of a stream of information
US10146793B2 (en) 2010-06-19 2018-12-04 Mapr Technologies, Inc. Map-reduce ready distributed file system
US9798735B2 (en) 2010-06-19 2017-10-24 Mapr Technologies, Inc. Map-reduce ready distributed file system
US9773016B2 (en) 2010-06-19 2017-09-26 Mapr Technologies, Inc. Map-reduce ready distributed file system
US9646024B2 (en) 2010-06-19 2017-05-09 Mapr Technologies, Inc. Map-reduce ready distributed file system
US11995043B2 (en) 2010-06-19 2024-05-28 Hewlett Packard Enterprise Development Lp Map-reduce ready distributed file system
US11100055B2 (en) 2010-06-19 2021-08-24 Hewlett Packard Enterprise Development Lp Map-reduce ready distributed file system
US11657024B2 (en) 2010-06-19 2023-05-23 Hewlett Packard Enterprise Development Lp Map-reduce ready distributed file system
US11726955B2 (en) 2010-06-19 2023-08-15 Hewlett Packard Enterprise Development Lp Methods and apparatus for efficient container location database snapshot operation
JP2013541057A (ja) * 2010-06-19 2013-11-07 マップアール テクノロジーズ インコーポレイテッド マップリデュース即時分散ファイルシステム
JP2012078927A (ja) * 2010-09-30 2012-04-19 Internatl Business Mach Corp <Ibm> データベースにおけるキャッシュ制御方法、システム及びプログラム
CN101976534A (zh) * 2010-11-01 2011-02-16 百度在线网络技术(北京)有限公司 电子地图生成的方法及装置
JP2012160013A (ja) * 2011-01-31 2012-08-23 Nippon Telegr & Teleph Corp <Ntt> データ分析及び機械学習処理装置及び方法及びプログラム
JP2014507734A (ja) * 2011-03-04 2014-03-27 富士通株式会社 分散計算方法及び分散計算システム
JP2012190078A (ja) * 2011-03-08 2012-10-04 Fujitsu Ltd 処理装置、分散処理システム、及び処理プログラム
JPWO2012131927A1 (ja) * 2011-03-30 2014-07-24 株式会社日立製作所 計算機システム及びデータ管理方法
WO2012131927A1 (ja) * 2011-03-30 2012-10-04 株式会社日立製作所 計算機システム及びデータ管理方法
JP5342087B2 (ja) * 2011-03-30 2013-11-13 株式会社日立製作所 計算機システム及びデータ管理方法
JP2012242972A (ja) * 2011-05-17 2012-12-10 Nippon Telegr & Teleph Corp <Ntt> 集約システム及び方法及び資源管理ノード及び計算ノード及び集約処理プログラム
JP2012242975A (ja) * 2011-05-17 2012-12-10 Nippon Telegr & Teleph Corp <Ntt> 分散並列処理キャッシュ装置及び方法及び資源管理ノード及びプログラム
JP2012247979A (ja) * 2011-05-27 2012-12-13 Fujitsu Ltd 処理プログラム、処理方法及び処理装置
WO2013051131A1 (ja) * 2011-10-06 2013-04-11 富士通株式会社 データ処理方法、分散処理システムおよびプログラム
US9910821B2 (en) 2011-10-06 2018-03-06 Fujitsu Limited Data processing method, distributed processing system, and program
US20140215003A1 (en) * 2011-10-06 2014-07-31 Fujitsu Limited Data processing method, distributed processing system, and program
JPWO2013051131A1 (ja) * 2011-10-06 2015-03-30 富士通株式会社 データ処理方法、分散処理システムおよびプログラム
EP2765510A4 (en) * 2011-10-06 2016-07-06 Fujitsu Ltd DATA PROCESSING, DISTRIBUTED PROCESSING SYSTEM AND PROGRAM
JP2013140510A (ja) * 2012-01-05 2013-07-18 Fujitsu Ltd データ処理方法、分散処理システムおよびプログラム
JPWO2013179451A1 (ja) * 2012-05-31 2016-01-14 国立大学法人 東京大学 並列データ処理システム、計算機および並列データ処理方法
WO2013179451A1 (ja) * 2012-05-31 2013-12-05 国立大学法人東京大学 並列データ処理システム、計算機および並列データ処理方法
US9841989B2 (en) 2012-05-31 2017-12-12 Hitachi, Ltd. Parallel data processing system, computer, and parallel data processing method
JP2014016700A (ja) * 2012-07-06 2014-01-30 Fujitsu Ltd 情報処理システム、情報処理システムの制御方法及び制御プログラム
JPWO2014020735A1 (ja) * 2012-08-02 2016-07-11 富士通株式会社 データ処理方法、情報処理装置およびプログラム
WO2014020735A1 (ja) * 2012-08-02 2014-02-06 富士通株式会社 データ処理方法、情報処理装置およびプログラム
JP5935889B2 (ja) * 2012-08-02 2016-06-15 富士通株式会社 データ処理方法、情報処理装置およびプログラム
US9285998B2 (en) 2013-01-22 2016-03-15 International Business Machines Corporation Tiered caching and migration in differing granularities
US9465554B2 (en) 2013-01-22 2016-10-11 International Business Machines Corporation Tiered caching and migration in differing granularities
US9037791B2 (en) 2013-01-22 2015-05-19 International Business Machines Corporation Tiered caching and migration in differing granularities
US9471506B2 (en) 2013-01-22 2016-10-18 International Business Machines Corporation Tiered caching and migration in differing granularities
US10049049B2 (en) 2013-03-27 2018-08-14 Fujitsu Limited Method and system for caching data managed by plural information processing apparatuses
JP2018515844A (ja) * 2015-05-04 2018-06-14 アリババ グループ ホウルディング リミテッド データ処理方法及びシステム
US10592491B2 (en) 2015-05-04 2020-03-17 Alibaba Group Holding Limited Distributed data processing
EP3293641B1 (en) * 2015-05-04 2020-06-17 Alibaba Group Holding Limited Data processing method and system
US10872070B2 (en) 2015-05-04 2020-12-22 Advanced New Technologies Co., Ltd. Distributed data processing
JP2017037532A (ja) * 2015-08-11 2017-02-16 日本電信電話株式会社 データキャッシュ方法、ノード装置及びプログラム
JP2016119111A (ja) * 2016-01-21 2016-06-30 国立大学法人 東京大学 並列データ処理システム、計算機および並列データ処理方法
CN108334505B (zh) * 2017-01-19 2022-01-07 阿里巴巴集团控股有限公司 一种数据处理方法、装置、服务器及库存系统
CN108334505A (zh) * 2017-01-19 2018-07-27 阿里巴巴集团控股有限公司 一种数据处理方法、装置、服务器及库存系统
US11556377B2 (en) 2019-07-23 2023-01-17 Fujitsu Limited Storage medium, task execution management device, and task execution management method
CN113726845A (zh) * 2021-07-14 2021-11-30 深圳市有为信息技术发展有限公司 车载终端的数据传输方法、装置、车载终端和商用车辆

Also Published As

Publication number Publication date
JP5229731B2 (ja) 2013-07-03

Similar Documents

Publication Publication Date Title
JP5229731B2 (ja) 更新頻度に基づくキャッシュ機構
JP5584914B2 (ja) 分散計算システム
US10127275B2 (en) Mapping query operations in database systems to hardware based query accelerators
JP6090431B2 (ja) 分散処理のための情報処理方法、情報処理装置及びプログラム、並びに分散処理システム
US8229968B2 (en) Data caching for distributed execution computing
US10394782B2 (en) Chord distributed hash table-based map-reduce system and method
US20150128150A1 (en) Data processing method and information processing apparatus
Zhang et al. MrHeter: improving MapReduce performance in heterogeneous environments
WO2020228378A1 (zh) 一种确定数据库的配置参数的方法及装置
CN103959275A (zh) 动态进程/对象范围的存储器关联性调整器
Wang et al. Phase-reconfigurable shuffle optimization for Hadoop MapReduce
CN113767375A (zh) 对ml加速器的机器学习模型更新
CN114416310A (zh) 一种多处理器负载均衡方法、计算设备及存储介质
CN108052535B (zh) 基于多处理器平台的视觉特征并行快速匹配方法和系统
JP2013218636A (ja) クラスタリング処理装置、クラスタリング処理方法、及びプログラム
Arcas-Abella et al. Hardware acceleration for query processing: leveraging FPGAs, CPUs, and memory
Awasthi et al. System-level characterization of datacenter applications
KR20190095489A (ko) 그래프 처리 시스템 및 그래프 처리 시스템의 동작 방법
JP6189266B2 (ja) データ処理装置、データ処理方法及びデータ処理プログラム
US11568320B2 (en) Handling system-characteristics drift in machine learning applications
JP2023180315A (ja) 変換プログラムおよび変換処理方法
Körner et al. Distributed model checking using ProB
US20180329756A1 (en) Distributed processing system, distributed processing method, and storage medium
Ovalle et al. Distributed Cache Strategies for Machine Learning Classification Tasks over Cluster Computing Resources
KR20220142059A (ko) 이미지 기반 딥 러닝 학습의 배칭 연산 가속을 위한 인 메모리 소프트웨어 디코딩 캐시 구조 및 관리 기법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110816

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130207

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20130220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130312

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160329

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees