(57)【要約】  本発明は、分散処理システムにおいて、データ量の増大によるデータアクセス処理の性能の悪化を防止して性能を向上させる技術を提供する。  分散処理システム１は、データ保持装置１１と、分散処理実行部１０１およびデータアクセス処理部１０２を有する分散処理装置１０とを備える。データ保持装置１１は、分散処理において利用されるデータを保持する。分散処理実行部１０１は、分散処理において自装置に割り当てられたタスクを実行する。データアクセス処理部１０２は、分散処理実行部１０１によるデータ保持装置１１に対するアクセス処理のリクエストを、データ保持装置１１の記憶領域を構成するブロック毎に集約することにより、ブロック毎にアクセス処理命令を発行する。
2017082323.tif 000002
【特許請求の範囲】
【請求項１】
分散処理において利用されるデータを保持するデータ保持装置と、
前記分散処理において自装置に割り当てられたタスクを実行する分散処理実行手段、および、前記分散処理実行手段による前記データ保持装置に対するアクセス処理のリクエストを、前記データ保持装置の記憶領域を構成するブロック毎に集約することにより、前記ブロック毎にアクセス処理命令を発行するデータアクセス処理手段をそれぞれ備えた１つ以上の分散処理装置と、
を備えた分散処理システム。
【請求項２】
前記データ保持装置に保持されるデータを特定する情報および該データの格納されるブロックを示す情報を対応付けて保持する一覧情報保持手段と、
前記一覧情報保持手段に保持された情報に基づいて、前記分散処理における前記データ保持装置に対する前記アクセス処理を前記ブロック単位で分散させるよう分割したタスク群のそれぞれを、前記各分散処理装置に割り当てる分散処理割当手段とをさらに備え、
前記分散処理装置の前記データアクセス処理手段は、前記アクセス処理が書き込み処理の場合に、前記書き込み対象のデータを特定する情報および書き込み先のブロックを示す情報を対応付けて、前記一覧情報保持手段に登録することを特徴とする請求項１に記載の分散処理システム。
【請求項３】
前記データ保持装置において前記データを格納可能な記憶領域の全体容量を調整する容量調整手段をさらに備えたことを特徴とする請求項１または請求項２に記載の分散処理システム。
【請求項４】
分散処理において自装置に割り当てられたタスクを実行する分散処理実行手段と、
前記分散処理で利用されるデータを保持するデータ保持装置に対する前記分散処理実行手段によるアクセス処理のリクエストを、前記データ保持装置の記憶領域を構成するブロック毎に集約することにより、前記ブロック毎にアクセス処理命令を発行するデータアクセス処理手段と、
を備えた分散処理装置。
【請求項５】
分散処理を実行する１つ以上の分散処理装置のそれぞれが、
自装置に割り当てられたタスクを実行する際に、
前記分散処理において利用されるデータを保持するデータ保持装置に対するアクセス処理のリクエストを、前記データ保持装置の記憶領域を構成するブロック毎に集約し、
前記ブロック毎にアクセス処理命令を発行する方法。
【請求項６】
分散処理において自装置に割り当てられたタスクを実行する分散処理実行ステップと、
前記分散処理で利用されるデータを保持するデータ保持装置に対する前記分散処理実行ステップにおけるアクセス処理のリクエストを、前記データ保持装置の記憶領域を構成するブロック毎に集約することにより、前記ブロック毎にアクセス処理命令を発行するデータアクセス処理ステップと、
を、コンピュータ装置に実行させるプログラムを記憶した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理技術に関する。
【背景技術】
【０００２】
近年、大規模なデータを対象に機械学習などのデータ分析処理を行うことが一般的になってきている。その代表的なフレームワークの実装として、例えばＨａｄｏｏｐのような分散処理ミドルウェアが挙げられる。Ｈａｄｏｏｐは、Ｇｏｏｇｌｅ社によって提案されたＭａｐＲｅｄｕｃｅと呼ばれるプログラミングモデルをオープンソースとして実現したものとして、一般に用いられている。【０００３】
ＭａｐＲｅｄｕｃｅは、Ｍａｐ関数およびＲｅｄｕｃｅ関数の組み合わせにより大規模な分散処理をプログラミングする方法である。ＭａｐＲｅｄｕｃｅでは、Ｍａｐ関数やＲｅｄｕｃｅ関数を繰り返し計算するプログラムが実行される。このような繰返し計算では、Ｍａｐ関数およびＲｅｄｕｃｅ関数間で受け渡される中間データをストレージ装置に読み書きするために性能が遅くなってしまう、という課題がある。このような繰り返し計算は、近年、機械学習などの大規模データの分析処理において頻繁に出現する。そのため、この性能問題の解決は、重要な課題である。【０００４】
このような課題に関連する技術の一例が、非特許文献１に記載されている。この関連技術は、繰り返し計算の中間データを計算機クラスタの主記憶に格納し、ストレージ装置への読み書きを取り除きオンメモリで処理することで、高速化を実現している。【０００５】
また、このような課題に関連する技術の他の例が、特許文献１に記載されている。この関連技術は、分散して処理を行う情報処理装置のいずれかがあるデータに対してアクセスを行うと、そのデータとの関連性を有するデータを管理する情報処理装置が、該当する関連性を有するデータをキャッシュに展開しておく。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】“Ａｐａｃｈ  Ｓｐａｒｋ”、インターネット＜URL：http://spark.apache.org/＞
【特許文献】
【０００７】
【特許文献１】国際公開第２０１４／１５５５５３号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述の関連技術には、以下の課題がある。【０００９】
Ｍａｐ関数およびＲｅｄｕｃｅ関数を利用する一般的なシステムでは、中間データは、キー・バリュー形式でアクセスされることが多い。そのため、このような一般的なシステムは、中間データをＫＶＳ（key-value store：キー・バリュー・ストア）形式のデータストレージシステムに格納する。ところが、このようなシステムは、ＫＶＳ形式のデータストレージシステムへのアクセスをキー単位で行い、それらのアクセス処理における読み込み先や書き込み先の格納位置を考慮していない。その結果、このような一般的なシステムは、データ量が増大すると、読み込み処理でのデータ処理量や読み込み回数、書き込み処理での書き込み回数等を増大させ、データアクセス処理の性能を悪化させる。【００１０】
非特許文献１に記載された関連技術は、主記憶に中間データが載りきらない場合、性能の低下を招くという問題がある。これは、一般的な計算機クラスタにおいて、主記憶の容量は限られているためである。例えば、主記憶としてのＤＲＡＭ（Dynamic Random Access Memory）の容量は、たかだか１桁テラバイト程度である。近年、データ量の増大により、繰り返し計算の中間データは増大している。そのため、増大する中間データの読み書きによる性能の低下の問題を、非特許文献１に記載された技術で解決するためには、大量の主記憶を用意する必要がある。そのためには、多数の主記憶および計算機を用意しなければならず、著しくコストが掛かってしまう。【００１１】
また、特許文献１に記載された関連技術は、分散処理で利用されるデータを先読みしてキャッシュヒット率を向上させるものの、先読みするデータを保持する装置に対するアクセス処理の効率化については言及していない。したがって、この関連技術は、利用されるデータの増大に伴うデータアクセス処理の性能の悪化については対応することができない。【００１２】
本発明は、上述の課題を解決するためになされたものである。すなわち、本発明は、分散処理システムにおいて、データ量の増大によるデータアクセス処理の性能の悪化を防止して性能を向上させる技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するために、本発明の分散処理システムは、分散処理において利用されるデータを保持するデータ保持装置と、前記分散処理において自装置に割り当てられたタスクを実行する分散処理実行手段、および、前記分散処理実行手段による前記データ保持装置に対するアクセス処理のリクエストを、前記データ保持装置の記憶領域を構成するブロック毎に集約することにより、前記ブロック毎にアクセス処理命令を発行するデータアクセス処理手段をそれぞれ備えた１つ以上の分散処理装置と、を備える。【００１４】
また、本発明の分散処理装置は、分散処理において自装置に割り当てられたタスクを実行する分散処理実行手段と、前記分散処理で利用されるデータを保持するデータ保持装置に対する前記分散処理実行手段によるアクセス処理のリクエストを、前記データ保持装置の記憶領域を構成するブロック毎に集約することにより、前記ブロック毎にアクセス処理命令を発行するデータアクセス処理手段と、を備える。【００１５】
また、本発明の方法は、分散処理を実行する１つ以上の分散処理装置のそれぞれが、自装置に割り当てられたタスクを実行する際に、前記分散処理において利用されるデータを保持するデータ保持装置に対するアクセス処理のリクエストを、前記データ保持装置の記憶領域を構成するブロック毎に集約し、前記ブロック毎にアクセス処理命令を発行する。【００１６】
また、本発明の記憶媒体は、分散処理において自装置に割り当てられたタスクを実行する分散処理実行ステップと、前記分散処理で利用されるデータを保持するデータ保持装置に対する前記分散処理実行ステップにおけるアクセス処理のリクエストを、前記データ保持装置の記憶領域を構成するブロック毎に集約することにより、前記ブロック毎にアクセス処理命令を発行するデータアクセス処理ステップと、を、コンピュータ装置に実行させるプログラムを記憶している。
【発明の効果】
【００１７】
本発明は、分散処理システムにおいて、データ量の増大によるデータアクセス処理の性能の悪化を防止して性能を向上させる技術を提供することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施の形態としての分散処理システムの構成を示すブロック図である。
【図２】本発明の第１の実施の形態としての分散処理システムのハードウェア構成の一例を示す図である。
【図３】本発明の第１の実施の形態としての分散処理システムのハードウェア構成の他の一例を示す図である。
【図４】本発明の第１の実施の形態としての分散処理システムのハードウェア構成のさらに他の一例を示す図である。
【図５】本発明の第１の実施の形態としての分散処理システムの動作を説明するフローチャートである。
【図６】本発明の第２の実施の形態としての分散処理システムの構成を示すブロック図である。
【図７】本発明の第２の実施の形態において一覧情報保持部に保持される情報の一例を説明する図である。
【図８】本発明の第２の実施の形態におけるデータアクセス処理部の構成を示すブロック図である。
【図９】本発明の第２の実施の形態としての分散処理システムの動作の概要を説明するフローチャートである。
【図１０】本発明の第２の実施の形態としての分散処理システムの書き込みリクエストの一時保持動作を説明するフローチャートである。
【図１１】本発明の第２の実施の形態としての分散処理システムの書き込み処理を説明するフローチャートである。
【図１２】本発明の第２の実施の形態としての分散処理システムの読み込みリクエストの一時保持動作を説明するフローチャートである。
【図１３】本発明の第２の実施の形態としての分散処理システムの読み込み処理を説明するフローチャートである。
【図１４】本発明の第２の実施の形態としての分散処理システムの容量を調整するための動作を説明するフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００２０】
（第１の実施の形態）
本発明の第１の実施の形態としての分散処理システム１の機能ブロック構成を図１に示す。図１において、分散処理システム１は、１つ以上の分散処理装置１０と、データ保持装置１１とを備える。また、分散処理装置１０は、分散処理実行部１０１と、データアクセス処理部１０２とを含む。なお、図１には、３つの分散処理装置１０が示されているが、本実施の形態における分散処理システム１が備える分散処理装置１０の数は、３つに限定されない。
【００２１】
ここで、分散処理システム１は、図２に示すように、リソース分離アーキテクチャによるハードウェア構成が可能である。リソース分離アーキテクチャとは、インターコネクトネットワークによってストレージ等のリソースを演算処理装置（ＣＰＵ：Central Processing Unit）と結合し、サーバを構築するアプローチである。リソース分離アーキテクチャは、計算機を構成するコンポーネントであるＣＰＵ、ストレージ、電源、ネットワーク等のリソースを分離することで、必要に応じてそれらの差し替え、増設、縮退などを可能にする。このようなアーキテクチャでは、各ＣＰＵは、ラック内部のインターコネクトネットワークを介してコンポーネントを組み合わることにより、サーバを構築する。
【００２２】
図２において、分散処理システム１は、１つ以上の計算機１０００と、１つ以上の外部記憶装置２０００とによって構成される。また、計算機１０００の群および外部記憶装置２０００の群は、インターコネクトネットワーク３０００を介して互いに通信可能に接続される。なお、図２には、計算機１０００および外部記憶装置２０００を３個ずつ示しているが、本実施の形態における計算機１０００および外部記憶装置２０００の数を限定するものではない。
【００２３】
各々の計算機１０００は、ＣＰＵ１００１と、メモリ１００２と、ネットワークインタフェース１００３とを含んで構成される。メモリ１００２は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等によって構成される。また、メモリ１００２は、ＨＤＤ（hard disk drive）やＳＳＤ（solid state drive）、不揮発性メモリ等の補助記憶装置を含んでいてもよい。ネットワークインタフェース１００３は、インターコネクトネットワーク３０００に接続するインタフェースである。この場合、１つ以上の分散処理装置１０は、それぞれ、計算機１０００によって構成される。また、分散処理装置１０の各機能ブロックは、ネットワークインタフェース１００３と、メモリ１００２に記憶されたコンピュータ・プログラムを読み込んで実行するＣＰＵ１００１とによって構成される。
【００２４】
各々の外部記憶装置２０００は、データを記憶する装置である。また、外部記憶装置２０００は、記憶するデータに対するアクセス処理命令を外部から受け付けて処理する機能を持つ。また、外部記憶装置２０００は、インターコネクトネットワーク３０００に接続するインタフェースを持つ。外部記憶装置２０００の記憶領域は、フラッシュメモリ、ＤＲＡＭ、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＨＤＤ、ＳＳＤ等によって構成可能である。この場合、データ保持装置１１は、１つ以上の外部記憶装置２０００によって構成される。
【００２５】
インターコネクトネットワーク３０００は、計算機１０００の群および外部記憶装置２０００の群の間を接続する。インターコネクトネットワーク３０００は、光ケーブルおよびスイッチ等によって構成可能である。あるいは、インターコネクトネットワーク３０００は、Ｅｔｈｅｒｎｅｔ（登録商標）またはＰＣＩ−ｅ（Peripheral Component Interconnect-Express）のケーブル等によって構成可能である。
【００２６】
あるいは、インターコネクトネットワーク３０００は、ＥｘｐＥｔｈｅｒ（登録商標）によって構成可能である。ＥｘｐＥｔｈｅｒは、ＰＣＩ−ｅネットワークをＥｔｈｅｒｎｅｔで構成する技術である。この場合、計算機１０００のネットワークインタフェース１００３として、ＥｘｐＥｔｈｅｒ機能を備えるインタフェースを採用すればよい。また、外部記憶装置２０００として、ＥｘｐＥｔｈｅｒ機能を備えるデバイスを採用すればよい。
【００２７】
そのようなデバイスの例としては、ＰＣＩ−ｅに対応したフラッシュメモリや、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）カードおよびＲＡＩＤカードを経由したＨＤＤまたはＳＤＤ群が挙げられる。また、そのようなデバイスの他の例としては、ＧＰＧＰＵ（General-purpose computing on graphics processing units）機能および記憶装置を備えるカードが挙げられる。また、そのようなデバイスのさらに他の例としては、Ｉｎｔｅｌ  Ｘｅｏｎ  ＰｈｉのようなＭＩＣ（Many Integrated Core）アーキテクチャに基づく演算ボード等が挙げられる。
【００２８】
以上の構成により、インターコネクトネットワーク３０００としてのＰＣＩ−ｅをＥｔｈｅｒｎｅｔへ拡張でき、リソース分離型アーキテクチャに類似したアーキテクチャが実現される。
【００２９】
このように、本実施の形態における分散処理システム１は、分散処理装置１０の群にインターコネクトネットワーク３０００を介して接続された高速なデータ保持装置１１に、分散処理で利用されるデータを格納する構成を取る。この場合、データ保持装置１１を構成する各外部記憶装置２０００は、ＮＡＮＤ  Ｆｌａｓｈのように、ＨＤＤより高速であり、かつ、ＤＲＡＭより低速である代わりにコスト対容量に優れたストレージデバイスで構成されることが望ましい。
【００３０】
また、その他の例として、インターコネクトネットワーク３０００は、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌや、ＦＣｏＥ（Fibre Channel over Ethernet）よって構成されてもよい。この場合、計算機１０００は、ネットワークインタフェース１００３として、ホストバスアダプタあるいはＥｔｈｅｒｎｅｔカードを備えていればよい。また、外部記憶装置２０００は、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌや、ＦＣｏＥに接続するインタフェースを備えるストレージ装置であればよい。また、このようなアーキテクチャにおいては、計算機１０００間を接続するネットワークは、インターコネクトネットワーク３０００とは別に用意されてもよい。例えば、各々の計算機１０００の間は、ＴＣＰ（Transmission Control Protocol）／ＩＰ（Internet Protocol）によるＥｔｈｅｒｎｅｔで接続され、計算機１０００および外部記憶装置２０００の間は、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌで接続されてもよい。
【００３１】
図２を用いて説明した上述のハードウェア構成は、計算機１０００が、外部記憶装置２０００群に低遅延でアクセスすることを可能にする。そして、上述のハードウェア構成は、１つ以上の計算機１０００によって外部記憶装置２０００の群を共有させることを可能にする。
【００３２】
なお、分散処理システム１のハードウェア構成としては、他の構成も可能である。他のハードウェア構成例を図３に示す。図３では、分散処理システム１は、１つ以上の計算機１０００によって構成される。各計算機１０００の間は、任意のネットワーク４０００によって通信可能に接続されている。この場合、分散処理装置１０の各々は、計算機１０００によって構成される。また、データ保持装置１１は、計算機１０００の群が有するメモリ１００２の群によって構成される。
【００３３】
また、分散処理システム１のさらに他のハードウェア構成例を図４に示す。図４では、分散処理システム１は、１つ以上の計算機１０００と、１つ以上の計算機５０００とを含んで構成される。計算機１０００の群および計算機５０００の群は、任意のネットワーク４０００によって通信可能に接続されている。この場合、分散処理装置１０の各々は、計算機１０００によって構成される。また、データ保持装置１１は、計算機５０００の群によって構成される。
【００３４】
なお、分散処理システム１および各機能ブロックのハードウェア構成は、図２〜図４を用いて説明した上述の構成に限定されない。
【００３５】
次に、各機能ブロックの詳細について説明する。
【００３６】
データ保持装置１１は、分散処理において利用されるデータを保持する。具体的には、データ保持装置１１に保持されるデータは、分散処理を実行する１つ以上の分散処理装置１０の間で共有されるデータであってもよい。
【００３７】
各々の分散処理装置１０の分散処理実行部１０１は、分散処理において自装置に割り当てられたタスクを実行する。例えば、分散処理実行部１０１は、任意の分散処理ミドルウェアにおけるスケジューラから割り当てられたタスクを実行する。
【００３８】
データアクセス処理部１０２は、分散処理実行部１０１によるデータ保持装置１１に対するアクセス処理のリクエストを、データ保持装置１１のブロックごとに集約する。具体的には、分散処理実行部１０１によって実行されるタスクは、データ保持装置１１に保持されるデータに対する読み込み処理のリクエストを発生させる。また、分散処理実行部１０１によって実行されるタスクは、生成されたデータをデータ保持装置１１に対して書き込む処理のリクエストを発生させる。なお、データ保持装置１１のブロックとは、データ保持装置１１において、分散処理で利用されるデータを記憶可能な記憶領域を構成する各領域をいう。例えば、ブロックは、そのような記憶領域が所定サイズに分割された領域であってもよい。そして、データアクセス処理部１０２は、ブロック毎に、集約したアクセス処理命令を発行する。
【００３９】
以上のように構成された分散処理システム１における各分散処理装置１０の動作を、図５を参照して説明する。
【００４０】
まず、分散処理実行部１０１は、分散処理において自装置に割り当てられたタスクを実行する（ステップＳ１）。
【００４１】
次に、データアクセス処理部１０２は、ステップＳ１において発生するデータ保持装置１１に対するアクセス処理のリクエストを、ブロック毎に集約する（ステップＳ２）。
【００４２】
例えば、データアクセス処理部１０２は、ステップＳ１において発生するアクセス処理のリクエストを一時的に保持しておく。そして、データアクセス処理部１０２は、所定の契機において、保持しておいた各アクセス処理のリクエストが対象とするデータに応じたブロックを求めることにより、ブロック毎にアクセス処理のリクエストを集約してもよい。
【００４３】
次に、データアクセス処理部１０２は、ブロック毎に、集約したアクセス処理命令を発行する（ステップＳ３）。
【００４４】
例えば、データアクセス処理部１０２は、前述の所定の契機において、集約したアクセス処理命令をブロック毎に発行してもよい。
【００４５】
そして、分散処理装置１０は、自装置に割り当てられた次のタスクがあれば（ステップＳ４でＹｅｓ）、ステップＳ１からの動作を繰り返す。また、分散処理装置１０は、自装置に割り当てられた次のタスクがなければ（ステップＳ４でＮｏ）、処理を終了する。
【００４６】
次に、本発明の第１の実施の形態の効果について述べる。
【００４７】
本発明の第１の実施の形態としての分散処理システムは、データ量の増大によるデータアクセス処理の性能の悪化を防止して性能を向上させる。
【００４８】
その理由について述べる。本実施の形態では、分散処理装置の分散処理実行部が、自装置に割り当てられたタスクを実行する。その際に、タスクにおいて利用するデータまたはタスクにおいて生成されるデータを保持するデータ保持装置に対するアクセス処理が発生する。そこで、データアクセス処理部が、データ保持装置に対するアクセス処理のリクエストを、データ保持装置の記憶領域におけるアクセス先のブロックごとに集約し、ブロック毎に、集約したアクセス処理命令を発行するからである。
【００４９】
このように、本実施の形態は、データ保持装置に対するアクセス処理を、アクセス先のブロック毎に集約して発行するので、データ量が増大しても、集約しない場合と比べてアクセス処理回数を大幅に減らすことができる。つまり、本実施の形態は、データ保持装置に対するアクセス負荷を軽減する。その結果、本実施の形態は、データアクセス処理の性能を大幅に向上させることになる。
【００５０】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。なお、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【００５１】
まず、本発明の第２の実施の形態としての分散処理システム２の構成を図６に示す。図６において、分散処理システム２は、分散処理装置２０と、データ保持装置２１と、一覧情報保持部２２と、分散処理割当部２３と、容量調整部２４とを備える。また、分散処理装置２０は、分散処理実行部２０１と、データアクセス処理部２０２とを含む。また、データ保持装置２１は、中間データ保持部２１１を含む。
【００５２】
ここで、分散処理システム２は、図２を参照して説明した本発明の第１の実施の形態と同様のハードウェア要素によって構成可能である。この場合、一覧情報保持部２２は、計算機１０００のメモリ１００２によって構成される。あるいは、一覧情報保持部２２は、外部記憶装置２０００の記憶領域によって構成されていてもよい。また、分散処理割当部２３および容量調整部２４は、それぞれ、任意の1つ以上の計算機１０００の上に実現され、そのネットワークインタフェース１００３と、メモリ１００２に格納されたコンピュータ・プログラムを読み込んで実行するＣＰＵ１００１とによって構成される。また、分散処理システム２は、図３〜図４を参照して説明した本発明の第１の実施の形態における他のハードウェア構成例も採用可能である。なお、分散処理システム２のハードウェア構成は、上述の構成に限定されない。
【００５３】
データ保持装置２１は、中間データ保持部２１１に、分散処理における繰返し計算の中間データを記憶する。そのような中間データは、１つ以上の分散処理装置２０にそれぞれ割り当てられるタスクにより生成され利用されるデータである。中間データ保持部２１１は、１つのブロック内に、キー・バリュー形式で表された１つ以上の中間データを格納可能となっている。
【００５４】
なお、データ保持装置２１は、中間データの他に、分散処理に必要なその他のデータを保持していてもよい。
【００５５】
一覧情報保持部２２は、中間データ保持部２１１に保持される中間データを特定する情報と、該中間データが保持されるブロックを示す情報とを対応付けて保持する。ここでは、中間データを特定する情報として、キーが採用される。また、ブロックを示す情報として、ブロックを識別するブロックＩＤが採用される。以降、中間データのキーおよびブロックＩＤを対応付けた情報を、一覧情報とも記載する。
【００５６】
例えば、一覧情報保持部２２に保持される一覧情報の一例を図７に示す。図７において、各行は、中間データ保持部２１１におけるブロックＩＤと、そのブロックに保持される中間データのキーとを表している。
【００５７】
分散処理割当部２３は、分散処理において各分散処理装置２０に分散して実行させるタスクを割り当てる。例えば、分散処理割当部２３は、任意の分散処理ミドルウェアにおけるＭａｐ／Ｒｅｄｕｃｅ関数等の処理をタスクとして各分散処理装置２０に割り当ててもよい。また、例えば、分散処理割当部２３は、各分散処理装置２０の状態（例えば、ストレージのデータ配置状態）等に基づいて、適切な分散処理装置２０にタスクを割り当ててもよい。
【００５８】
また、分散処理割当部２３は、既に中間データ保持部２１１に格納されている中間データに対するアクセスを含む処理については、次のようにしてタスクを割り当てる。すなわち、この場合、分散処理割当部２３は、一覧情報保持部２２に保持された情報に基づいて、中間データ保持部２１１に対するアクセス処理をブロック単位で分散させたタスクを、各分散処理装置２０に割り当てる。
【００５９】
また、分散処理割当部２３は、後述の容量調整部２４に対して、中間データ保持部２１１の容量の調整処理を依頼する。
【００６０】
容量調整部２４は、データ保持装置２１における中間データ保持部２１１の容量を調整する。ここで、中間データ保持部２１１の容量を調整する理由について説明する。ブロックＩＤ毎にデータアクセス命令を集約することによるアクセス効率の向上は、中間データ保持部２１１の容量によって異なる。同一のブロックに複数の中間データが格納されていなければ、アクセス効率は向上しない。しかしながら、同一ブロックに既に多数の中間データが格納された状態では、そのブロックには他の中間データが入り切らない。この場合、データアクセス処理部２０２は、他の空いているブロックを探索することになる。探索の方法としては、キーまたはそのハッシュ値に適当な値を付加して再ハッシュする（一般的にダブルハッシング法と呼ばれる）方法を用いて、他のブロックに中間データを格納する方法がある。この再ハッシュが頻繁になると、キーの探索時に多数の記憶領域へのアクセスが必要となり、性能が悪化する。つまり、中間データ保持部２１１の容量を小さくし、中間データが詰まっていればいるほど（充填率がより高いほど）、中間データを利用する際の読み込み処理の集約効率が高くなるが、キーの探索にはより多くの時間が必要となる。一方、中間データ保持部２１１の容量を大きくして、中間データの充填率が低くなるほど、キーの探索にかかる時間は増大しないが、読み込み処理の集約効率が高くならない。つまり、中間データ保持部２１１を適切な容量に調整することにより、キーの探索にかかる時間をそれほど増大させずに読み込み処理の集約効率を高くすることができる。
【００６１】
そこで、容量調整部２４は、中間データ保持部２１１の容量を変更する処理を行う。このとき、容量調整部２４は、中間データとして保持することが想定される総容量に基づいて、中間データ保持部２１１の容量を決定し調整してもよい。なお、容量調整部２４は、想定される中間データの総容量として、入力装置（図示せず）を介して入力された値を利用してもよい。この場合、容量調整部２４は、分散処理システム２による一連のタスク群の開始前に容量を調整しておいてもよい。あるいは、容量調整部２４は、分散処理システム２による一連のタスク群の実行中に、発生する中間データの容量に基づいてその総容量を予測し、予測した総容量に基づいて中間データ保持部２１１の容量を決定し調整してもよい。
【００６２】
なお、中間データの総容量に対する適切な中間データ保持部２１１のサイズは、アクセスパターンの傾向に応じて定められる。例えば、少なくとも３ブロック以内のアクセスで、要求されるキーの中間データを取得できるようにすることを優先する場合、中間データ保持部２１１の容量は、中間データの総容量に対して約２倍に規定されることが望ましい。また、例えば、中間データの読み込み処理の集約効率を最大限高めることを優先する場合、中間データ保持部２１１の容量は、中間データの総容量と略同容量に規定されることが望ましい。
【００６３】
分散処理実行部２０１は、分散処理割当部２３によって自装置に割り当てられたタスクを実行する。例えば、前述のように、割り当てられるタスクは、Ｍａｐ／Ｒｅｄｕｃｅ関数等の処理であってもよい。
【００６４】
データアクセス処理部２０２は、本発明の第１の実施の形態におけるデータアクセス処理部１０２と同様に構成されることに加えて、次のように構成される。すなわち、データアクセス処理部２０２は、分散処理実行部２０１によって実行されるタスクに含まれるアクセス処理が書き込み処理の場合、書き込み対象のデータを特定するキーおよび書き込み先のブロックＩＤを、互いに対応付けて、一覧情報保持部２２に登録する。また、データアクセス処理部２０２は、分散処理実行部２０１によって実行されるタスクに含まれるアクセス処理が読み込み処理の場合、一覧情報保持部２２を参照してそのアクセス先のブロックＩＤを求め、ブロックＩＤ毎に読み込みリクエストを集約してもよい。
【００６５】
ここで、タスクが必要とするデータは大きく分けて２種類存在する。ユーザによって要求されるデータ処理プログラムは、複数のタスクが連続して処理されることで実行される。以降、ユーザによって要求されるデータ処理プログラムを、ジョブとも記載する。このとき、タスクが必要とするデータの１種類目は、ジョブにおいて最初に処理される１つ以上のタスクが必要とする元データである。また、２種類目は、タスクの処理結果であって次以降のタスクへ渡される中間データである。なお、データ処理プログラムによって出力される最終データも、中間データに含まれるものとする。
【００６６】
そこで、データアクセス処理部２０２は、元データを、分散処理システム２の外部から読み込んでもよい。あるいは、元データが、データ保持装置２１に格納されている場合、データアクセス処理部２０２は、元データを、データ保持装置２１から読み込んでもよい。あるいは、元データが、分散処理装置２０の群を構成する計算機１０００の群のメモリ１００２に格納されている場合、データアクセス処理部２０２は、元データを計算機１０００の群のメモリ１００２の群から読み込んでもよい。
【００６７】
データアクセス処理部２０２のさらに詳細な機能ブロック構成例を図８に示す。図８において、データアクセス処理部２０２は、一時保持部２０３と、格納位置算出部２０４と、命令発行部２０５と、一覧情報登録部２０６と、命令開始部２０７とを含む。
【００６８】
一時保持部２０３は、分散処理実行部２０１による中間データの読み書きリクエストを、一時的にバッファリングする領域である。
【００６９】
格納位置算出部２０４は、一時保持部２０３にバッファリングされた読み書きリクエストに対して、読み書き先となるブロックを特定する情報を算出する。例えば、格納位置算出部２０４は、読み書きの対象となる中間データのキーに基づいて、データ保持装置２１におけるブロックＩＤを算出し、そのアドレスを算出すればよい。
【００７０】
具体的には、格納位置算出部２０４は、中間データのキーに対応するブロックＩＤを求める。また、格納位置算出部２０４は、ブロックＩＤに基づきそのアドレスを算出可能である。例えば、格納位置算出部２０４は、キーおよびブロックＩＤの対応関係を表す情報に基づいて、キーからブロックＩＤを求めてもよい。また、格納位置算出部２０４は、リクエストが読み込み命令の場合、一覧情報保持部２２を参照することにより、対象となる中間データのキーに対応付けられたブロックＩＤを求めてもよい。また、例えば、格納位置算出部２０４は、キーにハッシュ関数を適用することにより、ブロックＩＤを求めてもよい。
【００７１】
例えば、ハッシュ関数を用いてブロックＩＤを求めアドレスを算出する場合の詳細について説明する。ここでは、ブロックＩＤとして、ブロックの先頭から順に、０から始まる通し番号が付与されていることを想定する。このとき、格納位置算出部２０４は、キーのハッシュ値をハッシュ関数により算出し、算出したハッシュ値をブロックの総数で除算した剰余を算出する。そして、格納位置算出部２０４は、その剰余を、その中間データを格納するブロックのブロックＩＤとする。例えば、ある中間データのキーに対して上述のようにして求めた剰余が２である場合、格納位置算出部２０４は、ブロックＩＤが２、すなわち、先頭から３番目のブロックを、この中間データのアクセス先として算出する。そして、格納位置算出部２０４は、該当するブロックのアドレスを、中間データ保持部２１１の先頭領域のアドレスおよびブロックサイズに基づいて算出すればよい。
【００７２】
なお、データ保持装置２１が複数の外部記憶装置２０００によって構成されている場合、格納位置算出部２０４は、まず初めに、いずれの外部記憶装置２０００上の中間データ保持部２１１にその中間データを格納するかを決定することで、アクセス先を振り分けてもよい。その後、上述のように、その外部記憶装置２０００上の中間データ保持部２１１におけるブロック総数に基づいて上述の剰余を用いてアドレスを算出してもよい。そのような振り分け処理には、例えば、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇと呼ばれる技術を適用してもよい。
【００７３】
また、格納位置算出部２０４は、アクセス先に特定したブロックのアドレスとして、物理アドレスまたは論理アドレスを算出する。なお、データ保持装置２１が複数の外部記憶装置２０００によって構成される場合、格納位置算出部２０４は、アクセス先に特定したブロックのアドレスとして、物理アドレスまたは論理アドレスに加えて、さらに、外部記憶装置２０００を特定する情報を算出する。外部記憶装置２０００を特定する情報としては、例えば、ＩＰアドレスまたはＭＡＣ（Media Access Control Access）アドレス等がある。
【００７４】
命令発行部２０５は、格納位置算出部２０４によって算出されたブロックＩＤ毎に、データアクセス命令を集約し、発行する。なお、ブロックに格納される中間データが更新される場合、データ保持装置２１には排他制御が必要となる。その場合、データ保持装置２１には、排他制御の機能が備えられているものとする。
【００７５】
一覧情報登録部２０６は、中間データの書き込み処理と連動して、一覧情報保持部２２に、書き込まれた中間データのキーと、書き込まれたブロックを示す情報（ここでは、ブロックＩＤ）とを、互いに対応付けて登録する。
【００７６】
命令開始部２０７は、一時保持部２０３にバッファリングされたリクエスト群を、所定の契機において処理する。具体的には、命令開始部２０７は、一時保持部２０３に保持されたリクエストのリストから、一括して処理可能なリクエスト群を集約した命令を実行する。つまり、命令開始部２０７は、同一ブロックに格納されている中間データ群の読み込みリクエスト群を、１つの読み込み命令として集約し発行する。また、命令開始部２０７は、同一ブロックに対する書き込み（更新）リクエスト群を、１つの書き込み命令として集約し発行する。
【００７７】
以上のように構成された分散処理システム２の動作について、図面を参照して説明する。まず、分散処理システム２が分散処理を行う動作の概要を図９に示す。なお、図９において、左図は分散処理割当部２３の動作を示し、右図は各分散処理装置２０の動作を示す。また、ここでは、分散処理システム２が、複数のタスクを順次処理するジョブを実行する際の動作について説明する。
【００７８】
まず、分散処理割当部２３は、ジョブにおける最初のタスク群を各分散処理装置２０に割り当てる（ステップＳ１１）。
【００７９】
次に、各分散処理装置２０の分散処理実行部２０１は、割り当てられた最初のタスクを、元データを用いて実行する（ステップＳ２１）。前述のように、分散処理実行部２０１は、元データを、外部から取得してもよいし、分散処理システム２を構成する各装置のメモリから取得してもよい。なお、分散処理システム２は、最初のタスクの実行に元データが必要でなければ、元データを取得しなくてよい。
【００８０】
次に、分散処理実行部２０１は、タスクの実行により生成された中間データの中間データ保持部２１１への書き込み処理を、データアクセス処理部２０２に依頼する。そして、データアクセス処理部２０２は、依頼された中間データを中間データ保持部２１１へ書き込む（ステップＳ２２）。このステップの詳細については後述する。
【００８１】
次に、データアクセス処理部２０２は、書き込んだ中間データのキーおよびそのブロックＩＤを対応付けた一覧情報を、一覧情報保持部２２に登録する（ステップＳ２３）。
【００８２】
一方、分散処理割当部２３は、前回割り当てたタスク群がジョブにおける最後のタスク群でなければ（ステップＳ１２でＮｏ）、次のように動作する。具体的には、分散処理割当部２３は、一覧情報保持部２２に登録された一覧情報に基づいて、データアクセス処理をブロック単位で分散させるよう生成した次のタスク群を、各分散処理装置２０に割り当てる（ステップＳ１３）。次のタスク群は、前のタスク群の中間データを用いた処理内容である。このステップの詳細については後述する。
【００８３】
次に、各分散処理装置２０の分散処理実行部２０１は、次のタスクが割り当てられた場合（ステップＳ２４でＹｅｓ）、次のように動作する。具体的には、分散処理実行部２０１は、割り当てられたタスクを、中間データを用いて実行する(ステップＳ２５)。このとき、分散処理実行部２０１は、タスクの実行に必要な中間データを、データアクセス処理部２０２を用いて中間データ保持部２１１から読み込む。このステップにおける中間データの読み込み処理の詳細については後述する。
【００８４】
次に、分散処理実行部２０１は、ステップＳ２２からの処理を繰り返すことにより、中間データの書き込みおよび一覧情報の登録を行う。
【００８５】
また、分散処理割当部２３は、前回割り当てたタスク群がジョブにおける最後のタスク群であれば（ステップＳ１２でＹｅｓ）、処理を終了する。また、各分散処理装置２０の分散処理実行部２０１は、次のタスクが割り当てられなければ（ステップＳ２４でＮｏ）、処理を終了する。
【００８６】
次に、ステップＳ２２における中間データの書き込み処理の詳細について、図１０〜図１１を参照して説明する。
【００８７】
まず、分散処理実行部２０１からの書き込み処理の依頼に応じた処理を図１０に示す。
【００８８】
図１０では、まず、データアクセス処理部２０２は、分散処理実行部２０１からの書き込み処理の依頼（書き込みリクエスト）を、一時保持部２０３に保持する（ステップＳ３１）。
【００８９】
次に、データアクセス処理部２０２は、分散処理実行部２０１に対して、書き込みリクエストに対する書き込み処理が完了したことを通知する（ステップＳ３２）。なお、データアクセス処理部２０２は、このステップを必ずしも実行しなくてもよい。あるいは、データアクセス処理部２０２は、このステップを、実際の書き込み完了後（後述のステップＳ４４以降）に実行してもよい。
【００９０】
以上で、書き込み処理の依頼に応じた処理は終了する。
【００９１】
次に、所定の契機における書き込み処理の詳細を図１１に示す。
【００９２】
図１１では、まず、命令開始部２０７は、所定の契機であるか否かを判断する（ステップＳ４１）。所定の契機とは、所定時間が経過したタイミングであってもよい。また、所定の契機とは、一時保持部２０３に保持されるリクエストの容量が閾値を超えたタイミングであってもよい。その場合、閾値は、一時保持部２０３を構成するメモリ（主記憶装置）等の容量を超えないように設定されることが望ましい。
【００９３】
ここで、所定の契機であると判断された場合、格納位置算出部２０４は、一時保持部２０３に保持されたリクエスト群のそれぞれについて、対象とする中間データのキーに対応するブロックを特定する情報を算出する（ステップＳ４２）。
【００９４】
前述のように、格納位置算出部２０４は、キーに対応するブロックＩＤを求め、求めたブロックＩＤを用いて中間データ保持部２１１におけるアドレスを算出すればよい。キーに対応するブロックＩＤを求める処理には、前述のように、ハッシュテーブルアルゴリズムや、キーおよびブロックＩＤの対応関係が格納されたデータベース等を用いればよい。
【００９５】
次に、命令発行部２０５は、算出したブロック毎に、対応するキーを持つ中間データに対するアクセス処理命令を集約したアクセス処理命令を生成する（ステップＳ４３）。ここでは、ブロック毎に集約した書き込み命令が生成される。
【００９６】
次に、命令発行部２０５は、ブロック毎に、集約したアクセス処理命令を発行する（ステップＳ４４）。ここでは、ブロック毎に集約した書き込み命令が発行される。
【００９７】
以上で、所定の契機における書き込み処理は終了する。また、以上で、ステップＳ２２における中間データの書き込み処理の詳細な説明を終了する。
【００９８】
次に、ステップＳ１３におけるタスクの割り当て処理の詳細について、具体例を用いて説明する。
【００９９】
ここでは、図７の一覧情報に示したように、中間データ保持部２１１の各ブロックに中間データが格納されているとする。
【０１００】
まず、本実施の形態との比較のため、一般的な分散処理によるタスクの割り当て処理の例について説明する。一般的な分散処理は、キーをハッシュまたはソート順序等に基づいて分散させることにより、複数の計算機のそれぞれにタスクを割り当てる。例えば、一般的な分散処理は、キーのハッシュ値を分散数で除算した剰余値毎に、対応するデータを処理するタスクを生成して各計算機に割り当てる。あるいは、一般的な分散処理は、キーのリストをソートした上で、ある一定数ずつのキーに対応するデータを処理するようタスクを分割し、複数の計算機のそれぞれにタスクを割り当てる。例えば、Ａ〜Ｚから始まる文字列をキーとする中間データの処理が、１つ目の計算機に割り当てられる。また、ａ〜ｚから始まる文字列をキーとする中間データの処理が、２つ目の計算機に割り当てられる。
【０１０１】
この場合、Ａ〜Ｚから始まるキーとしては、図７を参照すると、Ａ，Ｐ，ＨＯＧＥ，Ｂ，Ｙ，Ｚ，Ｈ，Ｏがある。つまり、Ａ〜Ｚから始まるキーを持つ中間データは、ブロックＩＤが０、１、９９および１００の少なくとも４つのブロックに格納されている。このため、これらの中間データを処理するタスクが割り当てられた１つ目の計算機は、少なくともそれら４つのブロックにアクセスしなければならない。また、ａ〜ｚから始まるキーとしては、図７を参照すると、ｘｘ，ａａｂ，ｔｅｍｐ，ａａａａａａａ，ｓ，ｆｕｇａがある。つまり、ａ〜ｚから始まるキーを持つ中間データは、ブロックＩＤが１、９９および１００の少なくとも３つのブロックに格納されている。このため、これらの中間データを処理するタスクが割り当てられた２つ目の計算機は、少なくともそれら３つのブロックにアクセスしなければならない。しかも、これらの計算機がそれぞれアクセスしなければならないブロックは重複しており、効率が良くない。
【０１０２】
これに対して、本実施の形態では、ステップＳ２３の処理により、一覧情報保持部２２に、図７に示した情報が登録されている。
【０１０３】
この場合、本実施の形態の分散処理割当部２３は、同一ブロックの中間データに対する処理が同一タスクに含まれるよう分割したタスクを生成して、各分散処理装置２０に割り当てる。例えば、ブロックＩＤが０および１のブロックに格納されるキーの中間データを処理するタスクが、１つ目の分散処理装置２０に割り当てられる。また、ブロックＩＤが９９および１００のブロックに格納されるキーの中間データを処理するタスクが、２つ目の分散処理装置２０に割り当てられる。
【０１０４】
この場合、１つ目および２つ目の分散処理装置２０は、それぞれ２つのブロックにアクセスすればよく、また、それらのブロックは重複していない。
【０１０５】
このように、本実施の形態における分散処理割当部２３のステップＳ１３におけるタスクの割り当て動作は、各分散処理装置２０がタスクの実行に際して中間データ保持部２１１から読み込むデータの容量および読込回数を削減する。その結果、データ保持装置２１の負荷が軽減され、入出力時間が短縮される。
【０１０６】
次に、ステップＳ２５における中間データの読み込み処理の詳細について、図１２〜図１３を参照して説明する。
【０１０７】
まず、分散処理実行部２０１からの読み込み処理の依頼に応じた処理を図１２に示す。
【０１０８】
図１２では、データアクセス処理部２０２は、分散処理実行部２０１からの読み込み処理の依頼（読み込みリクエスト）を、一時保持部２０３に保持する（ステップＳ５１）。
【０１０９】
以上で、読み込み処理の依頼に応じた処理は終了する。
【０１１０】
次に、所定の契機における読み込み処理の詳細を図１３に示す。
【０１１１】
図１３において、データアクセス処理部２０２は、ステップＳ４１〜Ｓ４４まで、書き込み処理の場合と略同様に動作する。
【０１１２】
ただし、ステップＳ４２において、格納位置算出部２０４は、キーに基づいてブロックを特定する情報を算出する代わりに、一覧情報保持部２２を参照することにより、キーに対応するブロックＩＤを求めてそのアドレスを算出してもよい。
【０１１３】
また、ステップＳ４３〜Ｓ４４において、命令発行部２０５は、集約したアクセス処理命令として、読み込み命令を生成して発行する。
【０１１４】
次に、データアクセス処理部２０２は、読み込んだ中間データを、分散処理実行部２０１に対して応答する（ステップＳ６５）
以上で、所定の契機における読み込み処理は終了する。また、以上で、ステップＳ２５における中間データの読み込み処理の詳細な説明を終了する。
【０１１５】
なお、データアクセス処理部２０２は、図１１または図１３のステップＳ４１を省略してもよい。この場合、データアクセス処理部２０２は、書き込み処理または読み込み処理の依頼を受けたタイミングで、ステップＳ４２以降の処理を開始してもよい。その場合、図１０または図１２に示したリクエストの一時保持処理およびステップＳ４３における集約処理は不要となる。特に、読み込み処理の場合、読み込み命令が完了しないと、分散処理実行部２０１によるタスク実行が進まない可能性がある。このため、データアクセス処理部２０２は、読み込み処理の依頼を受ける度にステップＳ４２からの処理を実行するようにしてもよい。ただし、その場合、データアクセス処理の集約による性能向上効果は低下することになる。そこで、例えば、中間データの読み込み処理を伴うタスクにおいて、読み込み処理の全てを他の処理に先行して行うよう実行順序があらかじめ調整されていてもよい。その場合は、読み込み処理においても、データアクセス処理の集約による性能向上の効果が期待できる。
【０１１６】
以上で、分散処理システム２の分散処理動作の説明を終了する。
【０１１７】
次に、分散処理システム２が中間データ保持部２１１の容量を調整する動作を図１４に示す。
【０１１８】
図１４において、容量調整部２４は、分散処理装置２０間で共有される中間データの総容量を取得する（ステップＳ７１）。
【０１１９】
前述のように、容量調整部２４は、あらかじめ入力等により設定された総容量を取得してもよい。あるいは、容量調整部２４は、分散処理のジョブ実行中に既に発生した中間データの容量に基づいて、ジョブで発生する中間データの総容量を予測して求めてもよい。
【０１２０】
次に、容量調整部２４は、中間データの総容量に基づいて、データ保持装置２１における中間データ保持部２１１の容量を調整する（ステップＳ７２）。
【０１２１】
なお、中間データの総容量に対する適切な中間データ保持部２１１のサイズの算出方法は、アクセスパターンの傾向等に応じてあらかじめ定められているとする。例えば、前述のように、少なくとも３ブロック以内のアクセスで、要求されるキーの中間データを取得できるようにすることを優先する場合、容量調整部２４は、中間データ保持部２１１の容量を、中間データの総容量の約２倍に調整してもよい。また、例えば、中間データの読み込み処理の集約効率を最大限高めることを優先する場合、容量調整部２４は、中間データ保持部２１１の容量を、中間データの総容量と略同容量に調整してもよい。
【０１２２】
以上で、容量調整動作の説明を終了する。
【０１２３】
次に、本発明の第２の実施の形態の効果について述べる。
【０１２４】
本発明の第２の実施の形態としての分散処理システムは、タスク間で共有される中間データの増大によるデータアクセス処理の性能の悪化を防止して性能を向上させる。
【０１２５】
その理由について述べる。本実施の形態は、本発明の第１の実施の形態と同様の構成に加えて、次のような構成を備えるからである。すなわち、データ保持装置が、分散処理のタスク間で共有されるキー・バリュー形式の中間データを、ブロック毎に１つ以上保持可能となっている。そして、一覧情報保持部が、データ保持装置に保持される中間データのキーおよびブロックＩＤを対応付けて保持可能となっている。そして、データアクセス処理部は、アクセス処理が書き込み処理の場合に、書き込んだ中間データのキーおよびブロックＩＤを対応付けて、一覧情報保持部に登録する。そして、分散処理割当部が、一覧情報保持部に保持された情報に基づいて、データ保持装置に対するアクセス処理がブロック単位で分散されるよう分割したタスクを、分散処理装置に割り当てるからである。
【０１２６】
これにより、本実施の形態では、分散処理装置に割り当てられるタスクにおいて、発生する読み込み処理の対象となる中間データが、ブロック毎にまとめられていることになる。したがって、本実施の形態は、各分散処理装置があるタスクを実行する際にアクセスしなければならないデータ保持装置のブロック数を低減することができ、さらに、データアクセス性能を向上させることができる。
【０１２７】
さらなる理由として、本実施の形態では、容量調整部が、データ保持装置における中間データ保持部の容量を調整するからである。
【０１２８】
これにより、本実施の形態では、中間データ保持部における中間データの充填率を調整することができる。前述のように、充填率が高いほど、キーの探索時間が大きくなる代わりに読み込み処理の集約効率が高くなる。また、充填率が低いほど、読み込み処理の集約効率が低くなる代わりにキーの探索時間が小さくなる。そこで、本実施の形態は、データのアクセスパターンに応じて、中間データの総容量に対してあらかじめ定められた計算手法を用いて、中間データ保持部の容量を調整する。その結果、本実施の形態は、キーの探索時間および読み込み処理の集約効率を考慮して、データアクセス性能を向上させることができる。
【０１２９】
なお、本実施の形態では、ジョブ内で中間データの再利用が行われるものとして説明した。これに限らず、本実施の形態は、異なるジョブ間で中間データが共有されるような場合にも適用可能である。
【０１３０】
また、本実施の形態において、データ保持装置が中間データを保持し、データアクセス処理部が中間データに対するアクセス処理をブロックごとに集約して行う例について説明した。これに限らず、本実施の形態は、データ保持装置に元データを保持し、データアクセス処理部が元データに対するアクセス処理をブロック毎に集約して行ってもよい。
【０１３１】
また、本実施の形態において、分散処理実行部は、データをキー・バリュー形式でデータ保持装置に格納し、データアクセス処理部は、データを特定する情報としてデータのキーを一覧情報保持部に登録するものとして説明した。ただし、分散処理装置がデータ保持装置に格納して読み書きするデータの形式は、キー・バリュー形式に限らず、その他の形式であってもよい。その場合、データアクセス処理部は、データを特定する何らかの情報を、書き込み先のブロックを示す情報に対応付けて一覧情報保持部に登録すればよい。
【０１３２】
また、本実施の形態において、一覧情報保持部は、データを特定する情報に対応付けて、ブロックを示す情報としてブロックＩＤを格納するものとして説明した。ただし、ブロックを示す情報は、ブロックＩＤに限らず、その他の情報であってもよい。その場合、データアクセス処理部は、書き込み先のブロックを示す何らかの情報を、書き込んだデータを特定する情報に対応付けて一覧情報保持部に登録すればよい。
【０１３３】
また、本実施の形態において、分散処理割当部が、２つのブロックに対するアクセス処理を１つのタスクに含める具体例について説明した。ただし、分散処理割当部が１つのタスクに含めるデータアクセス処理が対象とするブロックの数を限定するものではない。
【０１３４】
また、上述した本発明の各実施の形態において、データ保持装置は、ブロック毎に１つ以上のデータを格納するものとして説明した。このようなデータ保持装置としては、ハッシュテーブル、ＮｏＳＱＬ（Not Only SQL）システム、データベースシステム、分散キャッシュシステム等を適用可能である。
【０１３５】
また、上述した本発明の各実施の形態において、分散処理装置は、分散処理ミドルウェアの構成ノードとして構成されていてもよい。ただし、これに限らず、分散処理装置は、分散処理ミドルウェアを動作させずに直接分散処理プログラムを実行する装置であってもよい。
【０１３６】
また、上述した本発明の各実施の形態において、分散処理システムのハードウェア構成の一例として図２〜図４を示したが、これらに限らない。分散処理システムは、一般的な分散処理システムに採用される各種のハードウェア構成によって実現可能である。
【０１３７】
また、上述した本発明の各実施の形態において、分散処理システムの各機能ブロックが、記憶装置またはＲＯＭに記憶されたコンピュータ・プログラムを実行するＣＰＵによって実現される例を中心に説明した。これに限らず、各機能ブロックの一部、全部、または、それらの組み合わせが専用のハードウェアにより実現されていてもよい。
【０１３８】
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明した分散処理システムの各部の動作を、本発明のコンピュータ・プログラムとしての記憶装置（記憶媒体）に格納しておく。そして、係るコンピュータ・プログラムを当該ＣＰＵが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
【０１３９】
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
【０１４０】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【０１４１】
この出願は、２０１５年１１月１３日に出願された日本出願特願２０１５−２２３０７３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１４２】
１、２    分散処理システム
１０、２０    分散処理装置
１１、２１    データ保持装置
２２    一覧情報保持部
２３    分散処理割当部
２４    容量調整部
１０１、２０１    分散処理実行部
１０２、２０２    データアクセス処理部
２０３    一時保持部
２０４    格納位置算出部
２０５    命令発行部
２０６    一覧情報登録部
２０７    命令開始部
２１１    中間データ保持部
１０００、５０００    計算機
２０００    外部記憶装置
３０００    インターコネクトネットワーク
４０００    ネットワーク
１００１、４００１    ＣＰＵ
１００２、４００２    メモリ
１００３、４００３    ネットワークインタフェース
【図１】
2017082323.tif 000003
【図２】
2017082323.tif 000004
【図３】
2017082323.tif 000005
【図４】
2017082323.tif 000006
【図５】
2017082323.tif 000007
【図６】
2017082323.tif 000008
【図７】
2017082323.tif 000009
【図８】
2017082323.tif 000010
【図９】
2017082323.tif 000011
【図１０】
2017082323.tif 000012
【図１１】
2017082323.tif 000013
【図１２】
2017082323.tif 000014
【図１３】
2017082323.tif 000015
【図１４】
2017082323.tif 000016
【手続補正書】
【提出日】平成30年4月20日(2018.4.20)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
分散処理において利用されるデータを保持するデータ保持装置と、
前記分散処理において自装置に割り当てられたタスクを実行する分散処理実行手段、および、前記分散処理実行手段による前記データ保持装置に対するアクセス処理のリクエストを、前記データ保持装置の記憶領域を構成するブロック毎に集約することにより、前記ブロック毎にアクセス処理命令を発行するデータアクセス処理手段を、それぞれ備えた１つ以上の分散処理装置と、
を備えた分散処理システム。
【請求項２】
前記データ保持装置に保持されるデータを特定する情報および該データの格納されるブロックを示す情報を対応付けて保持する一覧情報保持手段と、
前記一覧情報保持手段に保持された情報に基づいて、前記分散処理における前記データ保持装置に対する前記アクセス処理を前記ブロック単位で分散させるよう分割したタスク群のそれぞれを、前記各分散処理装置に割り当てる分散処理割当手段とをさらに備え、
前記分散処理装置の前記データアクセス処理手段は、前記アクセス処理が書き込み処理の場合に、前記書き込み対象のデータを特定する情報および書き込み先のブロックを示す情報を対応付けて、前記一覧情報保持手段に登録する
請求項１に記載の分散処理システム。
【請求項３】
前記データ保持装置において前記データを格納可能な記憶領域の全体容量を調整する容量調整手段をさらに備える請求項１または請求項２に記載の分散処理システム。
【請求項４】
分散処理において自装置に割り当てられたタスクを実行する分散処理実行手段と、
前記分散処理で利用されるデータを保持するデータ保持装置に対する前記分散処理実行手段によるアクセス処理のリクエストを、前記データ保持装置の記憶領域を構成するブロック毎に集約することにより、前記ブロック毎にアクセス処理命令を発行するデータアクセス処理手段と、
を備えた分散処理装置。
【請求項５】
分散処理を実行する１つ以上の分散処理装置のそれぞれが、
自装置に割り当てられたタスクを実行する際に、
前記分散処理において利用されるデータを保持するデータ保持装置に対するアクセス処理のリクエストを、前記データ保持装置の記憶領域を構成するブロック毎に集約し、
前記ブロック毎にアクセス処理命令を発行する
分散処理方法。
【請求項６】
分散処理において自装置に割り当てられたタスクを実行する分散処理実行ステップと、
前記分散処理で利用されるデータを保持するデータ保持装置に対する前記分散処理実行ステップにおけるアクセス処理のリクエストを、前記データ保持装置の記憶領域を構成するブロック毎に集約することにより、前記ブロック毎にアクセス処理命令を発行するデータアクセス処理ステップと、
を、コンピュータ装置に実行させるプログラム。
【国際調査報告】
2017082323.tif 000017
2017082323.tif 000018
2017082323.tif 000019
2017082323.tif 000020