(57)【要約】  分散ＤＢシステムのワーカノードでなる各サーバにアクセラレータを搭載し、アプリケーションサーバのアプリケーションにより生成されたクエリを、アクセラレータにより実行すべき第１のタスクと、ソフトウェアにより実行すべき第２のタスクとに分け、分散ＤＢシステムのサーバに振り分け、サーバが、第１のタスクをアクセラレータに実行させ、第２のタスクをソフトウェアに基づいて実行するようにした。
2018143441.tif 000002
【特許請求の範囲】
【請求項１】
クライアントからの指示に応じて処理を実行する情報処理システムにおいて、
前記クライアントからの指示に応じた処理を実行するアプリケーションが実装されたアプリケーションサーバと、
複数のサーバによりデータを分散保持する分散データベースシステムと、
を備え、
前記分散データベースシステムは、割り振られるタスクを実行するためのソフトウェアを稼働させるプロセッサと、一部又は全部の種類の当該タスクを実行可能なハードウェアでなるアクセラレータとが実装された複数のサーバを有し、
前記アプリケーションサーバは、
前記クライアントからの指示に応じた処理を実行するための情報を前記分散データベースシステムから取得するためのクエリを生成して、前記分散データベースシステムに送信し、
変換部は、前記アプリケーションサーバが生成するクエリから、前記アクセラレータが実行する第１のタスクと、前記ソフトウェアが実行する第２のタスクに分け、
前記分散データベースシステムの複数のサーバは、
前記クエリに含まれる前記アクセラレータにより実行すべき第１のタスクを前記アクセラレータに実行させ、前記クエリに含まれる前記ソフトウェアにより実行すべき第２のタスクを前記ソフトウェアに基づいて実行し、前記第１及び又は第２のタスクの実行結果を返信し、
前記アプリケーションサーバは、
前記第１及び第２のタスクの実行結果に基づき得られる前記クエリの処理結果を前記分散データベースシステムから受信する
ことを特徴とする情報処理システム。
【請求項２】
前記変換は、前記サーバのアクセラレータのスペック情報に基づいて行う
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記変換部は、前記アプリケーションサーバが有しており、前記アプリケーションサーバが生成するクエリである第１のクエリから、前記アクセラレータが実行する第１のタスクと、前記ソフトウェアが実行する第２のタスクに分けた第２のクエリに変換し、
前記分散データベースシステムのマスタノードサーバが、前記第２のクエリを受信してタスクに分解し、各タスクを前記複数のサーバに割り振る
ことを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記アクセラレータは、
所定形式のユーザ定義関数により定義されたタスクを実行可能なＦＰＧＡ（Field Programmable Gate Array）から構成され、
前記クエリは、前記第１のタスクを前記ユーザ定義関数により定義され、前記第２のタスクを前記ソフトウェアにより認識可能な所定形式で定義されている
ことを特徴とする請求項２に記載の情報処理システム。
【請求項５】
前記ソフトウェアにより認識可能な所定形式は、ＳＱＬ（Structured Query Language）を用いた形式である
ことを特徴とする請求項４に記載の情報処理システム。
【請求項６】
前記アプリケーションサーバは、
各前記サーバから当該サーバに搭載された前記アクセラレータの前記ハードスペック情報を取得するアクセラレータ情報取得部を備える
ことを特徴とする請求項３に記載の情報処理システム。
【請求項７】
前記第２のタスクは、前記ソフトウェアが複数の処理を、各処理の間にデータを主記憶に格納しながら行うタスクであり、前記第１のタスクは、前記アクセラレータがパイプライン並列処理を行うタスクを含むことを特徴とする
ことを特徴とする請求項１に記載の情報処理システム。
【請求項８】
前記クエリに基づいて、前記ソフトウェアが実行するのに適した第１のクエリプラン作成し、前記第１のクエリプランを前記アクセラレータが実行するのに適した第２のクエリプランに変換する
ことを特徴とする請求項７に記載の情報処理システム。
【請求項９】
前記サーバのうちの少なくとも一つのサーバが、
前記クエリプランを変更して、前記クエリに含まれる第１のタスクと第２のタスクを他のサーバに割り振り、
その処理結果を他のサーバから受信してまとめて、前記アプリケーションサーバに送信する
ことを特徴とする請求項８に記載の情報処理システム。
【請求項１０】
前記変換される第１及び第２のタスクは、スキャン処理、フィルタ処理及び集約処理を含み、
前記第１のタスクでは、前記スキャン処理、フィルタ処理及び集約処理をパイプライン並列処理する
ことを特徴とする請求項９に記載の情報処理システム。
【請求項１１】
前記フィルタ処理のクエリプラン変換処理では、
比較演算、論理和、論理積の順で並列処理可能なフィルタ条件式に変換する
ことを特徴とする請求項１０に記載の情報処理システム。
【請求項１２】
前記複数のサーバの各々は、
複数のサーバで構成される分散ファイルシステムと、単独のサーバで構成されるファイルシステムと、分散ファイルシステム及びファイルシステムを構成するためのドライブと、を有し、
前記スキャン処理のクエリプラン変換処理では、
前記タスクに含まれる分散ファイルシステムパスをファイルシステムパスに変換し、
前記ファイルシステムパスを、前記ドライブでのアドレスに変換し、
前記ドライブでのアドレスを前記第１のタスクに設定する
ことを特徴とする請求項１０に記載の情報処理システム。
【請求項１３】
クライアントからの指示に応じて処理を実行する情報処理方法であって、
前記クライアントからの指示に応じた処理を実行するアプリケーションが実装されたアプリケーションサーバが、
前記クライアントからの指示に応じた処理を実行するための情報を分散データベースシステムから取得するためのクエリを生成して、分散データベースシステムに送信し、
変換部は、前記アプリケーションサーバが生成するクエリを、前記アクセラレータが実行する第１のタスクと、前記ソフトウェアが実行する第２のタスクに分け、
前記分散データシステムの複数のサーバが、
前記クエリに含まれるアクセラレータにより実行すべき第１のタスクを前記サーバが有するアクセラレータに実行させ、前記クエリに含まれるプロセッサ上で稼働するソフトウェアにより実行すべき第２のタスクを前記サーバが有するソフトウェアに基づいて実行し、前記第１及び又は第２のタスクの実行結果を返信し、
前記アプリケーションサーバは、前記第１及び第２のタスクの実行結果に基づき得られる前記クエリの処理結果を前記分散データシステムから受信する
ことを特徴とする情報処理方法。
【請求項１４】
前記変換は前記サーバのアクセラレータのスペック情報に基づいて行う
ことを特徴とする請求項１３に記載の情報処理方法。
【請求項１５】
前記第２のタスクは、前記ソフトウェアが複数の処理を、各処理の間にデータを主記憶に格納しながら行うタスクであり、前記第１のタスクは、前記アクセラレータがパイプライン並列処理を行うタスクを含み、
前記クエリに基づいて、前記ソフトウェアが実行するのに適した第１のクエリプランを作成し、前記第１のクエリプランを前記アクセラレータが実行するのに適した第２のクエリプランに変換する
ことを特徴とする請求項１３に記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理システム及び情報処理方法に関し、例えばビッグデータを分析する分析システムに適用して好適なものである。
【背景技術】
【０００２】
近年、ビッグデータの利用が拡大しつつある。ビッグデータを利用するに際しては、その分析が必要となるが、ビックデータの分析分野では、今後、HadoopやSparkといったスケールアウト型の分散データベースの適用が主流化するものと考えられる。また迅速な意思決定のため、ビッグデータを用いたインタラクティブで短ＴＡＴ（Turn Around Time）のセルフサービス分析に対するニーズも高まっている。【０００３】
なお特許文献１には、ＸＬＭデータを記憶するデータベースを各々有する複数の分散されたデータベースサーバに接続されたコーディネータサーバであって、各々のデータベースサーバの処理能力に基づいて各々クエリを生成する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１１００５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、分散データベースシステムにおいて、大量のデータを高速処理するためには性能確保のために多数のノードが必要となるが、この結果としてシステム規模が増大し、導入コストやメンテナンスコストが増加する課題がある。【０００６】
このような課題を解決するための方法の１つとして、分散データベースシステムのノードにアクセラレータを搭載し、ノード当たり性能を向上させることで、ノード数を減らしてシステム規模を抑制する方法が考えられる。実際上、研究レベルでは、ＯＳＳ（Open-Source Software）データベースエンジンと同様の機能を有するアクセラレータが多数発表されており、このようなアクセラレータを利用することにより、ノードの性能を向上させ得るものと考えられる。【０００７】
しかしながら、この種のアクセラレータは何らかのシステム改変を前提としており、これまで一般的なデータベースエンジンを改変することなく利用可能なアクセラレータは存在しなかった。【０００８】
ところで、近年、ＯＳＳのApache系の分散データベースエンジン（SparkやImpalaなど）のユーザ定義関数（ＵＤＦ）を拡張する動き（Apache Arrow）があり、データベースエンジンの改変のないＯＳＳ分散データベースアクセラレータを実現する環境が整いつつある。一方で、ユーザ定義関数を利用する場合、ＳＱＬ（Structured Query Language）クエリを生成するアプリケーションの改変が必要となる課題が依然として残る。【０００９】
本発明は以上の点を考慮してなされたもので、アプリケーションの改変を行うことなく、大容量データの高速処理のためのシステム規模の増大を抑止し、導入コストやメンテナンスコストの増大を抑制し得る情報処理技術を提案しようとするものである。
【課題を解決するための手段】
【００１０】
かかる課題を解決するため本発明の一形態においては、分散ＤＢシステムのワーカノードでなる各サーバにアクセラレータを搭載し、アプリケーションサーバのアプリケーションにより生成されたクエリを、アクセラレータにより実行すべき第１のタスクと、ソフトウェアにより実行すべき第２のタスクとに分け、分散ＤＢシステムのサーバに振り分け、サーバが、第１のタスクをアクセラレータに実行させ、第２のタスクをソフトウェアに基づいて実行するようにした。
【発明の効果】
【００１１】
本発明の一形態によれば、大容量データの高速処理のための技術を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】第１及び第２の実施の形態による情報処理システムのハードウェア構成を示すブロック図である。
【図２】第１及び第２の実施の形態による情報処理システムの論理構成を示すブロック図である。
【図３】アクセラレータ情報テーブルの概略構成を示す概念図である。
【図４】ＳＱＬクエリ変換部によるＳＱＬクエリの変換の説明に供する図である。
【図５】クエリ変換処理の処理手順を示すフローチャートである。
【図６】マスタノードサーバにより実行される処理の処理手順を示すフローチャートである。
【図７】ワーカノードサーバにより実行されるＭａｐ処理の処理手順を示すフローチャートである。
【図８】ワーカノードサーバにより実行されるＲｅｄｕｃｅ処理の処理手順を示すフローチャートである。
【図９】情報処理システムにおける分析処理時の処理の流れを示すシーケンス図である。
【図１０】ワーカノードサーバにおけるＭａｐ処理時の処理の流れを示すシーケンス図である。
【図１１】第２の実施の形態による情報処理システムにおいてワーカノードサーバにより実行されるＭａｐ処理の処理手順を示すフローチャートである。
【図１２】第２の実施の形態による情報処理システムにおいてワーカノードサーバにより実行されるＭａｐ処理の流れを示すシーケンス図である。
【図１３】他の実施の形態を示すブロック図である。
【図１４】他の実施の形態を示すブロック図である。
【図１５】第３の実施の形態による情報処理システムの論理構成を示すブロック図である。
【図１６】標準クエリプラン及び変換後クエリプランの説明に供する概念図である。
【図１７】情報処理システムにおける分析処理時の処理の流れを示すシーケンス図である。
【図１８】フィルタ処理の説明に供する部分的なフローチャートである。
【図１９】（１）及び（２）は、フィルタ処理の説明に供する図である。
【図２０】スキャン処理の説明に供する部分的なフローチャートである。
【発明を実施するための形態】
【００１３】
以下図面について、本発明の一実施の形態を詳述する。
【００１４】
（１）第１の実施の形態
（１−１）本実施の形態による情報処理システムの構成
図１において、１は全体として本実施の形態による情報処理システムを示す。この情報処理システムは、ビッグデータの分析を行う分析システムである。
【００１５】
実際上、情報処理システム１は、１又は複数のクライアント２と、アプリケーションサーバ３と、分散データベースシステム４とを備えて構成される。そして各クライアント２は、ＬＡＮ（Local Area Network）又はインターネットなどからなる第１のネットワーク５を介してアプリケーションサーバ３と接続されている。
【００１６】
また分散データベースシステム４は、マスタノードサーバ６及び複数のワーカノードサーバ７から構成されており、これらマスタノードサーバ６及びワーカノードサーバ７がＬＡＮ又はＳＡＮ（Storage Area Network）などからなる第２のネットワーク８を介してアプリケーションサーバ３とそれぞれ接続されている。
【００１７】
クライアント２は、ユーザが使用する汎用のコンピュータ装置である。クライアント２は、ユーザ操作又は当該クライアント２に実装されたアプリケーションからの要求に応じて、指定された分析条件を含むビッグデータの分析要求を第１のネットワーク５を介してアプリケーションサーバ３に送信する。またクライアント２は、アプリケーションサーバ３から第１のネットワーク５を介して送信されてきた分析結果を表示する。
【００１８】
アプリケーションサーバ３は、クライアント２から要求された分析処理を実行するのに必要なデータを取得するためのＳＱＬクエリを生成して分散データベースシステム４のマスタノードサーバ６に送信したり、マスタノードサーバ６から送信されるそのＳＱＬクエリの結果に基づいて分析処理を実行し、その分析結果をクライアント２に表示させる機能を有するサーバ装置である。
【００１９】
このアプリケーションサーバ３は、ＣＰＵ（Central Processing Unit）１０、メモリ１１、ローカルドライブ１２及び通信装置１３を備えて構成される。
【００２０】
ＣＰＵ１０は、アプリケーションサーバ３全体の動作制御を司るプロセッサである。またメモリ１１は、例えば、揮発性の半導体メモリから構成され、ＣＰＵ１０のワークメモリとして利用される。ローカルドライブ１２は、例えばハードディスク装置やＳＳＤ（Solid State Drive）などの大容量の不揮発性記憶装置から構成され、各種プログラムやデータを長期間保持するために利用される。
【００２１】
通信装置１３は、例えばＮＩＣ（Network Interface Card）から構成され、第１のネットワーク５を介したクライアント２との通信時や、第２のネットワーク８を介したマスタノードサーバ６又はワーカノードサーバ７との通信時におけるプロトコル制御を行う。
【００２２】
マスタノードサーバ６は、例えばＨａｄｏｏｐにおけるマスタノードとして機能する汎用のサーバ装置（オープンシステム）である。実際上、マスタノードサーバ６は、アプリケーションサーバ３から第２のネットワーク８を介して送信されてきたＳＱＬクエリを解析し、当該ＳＱＬクエリに基づく処理をＭａｐ処理やＲｅｄｕｃｅ処理などのタスクに分解する。またマスタノードサーバ６は、これらＭａｐ処理のタスク（以下、これをＭａｐ処理タスクと呼ぶ）やＲｅｄｕｃｅ処理のタスク（以下、これをＲｅｄｕｃｅ処理タスクと呼ぶ）の実行計画を立案し、立案した実行計画に従ってこれらＭａｐ処理タスク及びＲｅｄｕｃｅ処理タスクの実行要求を各ワーカノードサーバ７に送信する。またマスタノードサーバ６は、Ｒｅｄｕｃｅ処理タスクを振り分けたワーカノードサーバ７から送信されてくるＲｅｄｕｃｅ処理タスクの処理結果をＳＱＬクエリの処理結果としてアプリケーションサーバ３に送信する。
【００２３】
このマスタノードサーバ６は、アプリケーションサーバ３と同様にＣＰＵ２０、メモリ２１、ローカルドライブ２２及び通信装置２３を備えて構成される。これらＣＰＵ２０、メモリ２１、ローカルドライブ２２及び通信装置２３の機能及び構成は、アプリケーションサーバ３の対応部位（ＣＰＵ１０、メモリ１１、ローカルドライブ１２及び通信装置１３）と同様であるため、これらの詳細説明は省略する。
【００２４】
ワーカノードサーバ７は、例えばＨａｄｏｏｐにおけるワーカノードとして機能する汎用のサーバ装置（オープンシステム）である。実際上、ワーカノードサーバ７は、分散配置されたビッグデータの一部を後述するローカルドライブ３２内に保持しており、マスタノードサーバ６から与えられたＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクの実行要求（以下、これをタスク実行要求と呼ぶ）に従ってＭａｐ処理やＲｅｄｕｃｅ処理を実行し、その処理結果を他のワーカノードサーバ７やマスタノードサーバ６に送信する。
【００２５】
このワーカノードサーバ７は、ＣＰＵ３０、メモリ３１、ローカルドライブ３２及び通信装置３３に加えて、アクセラレータ３４及びＤＲＡＭ（Dynamic Random Access Memory）３５を備えて構成される。ＣＰＵ３０、メモリ３１、ローカルドライブ３２及び通信装置３３の機能及び構成は、アプリケーションサーバ３の対応部位（ＣＰＵ１０、メモリ１１、ローカルドライブ１２及び通信装置１３）と同様であるため、これらの詳細説明は省略する。なお本実施の形態の場合、マスタノードサーバ６及びワーカノードサーバ７間の通信や、ワーカノードサーバ７同士間の通信は、すべて第２のネットワーク８を介して行われる。
【００２６】
アクセラレータ３４は、ＦＰＧＡ（Field Programmable Gate Array）から構成され、マスタノードサーバ６から与えられるタスク実行要求に含まれる所定形式のユーザ定義関数で定義されたＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクを実行する。またＤＲＡＭ３５は、アクセラレータ３４のワークメモリとして利用される。なお、以下においては、各ワーカノードサーバに搭載されるアクセラレータは、すべて同一の性能及び機能を有するものであるものとする。
【００２７】
図２は、かかる情報処理システム１の論理構成を示す。この図２に示すように、各クライアント２にはそれぞれＷｅｂブラウザ４０が実装される。Ｗｅｂブラウザ４０は、汎用のＷｅｂブラウザと同様の機能を有するプログラムであり、ユーザが上述の分析条件を設定するための分析条件設定画面や、分析結果を表示するための分析結果画面などを表示する。
【００２８】
またアプリケーションサーバ３には、分析ＢＩ（Business Intelligence）ツール４１、ＪＤＢＣ／ＯＤＢＣ（Java（登録商標） Database Connectivity /Open Database Connectivity）ドライバ４２及びクエリ変換部４３が実装される。これら分析ＢＩツール４１、ＪＤＢＣ／ＯＤＢＣドライバ４２及びクエリ変換部４３は、それぞれアプリケーションサーバ３のＣＰＵ１０（図１）がメモリ１１（図１）に格納された図示しないプログラムを実行することにより具現化される機能部である。
【００２９】
分析ＢＩツール４１は、ユーザがクライアント２に表示された分析条件設定画面上で設定した分析条件に従った分析処理に必要なデータベースデータを分散データベースシステム４から取得するためのＳＱＬクエリを生成する機能を有するアプリケーションである。分析ＢＩツール４１は、取得したデータベースデータに基づいて、かかる分析条件に従った分析処理を実行し、処理結果を含む上述の分析結果画面をクライアントに表示させる。
【００３０】
またＪＤＢＣ／ＯＤＢＣドライバ４２は、分析ＢＩツール４１が分散データベースシステム４にアクセスするためのインタフェース（ＡＰＩ：Application Interface）として機能する。
【００３１】
クエリ変換部４３は、ＪＤＢＣ／ＯＤＢＣドライバ４２のクラスを継承し、クエリ変換機能を付加した子クラスとして実装される。クエリ変換部４３は、ローカルドライブ１２に格納されたアクセラレータ情報テーブル４４を参照して、分析ＢＩツール４１が生成したＳＱＬクエリを、ワーカノードサーバ７のアクセラレータ３４（図１）が実行すべきタスクと、それ以外のタスクとに明示的に分けたＳＱＬクエリに変換する機能を有する。
【００３２】
実際上、本実施の形態の場合、アプリケーションサーバ３のローカルドライブ１２には、分散データベースシステム４のワーカノードサーバ７に搭載されたアクセラレータ３４のハードスペック情報が予めシステム管理者等により格納されたアクセラレータ情報テーブル４４が格納されている。
【００３３】
このアクセラレータ情報テーブル４４は、図３に示すように、項目欄４４Ａ、アクセラレーション可否欄４４Ｂ及び条件欄４４Ｃを備えて構成される。そして項目欄４４Ａには、アクセラレータ３４がサポートするすべての機能がそれぞれ格納され、条件欄４４Ｃには、対応する機能に対する条件が格納される。またアクセラレーション可否欄４４Ｂは、条件／処理欄４４ＢＡ及び可否欄４４ＢＢに区分され、条件／処理欄４４ＢＡには、対応する機能における条件や対応する機能における具体的な処理内容が格納され、可否欄４４ＢＢには、対応する条件や処理内容をサポートしているか否かを表す情報（サポートしている場合には「可」、サポートしていない場合には「否」）が格納される。
【００３４】
そしてクエリ変換部４３は、このアクセラレータ情報テーブル４４を参照して、分析ＢＩツール４１が生成したＳＱＬクエリをＭａｐ処理タスク及びＲｅｄｕｃｅ処理タスクに分解し、これらＭａｐ処理タスク及びＲｅｄｕｃｅ処理タスクのうち、アクセラレータ３４が実行可能なＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクについては上述のユーザ定義関数により定義（記述）し、それ以外のタスクについては分散データベースシステム４のワーカノードサーバ７に実装されたソフトウェアが認識可能な形式（つまりＳＱＬ）で定義（記述）したＳＱＬクエリを生成する（つまり分析ＢＩツール４１が生成したＳＱＬタスクをそのようなＳＱＬに変換する）。
【００３５】
例えば、分析ＢＩツール４１が生成したＳＱＬクエリが図４（Ａ−１）に示すようなＭａｐ処理（フィルタ処理）タスクだけを含み、アクセラレータ情報テーブル４４に格納されたアクセラレータ３４のハードスペック情報によればそのＭａｐ処理タスクをアクセラレータ３４が実行可能である場合、クエリ変換部４３は、そのＳＱＬクエリを、そのＭａｐ処理タスクを上述のユーザ定義関数で定義した図４（Ａ−２）に示すようなＳＱＬクエリに変換する。
【００３６】
なお図４（Ａ−１）は、『「table1」から価格（「price」）が「1000」よりも大きいレコードの「id」及び「価格（「price」）」を抽出』するＭａｐ処理の実行を要求するＳＱＬクエリの記述例であり、図４（Ａ−２）における「UDF(“SELECT id,price FROM table1 WHERE price>1000”)」の部分がかかるユーザ定義関数により定義されたＭａｐ処理タスクを表す。
【００３７】
また、分析ＢＩツール４１が生成したＳＱＬクエリが図４（Ｂ−１）に示すようなＭａｐ処理タスク及びＲｅｄｕｃｅ処理タスクを含み、アクセラレータ情報テーブル４４に格納されたアクセラレータ３４のハードスペック情報によればそのＭａｐ処理タスク及びＲｅｄｕｃｅ処理タスクのうちのＭａｐ処理（フィルタ処理及び集約処理）タスクをアクセラレータ３４が実行可能な場合、クエリ変換部４３は、そのＳＱＬクエリを、そのＭａｐ処理タスクを上述のユーザ定義関数で定義し、他のタスクをＳＱＬで定義した図４（Ｂ−２）に示すようなＳＱＬクエリに変換する。
【００３８】
なお図４（Ｂ−１）は、『「table1」から価格（「price」）が「1000」よりも大きいレコードのみを抽出して「id」でグルーピングし、グルーピングした「id」の数をカウント』する一連の処理の実行を要求するＳＱＬクエリの記述例であり、図４（Ｂ−２）における「UDF(“SELECT id,COUNT(*) FROM table1 WHERE price>1000 GROUP BY id”」の部分がかかるユーザ定義関数により定義されたＭａｐ処理（フィルタ処理及び集約処理）タスクを表し、「SUM(tmp.cnt)」及び「GROUP BY tmp.id」の部分がソフトウェア処理により実行すべきＲｅｄｕｃｅ処理タスクを表す。
【００３９】
一方、分散データベースシステム４のマスタノードサーバ６には、図２に示すように、Thriftサーバ部４５、クエリパーサ部４６、クエリプランナ部４７、リソース管理部４８及びタスク管理部４９が実装される。これらThriftサーバ部４５、クエリパーサ部４６、クエリプランナ部４７、リソース管理部４８及びタスク管理部４９は、マスタノードサーバ６のＣＰＵ２０（図１）がメモリ２１（図１）に格納された対応するプログラム（図示せず）をそれぞれ実行することにより具現化される機能部である。
【００４０】
Thriftサーバ部４５は、アプリケーションサーバ３から送信されてくるＳＱＬクエリを受信したり、当該ＳＱＬクエリの実行結果をアプリケーションサーバ３に送信する機能を有する。またクエリパーサ部４６は、Thriftサーバ部４５が受信したアプリケーションサーバ３からのＳＱＬクエリを解析し、クエリプランナ部４７で扱えるデータ構造の集合体に変換する機能を有する。
【００４１】
クエリプランナ部４７は、クエリパーサ部４６の解析結果に基づいてＳＱＬクエリにより指定された処理の内容を個々のＭａｐ処理タスク及びＲｅｄｕｃｅ処理タスクに分解し、これらＭａｐ処理タスク及びＲｅｄｕｃｅ処理タスクの実行計画を立案する機能を有する。
【００４２】
またリソース管理部４８は、各ワーカノードサーバ７のハードウェアリソースのスペック情報と、各ワーカノードサーバ７から収集したハードウェアリソースの現在の使用状況に関する情報などを管理し、クエリプランナ部４７により立案された実行計画に従って上述のＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクを実行させるワーカノードサーバ７をタスクごとにそれぞれ決定する機能を有する。
【００４３】
タスク管理部４９は、リソース管理部４８の決定結果に基づいて、かかるＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクの実行を要求するタスク実行要求を対応するワーカノードサーバ７にそれぞれ送信する機能を有する。
【００４４】
他方、分散データベースシステム４の各ワーカノードサーバ７には、スキャン処理部５０、集約処理部５１、結合処理部５２、フィルタ処理部５３、処理切替え部５４及びアクセラレータ制御部５５が実装される。これらスキャン処理部５０、集約処理部５１、結合処理部５２、フィルタ処理部５３、処理切替え部５４及びアクセラレータ制御部５５は、それぞれワーカノードサーバ７のＣＰＵ３０（図１）がメモリ３１（図１）に格納された対応するプログラム（図示せず）を実行することにより具現化される機能部である。
【００４５】
スキャン処理部５０は、マスタノードサーバ６から与えられたタスク実行要求に従って、必要なデータベースデータ５８をローカルドライブ３２から読み出してメモリ３１（図１）にロードする機能を有する。また集約処理部５１、結合処理部５２及びフィルタ処理部５３は、それぞれマスタノードサーバ６から与えられたタスク実行要求に従って、メモリ３１に読み出されたデータベースデータ５８に対する集約処理（SUM、MAX又はCOUNTなど）、結合処理（INNER JOIN又はOUTER JOINなど）、又は、フィルタリング処理を実行する機能を有する。
【００４６】
処理切替え部５４は、マスタノードサーバ６から与えられたタスク実行要求に含まれるＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクを、集約処理部５１、結合処理部５２及び又はフィルタ処理部５３を用いたソフトウェア処理により実行すべきか、又は、アクセラレータ３４を利用したハードウェア処理により実行すべきかを判定する機能を有する。なおタスク実行要求に複数のタスクが含まれている場合、処理切替え部５４は、タスクごとにソフトウェア処理により実行すべきか、又は、ハードウェア処理により実行すべきかを判定する。
【００４７】
実際上、処理切替え部５４は、タスク実行要求においてタスクがＳＱＬで記述されている場合には、そのタスクをソフトウェア処理により実行すべきと判定し、集約処理部５１、結合処理部５２及びフィルタ処理部５３のうちの必要な処理部にそのタスクを実行させる。また処理切替え部５４は、タスク実行要求においてタスクが上述のユーザ定義関数で記述されている場合には、そのタスクをハードウェア処理により実行すべきと判定して、アクセラレータ制御部５５を呼び出し、当該ユーザ定義関数をアクセラレータ制御部５５に与える。
【００４８】
アクセラレータ制御部５５は、アクセラレータ３４を制御する機能を有する。アクセラレータ制御部５５は、処理切替え部５４から呼び出されると、そのとき処理切替え部５４から与えられたユーザ定義関数に基づいて、当該ユーザ定義関数により定義されたタスク（Ｍａｐ処理タスク又はＲｅｄｕｃｅ処理タスク）をアクセラレータ３４に実行させるために必要な１又は複数のコマンド（以下、これをアクセラレータコマンドと呼ぶ）を生成する。そしてアクセラレータ制御部５５は、生成したアクセラレータコマンドをアクセラレータに順次出力するようにしてアクセラレータ３４にタスクを実行させる。
【００４９】
アクセラレータ３４は、Ｍａｐ処理タスクやＲｅｄｕｃｅ処理タスクを実行するための各種機能を備える。図２は、アクセラレータ３４がフィルタ処理機能及び集約処理機能を備える場合の一例であり、それぞれ集約処理部５１及びフィルタ処理部５３と同様の機能を有する集約処理部５６及びフィルタ処理部５７をアクセラレータ３４が備えている場合を示している。アクセラレータ３４は、アクセラレータ制御部５５から与えられるアクセラレータコマンドに従って必要な集約処理やフィルタ処理を集約処理部５６やフィルタ処理部５７により実行し、その処理結果をアクセラレータ制御部５５に出力する。
【００５０】
かくしてアクセラレータ制御部５５は、アクセラレータ３４から出力された各アクセラレータコマンドの処理結果をまとめるまとめ処理を実行する。ワーカノードサーバ７は、アクセラレータ３４により実行したタスクがＭａｐ処理タスクであった場合にはその処理結果をＲｅｄｕｃｅ処理が割り振られた他のワーカノードサーバ７に送信し、アクセラレータ３４により実行したタスクがＲｅｄｕｃｅ処理タスクであった場合にはその処理結果をマスタノードサーバ６に送信する。
【００５１】
（１−２）各種処理の内容
次に、本情報処理システム１において実行される各種処理の処理内容について説明する。
【００５２】
（１−２−１）クエリ変換処理
図５は、アプリケーションサーバ３の分析ＢＩツール４１（図２）からクエリ変換部４３（図２）にＳＱＬクエリが与えられたときに当該クエリ変換部４３により実行されるクエリ変換処理の処理手順を示す。
【００５３】
クエリ変換部４３は、分析ＢＩツール４１からＳＱＬクエリが与えられるとこのクエリ変換処理を開始し、まず、与えられたＳＱＬクエリを解析し、ＳＱＬクエリの内容をクエリ変換部４３が扱えるデータ構造の集合体に変換する（Ｓ１）。
【００５４】
続いてクエリ変換部４３は、かかる解析結果に基づいてＳＱＬクエリにより指定された処理の内容を個々のＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクに分解すると共に、これらＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクの実行計画を作成する（Ｓ２）。またクエリ変換部４３は、アクセラレータ情報テーブル４４（図３）を参照し（Ｓ３）、かかるＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクの中に、ワーカノードサーバ７のアクセラレータ３４により実行可能なタスクが存在するか否かを判定する（Ｓ４）。
【００５５】
そしてクエリ変換部４３は、この判定で否定結果を得ると、分析ＢＩツール４１から与えられたＳＱＬクエリをそのまま分散データベースシステム４のマスタノードサーバ６に送信し（Ｓ５）、この後、このクエリ変換処理を終了する。
【００５６】
これに対して、クエリ変換部４３は、ステップＳ４の判定で肯定結果を得ると、かかるＳＱＬクエリを、ワーカノードサーバ７のアクセラレータ３４により実行可能なタスク（Ｍａｐ処理タスク又はＲｅｄｕｃｅ処理タスク）を上述のユーザ定義関数で定義し（Ｓ６）、さらにこれ以外のタスクをＳＱＬで定義したＳＱＬクエリに変換する（Ｓ７）。
【００５７】
そしてクエリ変換部４３は、変換後のＳＱＬクエリを分散データベースシステム４のマスタノードサーバ６に送信し（Ｓ８）、この後、このクエリ変換処理を終了する。
【００５８】
（１−２−２）マスタノードサーバの処理
一方、図６は、アプリケーションサーバ３からＳＱＬクエリが送信されてきたマスタノードサーバ６において実行される一連の処理の流れを示す。
【００５９】
マスタノードサーバ６では、アプリケーションサーバ３からＳＱＬクエリが送信されてくると、この図６に示す処理が開始され、まず、そのＳＱＬクエリをThriftサーバ部４５（図２）が受信し（Ｓ１０）、この後、クエリパーサ部４６（図２）がこのＳＱＬクエリを解析する（Ｓ１１）。
【００６０】
そして、この解析結果に基づいて、クエリプランナ部４７（図２）が、当該ＳＱＬクエリにおいて指定された処理の内容をＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクに分解すると共に、これらＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクの実行計画を立案する（Ｓ１２）。
【００６１】
この後、リソース管理部４８（図２）が、クエリプランナ部４７により立案された実行計画に従って、これらＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクの振分け先のワーカノードサーバ７をタスクごとにそれぞれ決定する（Ｓ１３）。
【００６２】
次いで、タスク管理部４９（図２）が、リソース管理部４８の決定に従って、対応するワーカノードサーバ７に対して、そのワーカノードサーバ７に振り分けられたＭａｐ処理タスク又はＲｅｄｕｃｅ処理タスクを実行すべき旨のタスク実行要求を送信する（Ｓ１４）。以上によりマスタノードサーバ６の処理が終了する。
【００６３】
（１−２−３）ワーカノードサーバの処理
（１−２−３−１）Ｍａｐ処理
図７は、Ｍａｐ処理を実行すべき旨のタスク実行要求が与えられたワーカノードサーバ７において実行される一連の処理の流れを示す。
【００６４】
マスタノードサーバ６からＭａｐ処理タスクのタスク実行要求がワーカノードサーバ７に与えられると、そのワーカノードサーバ７においてこの図７に示す処理が開始され、まず、スキャン処理部５０（図２）がローカルドライブ３２（図１）から必要なデータベースデータ５８（図２）をメモリ３１（図１）に読み出す（Ｓ２０）。この際、スキャン処理部５０は、そのデータベースデータ５８が圧縮されている場合には伸長するなど、そのデータベースデータ５８に対する必要なデータ処理を施す。
【００６５】
続いて、処理切替え部５４（図２）が、マスタノードサーバ６から与えられたタスク実行要求にユーザ定義関数が含まれているか否かを判定する（Ｓ２１）。
【００６６】
処理切替え部５４は、この判定で否定結果を得ると集約処理部５１（図２）、結合処理部５２（図２）及びフィルタ処理部５３（図２）のうちの必要な処理部を起動してタスク実行要求に含まれる１又は複数のＭａｐ処理タスクを順次実行させる（Ｓ２２）。また、かかるＭａｐ処理タスクを実行した処理部は、処理結果をＲｅｄｕｃｅ処理タスクが割り振られたワーカノードサーバ７に送信する（Ｓ２５）。以上により、そのワーカノードサーバ７における処理が終了する。
【００６７】
これに対して、処理切替え部５４は、ステップＳ２１の判断で肯定結果を得ると、ユーザ定義関数で定義されていないＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクについては集約処理部５１、結合処理部５２及び又はフィルタ処理部５３に実行させる一方、これと並行してアクセラレータ制御部５５（図２）を呼び出す。
【００６８】
そして処理切替え部５４により呼び出されたアクセラレータ制御部５５は、タスク実行要求に含まれるユーザ定義関数に基づいて必要な１又は複数のアクセラレータコマンドを生成し、生成したアクセラレータコマンドをアクセラレータ３４に順次与えることにより、そのユーザ定義関数により定義されたＭａｐ処理タスクをアクセラレータ３４に実行させる（Ｓ２３）。
【００６９】
またアクセラレータ制御部５５は、アクセラレータ３４による上述のＭａｐ処理タスクが完了すると、その処理結果をまとめるまとめ処理を実行し（Ｓ２４）、この後、かかるまとめ処理の処理結果や、ソフトウェア処理したＭａｐ処理タスクの処理結果をＲｅｄｕｃｅ処理が割り振られたワーカノードサーバ７に送信する（Ｓ２５）。以上により、そのワーカノードサーバ７における処理が終了する。
【００７０】
（１−２−３−２）Ｒｅｄｕｃｅ処理
一方、図８は、Ｒｅｄｕｃｅ処理タスクを実行すべき旨のタスク実行要求が与えられたワーカノードサーバ７において実行される一連の処理の流れを示す。
【００７１】
マスタノードサーバ６からＲｅｄｕｃｅ処理タスクのタスク実行要求がワーカノードサーバ７に与えられると、そのワーカノードサーバ７においてこの図８に示す処理が開始され、まず、処理切替え部５４が、そのＲｅｄｕｃｅ処理を実行するのに必要なＭａｐ処理タスクの処理結果が他のワーカノードサーバ７から送信されてくるのを待ち受ける（Ｓ３０）。
【００７２】
そして処理切替え部５４は、必要なＭａｐ処理タスクの処理結果をすべて受領すると、マスタノードサーバ６から与えられたタスク実行要求にユーザ定義関数が含まれているか否かを判定する（Ｓ３１）。
【００７３】
処理切替え部５４は、この判定で否定結果を得ると集約処理部５１、結合処理部５２及びフィルタ処理部５３のうちの必要な処理部を起動してＲｅｄｕｃｅ処理タスクを実行させる（Ｓ３２）。また、かかるＲｅｄｕｃｅ処理タスクを実行した処理部は、処理結果をマスタノードサーバ６に送信する（Ｓ３５）。以上により、そのワーカノードサーバ７における処理が終了する。
【００７４】
これに対して、処理切替え部５４は、ステップＳ３１の判断で肯定結果を得ると、アクセラレータ制御部５５を呼び出す。そして処理切替え部５４により呼び出されたアクセラレータ制御部５５は、タスク実行要求に含まれるユーザ定義関数に基づいて必要な１又は複数のアクセラレータコマンドを生成し、生成したアクセラレータコマンドをアクセラレータ３４に順次与えることにより、そのユーザ定義関数により定義されたＲｅｄｕｃｅ処理タスクをアクセラレータ３４に実行させる（Ｓ３３）。
【００７５】
またアクセラレータ制御部５５は、アクセラレータ３４による上述のＲｅｄｕｃｅ処理タスクが完了すると、その処理結果をまとめるまとめ処理を実行し（Ｓ３４）、この後、かかるまとめ処理の処理結果をマスタノードサーバ６に送信する（Ｓ３５）。以上により、そのワーカノードサーバ７における処理が終了する。
【００７６】
（１−３）情報処理システムにおける分析処理の流れ
図９は、以上のような本情報処理システム１における分析処理の流れの一例を示す。かかる分析処理はクライアント２から分析条件を指定した分析指示がアプリケーションサーバ３に与えられることにより開始される（Ｓ４０）。
【００７７】
アプリケーションサーバ３では、かかる分析指示が与えられると、分析指示に基づくＳＱＬクエリを生成すると共に、生成したＳＱＬクエリを、ワーカノードサーバ７のアクセラレータ３４により実行可能なタスクを上述のユーザ定義関数により定義し、他のタスクをＳＱＬにより定義したＳＱＬクエリに変換する（Ｓ４１）。そしてアプリケーションサーバ３は、変換後のＳＱＬクエリをマスタノードサーバ６に送信する（Ｓ４２）。
【００７８】
マスタノードサーバ６は、アプリケーションサーバ３からＳＱＬクエリが与えられると、クエリ実行計画を立案して、そのＳＱＬクエリをＭａｐ処理タスクと、Ｒｅｄｕｃｅ処理タスクとに分解する。またマスタノードサーバ６は、分解したこれらＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクの振分け先のワーカノードサーバ７を決定する（Ｓ４３）。
【００７９】
そしてマスタノードサーバ６は、かかる決定結果に基づいて、これらのＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクのタスク実行要求を、対応するワーカノードサーバ７にそれぞれ送信する（Ｓ４４〜Ｓ４６）。
【００８０】
Ｍａｐ処理タスクのタスク実行要求が与えられたワーカノードサーバ７は、必要に応じて他のワーカノードサーバ７とデータベースデータ５８（図２）をやり取りしながら、そのタスク実行要求において指定されたＭａｐ処理タスクを実行する（Ｓ４６，Ｓ４７）。そして、かかるワーカノードサーバ７は、そのＭａｐ処理タスクが完了すると、Ｒｅｓｕｃｅ処理タスクが割り振られたワーカノードサーバ７にそのＭａｐ処理タスクの処理結果を送信する（Ｓ４８，Ｓ４９）。
【００８１】
またＲｅｄｕｃｅ処理タスクのタスク実行要求が与えられたワーカノードサーバ７は、関連するＭａｐ処理タスクが割り振られたすべてのワーカノードサーバ７からそのＭａｐ処理タスクの処理結果が与えられるとそのタスク実行要求において指定されたＲｅｄｕｃｅ処理タスクを実行する（Ｓ５０）。そして、かかるワーカノードサーバ７は、そのＲｅｄｕｃｅ処理タスクが完了すると、その処理結果をマスタノードサーバ６に送信する（Ｓ５１）。
【００８２】
なお、このときマスタノードサーバ６が受信するＲｅｄｕｃｅ処理タスクの処理結果が、そのときマスタノードサーバ６がアプリケーションサーバ３から与えられたＳＱＬクエリの処理結果である。かくしてマスタノードサーバ６は、受信したＲｅｄｕｃｅ処理タスクの処理結果をアプリケーションサーバ３に送信する（Ｓ５２）。
【００８３】
アプリケーションサーバ３は、マスタノードサーバ６からＳＱＬクエリの処理結果が与えられると、その処理結果に基づいて分析処理を実行し、分析結果をクライアント２に表示させる（Ｓ５３）。
【００８４】
一方、図１０は、マスタノードサーバ６からＭａｐ処理タスクのタスク実行要求が与えられたワーカノードサーバ７において実行されるＭａｐ処理タスクの処理の流れの一例を示す。この図１０は、かかるＭａｐ処理タスクをアクセラレータ３４において実行する場合の例である。
【００８５】
なお上述したスキャン処理部５０、集約処理部５１、結合処理部５２、フィルタ処理部５３、処理切替え部５４及びアクセラレータ制御部５５が実行する各種処理は、結局のところＣＰＵ３０により実行されるため、この図１０では、ＣＰＵ３０の処理としている。
【００８６】
通信装置３３は、マスタノードサーバ６から送信されてきたＭａｐ処理タスクのタスク実行要求を受信すると、これをメモリ３１に格納する（Ｓ６０）。そして、このタスク実行要求は、この後、ＣＰＵ３０によりメモリ３１から読み出される（Ｓ６１）。
【００８７】
ＣＰＵ３０は、メモリ３１からタスク実行要求を読み出すと、他のワーカノードサーバ７やローカルドライブ３２に対して必要なデータベースデータ５８（図２）の転送を指示する（Ｓ６２）。またＣＰＵ３０は、この結果として他のワーカノードサーバ７やローカルドライブ３２から送信されてきたデータベースデータ５８をメモリに格納する（Ｓ６３，Ｓ６４）。そしてＣＰＵ３０は、この後、かかるタスク実行要求に応じたＭａｐ処理タスクの実行をアクセラレータ３４に指示する（Ｓ６５）。
【００８８】
アクセラレータ３４は、ＣＰＵ３０からの指示に応じてＭａｐ処理タスクを開始し、必要なデータベースデータ５８を適宜メモリ３１から読み出しながら、必要なフィルタ処理及び又は集約処理を実行する（Ｓ６６）。そしてアクセラレータ３４は、かかるＭａｐ処理タスクの処理結果を適宜メモリ３１に格納する（Ｓ６７）。
【００８９】
メモリ３１に格納されたかかるＭａｐ処理タスクの処理結果は、この後、ＣＰＵ３０により読み出される（Ｓ６８）。そしてＣＰＵ３０は、読み出した処理結果をまとめる結果まとめ処理を実行し（Ｓ６９）、その処理結果をメモリ３１に格納する（Ｓ７０）。またＣＰＵ３０は、この後、かかる結果まとめ処理の処理結果をＲｅｄｕｃｅ処理が割り振られたワーカノードサーバ７に送信するよう通信装置３３に指示を与える（Ｓ７１）。
【００９０】
かくして、かかる指示が与えられた通信装置３３は、結果まとめ処理の処理結果をメモリ３１から読み出し（Ｓ７２）、これをＲｅｄｕｃｅ処理が割り振られたワーカノードサーバ７に送信する（Ｓ７３）。
【００９１】
（１−４）本実施の形態の効果
以上のように本実施の形態の情報処理システム１では、アプリケーションサーバ３において、アプリケーションである分析ＢＩツール４１が生成したＳＱＬクエリを、分散データベースシステム４のワーカノードサーバ７のアクセラレータ３４により実行可能なタスクをユーザ定義関数で定義し、それ以外のタスクをＳＱＬで定義したＳＱＬクエリに変換し、マスタノードサーバ６において、このＳＱＬクエリの処理をタスクごとに分解してこれらのタスクを各ワーカノードサーバ７に割り振り、各ワーカノードサーバ７において、ユーザ定義関数で定義されたタスクをアクセラレータ３４において実行し、ＳＱＬで定義されたタスクをソフトウェア処理する。
【００９２】
従って、本情報処理システム１によれば、例えば、分析ＢＩツール４１の改変を必要とすることなく、一部のタスクをアクセラレータ３４に実行させて、ワーカノードサーバ７の１台当りの性能を向上させることができる。また本情報処理システム１では、この際、分析ＢＩツール４１の改変を必要としない。よって本情報処理システム１によれば、アプリケーションの改変を必要とせずに、大容量データの高速処理のためのシステム規模の増大を抑止し、導入コストやメンテナンスコストの増大を抑制することができる。
【００９３】
（２）第２の実施の形態
図１及び図２において、６０は全体として第２の実施の形態による情報処理システムを示す。この情報処理システム６０は、分散データベースシステム６１のワーカノードサーバ６２のアクセラレータ６３が、マスタノードサーバ６から割り振られたＭａｐ処理タスクを実行する際、必要なデータベースデータ５８（図２）を他のワーカノードサーバ７やローカルドライブ３２から取得する場合に、メモリ３１を介することなく直接他のワーカノードサーバ７やローカルドライブ３２からそのデータベースデータ５８を取得する点を除いて第１の実施の形態による情報処理システム１と同様に構成されている。
【００９４】
実際上、第１の実施の形態による情報処理システム１では、図１０について上述したように、他のワーカノードサーバ７やローカルドライブ３２からアクセラレータ３４へのデータベースデータ５８の転送は、メモリ３１を介して行われていた。これに対して本実施の形態の情報処理システム６０では、後述する図１２に示すように、他のワーカノードサーバ７やローカルドライブ３２からアクセラレータ３４へのデータベースデータ５８の転送をメモリ３１を介すことなく直接行う点が第１の実施の形態による情報処理システム１と相違する。
【００９５】
図１１は、本実施の形態による情報処理システム６０において、分散データベースシステム６１のマスタノードサーバ６から例えばＭａｐ処理タスクのタスク実行要求が与えられたワーカノードサーバ６２において実行される一連の処理の流れを示す。
【００９６】
マスタノードサーバ６からＭａｐ処理のタスク実行要求がワーカノードサーバ６２に与えられると、そのワーカノードサーバ６２においてこの図１１に示す処理が開始され、まず、図２について上述した処理切替え部５４が、そのタスク実行要求に上述のユーザ定義関数が含まれているか否かを判定する（Ｓ８０）。
【００９７】
そして処理切替え部５４は、この判定で否定結果を得ると集約処理部５１、結合処理部５２及びフィルタ処理部５３のうちの必要な処理部を起動してＭａｐ処理のタスクを実行させる（Ｓ８１）。また、かかるＭａｐ処理タスクを実行した処理部は、処理結果をＲｅｄｕｃｅ処理タスクが割り振られたワーカノードサーバ６２に送信する（Ｓ８５）。以上により、そのワーカノードサーバ６２における処理が終了する。
【００９８】
これに対して、処理切替え部５４は、ステップＳ８０の判断で肯定結果を得ると、ユーザ定義関数で定義されていないＭａｐ処理タスクやＲｅｄｕｃｅ処理タスクについては集約処理部５１、結合処理部５２及び又はフィルタ処理部５３に実行させる一方、これと並行してアクセラレータ制御部５５を呼び出す。
【００９９】
そして処理切替え部５０により呼び出されたアクセラレータ制御部５５は、タスク実行要求に含まれるユーザ定義関数をアクセラレータ用のコマンドに変換してアクセラレータ６３（図１及び図２）に与えることにより、そのＭａｐ処理タスクの実行をアクセラレータ６３に指示する（Ｓ８２）。
【０１００】
そしてアクセラレータ６３は、かかる指示が与えられると、必要なデータベースデータを直接転送するようローカルドライブ３２や他のワーカノードサーバ６２に指示を与える（Ｓ８３）。かくして、アクセラレータ６３は、ローカルドライブ３２や他のワーカノードサーバ６２から直接転送されるデータベースデータを利用してかかるタスク実行要求において指定されたＭａｐ処理タスクを実行する。
【０１０１】
次いで、アクセラレータ制御部５５は、アクセラレータ６３によるＭａｐ処理が完了すると、その処理結果をまとめる結果まとめ処理を実行し（Ｓ８４）、この後、かかる結果まとめ処理の処理結果や、ソフトウェア処理したＭａｐ処理タスクの処理結果をＲｅｄｕｃｅ処理が割り振られたワーカノードサーバ６２に送信する（Ｓ８５）。以上により、そのワーカノードサーバ６２における処理が終了する。
【０１０２】
図１２は、本実施の形態の情報処理システム６０において、マスタノードサーバ６からＭａｐ処理タスクのタスク実行要求が与えられたワーカノードサーバ６２におけるＭａｐ処理タスクの流れの一例を示す。この図１２は、かかるＭａｐ処理タスクをアクセラレータ６３において実行する場合の例である。
【０１０３】
なお、図１０の場合と同様に、この図１２においても図２のスキャン処理部５０、集約処理部５１、結合処理部５２、フィルタ処理部５３、処理切替え部５４及びアクセラレータ制御部５５が実行する各種処理をＣＰＵ３０の処理として記載している。
【０１０４】
通信装置３３は、マスタノードサーバ６から送信されてきたＭａｐ処理タスクのタスク実行要求を受信すると、これをメモリ３１に格納する（Ｓ９０）。そして、このタスク実行要求は、この後、ＣＰＵ３０によりメモリ３１から読み出される（Ｓ９１）。
【０１０５】
ＣＰＵ３０は、メモリ３１からタスク実行要求を読み出すと、そのタスク実行要求に従ったＭａｐ処理タスクを実行するようアクセラレータ６３に指示を与える（Ｓ９２）。そして、この指示を受けたアクセラレータ６３は、ローカルドライブ３２（や他のワーカノードサーバ６２）に対して必要なデータベースデータの転送を要求する。この結果、ローカルドライブ３２（や他のワーカノードサーバ６２）から必要なデータベースデータがアクセラレータ６３に直接与えられる（Ｓ９３）。
【０１０６】
そしてアクセラレータ６３は、ローカルドライブ３２（や他のワーカノードサーバ６２）から転送されてきたデータベースデータをＤＲＡＭ３５（図１）に格納し、必要なデータベースデータを適宜ＤＲＡＭ３５から読み出しながら、必要なフィルタ処理及び又は集約処理などのＭａｐ処理を実行する（Ｓ９４）。そしてアクセラレータ６３は、かかるＭａｐ処理タスクの処理結果を適宜メモリ３１に格納する（Ｓ９５）。
【０１０７】
この後ステップＳ９６〜ステップＳ９９において、図１０のステップＳ６８〜ステップＳ７１と同様の処理が実行され、この後、ＣＰＵ３０により実行されたまとめ処理の処理結果が通信装置３３によりメモリ３１から読み出されて（Ｓ１００）、Ｒｅｄｕｃｅ処理が割り振られたワーカノードサーバ６２に送信される（Ｓ１０１）。
【０１０８】
以上のように本実施の形態による情報処理システム６０によれば、アクセラレータ６３がメモリ３１を介さずローカルドライブ３２から直接データベースデータ５８を取得するため、ローカルドライブ３２からメモリ３１へのデータベースデータの転送、及びメモリ３１からアクセラレータ６３へのデータベースデータの転送が不要となり、ＣＰＵ３０の必要データ転送帯域を少なくして、かつ低遅延なデータ転送を行うことができ、結果としてワーカノードサーバ６２の性能を向上させることができる。
【０１０９】
（３）他の実施の形態
なお上述の第１及び第２の実施の形態においては、アプリケーションサーバ３が保持するアクセラレータ情報テーブル４４（図２）に格納されたアクセラレータ３４，６３のハードスペック情報が予めシステム管理者等により格納されている場合について述べたが、本発明はこれに限らず、例えば図２との対応部分に同一符号を付した図１３に示すように、各ワーカノードサーバ７，６２からそのワーカノードサーバ７，６２に搭載されたアクセラレータ３４，６３のハードスペック情報を収集するアクセラレータ情報取得部７２を情報処理システム７０のアプリケーションサーバ７１に設け、当該アクセラレータ情報取得部７２が、定期的又は非定期に収集した各ワーカノードサーバ７，６２のアクセラレータ３４，６３のハードスペック情報をアクセラレータ情報テーブル４４に格納し、又は、収集した各アクセラレータ３４のハードスペック情報に基づいてアクセラレータ情報テーブル４４を更新するようにしても良い。このようにすることにより、アクセラレータ３４，６３が交換された場合や、ワーカノードサーバ７，６２が増設された場合においても、アプリケーションサーバ７１が常に最新のアクセラレータ情報（アクセラレータ３４，６３のハードウェアスペック情報）に基づいてＳＱＬクエリの変換処理を行うことが可能となる。
【０１１０】
なお、このアクセラレータ情報取得部７２は、アプリケーションサーバ３のＣＰＵ１０がメモリ１１に格納されたプログラムを実行することにより具現化されるソフトウェア構成と、また専用のハードウェアから構成されるハードウェア構成とのいずれの構成であってもよい。
【０１１１】
また上述の第１及び第２の実施の形態においては、各ワーカノードサーバ７，６２間の通信を第２のネットワーク８を介して行うようにした場合について述べたが、本発明はこれに限らず、例えば図１との対応部分に同一符号を付した図１４に示すように、ワーカノードサーバ７，６２のアクセラレータ３４、６３間を高速シリアル通信用のケーブル８１を介してデイジーチェーン接続したり、すべてのワーカノードサーバ７，６２のアクセラレータ３４，６３間をそれぞれ高速シリアル通信用のケーブル８１を介して相互に接続し、これらケーブル８１を介してワーカノードサーバ７，６２間でデータベースデータ等の必要なデータをやり取りするように情報処理システム８０を構築するようにしても良い。
【０１１２】
さらに上述の第１及び第２の実施の形態においては、アプリケーションサーバ３に実装するアプリケーション（プログラム）が分析ＢＩツール４１である場合について述べたが、本発明はこれに限らず、かかるアプリケーションが分析ＢＩツール４１以外のものであっても本発明を広く適用することができる。
【０１１３】
（４）第３の実施の形態
図１及び図１５において、９０は全体として第３の実施の形態による情報処理システムを示す。第１の実施の形態による情報処理システム１では、図２に示すクエリ変換部４３がアクセラレータにより実行可能な第１のタスクと、ソフトウェアにより実行すべき第２のタスクとに明示的に分けたクエリに変換するものであった。これに対して、本実施の形態の情報処理システム９０では、分析ＢＩツール４１（図１５）が出力するクエリを変換せずにＪＤＢＣ/ＯＤＢＣドライバ４２（図１５）を介してワーカノードサーバ９２に送信し、次に当該ワーカノードサーバ９２におけるクエリプランナ部９３がアクセラレータ処理に適したクエリプランを変換生成し、当該クエリプランを各ワーカノードにおける実行エンジンで実行する点が第１の実施の形態による情報処理システムと相違する。
【０１１４】
図１５は、第３の実施の形態における情報処理システム９０の論理構成を示す。既に説明した構成と同一の機能を有する部分については、同一の符号を付し、説明を省略する。
【０１１５】
ワーカノードサーバ９２は、図１及び図２におけるマスタノードサーバ６及びワーカノードサーバ７（６２）を合わせた機能を有する。ハードウェア構成としては、図１のワーカノードサーバ７と同様である。
【０１１６】
アプリケーションサーバ９１から受信したクエリは、まずクエリパーサ部４６が解析する。クエリプランナ部９３は、クエリパーサ部４６が解析したクエリを、アクセラレータ最適化ルール部９５と連携してアクセラレータ処理に適したクエリプランを生成する。
【０１１７】
アクセラレータ最適化ルール部９５は、ローカルドライブ３２内のアクセラレータ情報テーブル４４（図３）を用い、アクセラレータの制約条件を考慮して、アクセラレータ処理に最適化したクエリプラン生成ルールを適用する。
【０１１８】
ファイルパス解決部９６は、データベースファイルの分散ファイルシステム１００上の格納位置情報（分散ファイルシステムパス）を、ローカルファイルシステム１０１上の格納位置情報（ローカルファイルシステムパス）への変換情報を検索して保持し、ファイルパスの問い合わせに対して応答する。
【０１１９】
実行エンジン部９４は、結合処理部５２、集約処理部５１、フィルタ処理部５３、スキャン処理部５０及びエクスチェンジ処理部１０２から構成され、アクセラレータ制御部９７及びアクセラレータ９８と連携しながらクエリプランを実行する（いわゆるソフトウェア処理）。
【０１２０】
分散ファイルシステム１００は、複数のサーバ群をネットワークで連結して一つのファイルシステムとして構成するものである。分散ファイルシステムの一例としては、ＨＤＦＳ（Hadoop Distributed File System）がある。
【０１２１】
ファイルシステム１０１は、オペレーティングシステム（ＯＳ）が持つ機能の一つであり、ドライブ上に格納されるファイルの論理的な位置情報（ＬＢＡ（Logical Block Address）とサイズ）等を管理し、アプリケーション等からのファイル名による読出し要求に対して、ファイルの位置情報から、ドライブ上のデータを読み出す機能を提供する。
【０１２２】
図１６は、第３の実施の形態におけるクエリプランの実行方法と、クエリプランの変換方法とを説明する図である。
【０１２３】
標準クエリプラン１１０は、クエリプランナ部９３が入力クエリから最初に生成するクエリプランである。後述の通り変換後クエリプラン１２４に変換されることもあれば、変換なしで実行エンジン部９４で実行されることもある。標準クエリプラン１１０では、図中下部の処理から、scan処理Ｓ１２２、filter処理Ｓ１１９、aggregate処理Ｓ１１６、exchange処理Ｓ１１３、aggregate処理Ｓ１１１の順で実行されることを示している。
【０１２４】
scan処理Ｓ１２２はスキャン処理部５０が行い、分散ファイルシステム１００からのデータベースデータの読み出し（Ｓ１２３）と、当該データベースデータを実行エンジン部向けインメモリフォーマットへの変換を実行して主記憶（メモリ３１（図１））へ格納（Ｓ１２１）する。
【０１２５】
filter処理Ｓ１１９はフィルタ処理部５３が行い、scan処理結果のデータを主記憶より読み出して（Ｓ１２０）、各行データに対してfilter条件に一致するかどうかを判定し、一致している行データをヒット判定し、その結果を主記憶に格納（Ｓ１１８）する（filter処理）。
【０１２６】
第１のaggregate処理（集約処理）Ｓ１１６は集約処理部５１が行い、ヒット判定された行データを主記憶より読み出して（Ｓ１１７）、aggregate条件に従って処理を実行し、集約結果データを主記憶に格納（Ｓ１１５）する。
【０１２７】
exchange処理Ｓ１１３はエクスチェンジ処理部１０２が行い、集約結果データを主記憶より読み出して（Ｓ１１４）、Ｓ１１１について後述する第２のaggregate処理（まとめ処理）を実行するワーカノードサーバ９２へ、ネットワークを介して転送（Ｓ１１２）する。
【０１２８】
第２のaggregate処理（まとめ処理）Ｓ１１１は、まとめを担当するワーカノードサーバ９２が、各ワーカノードサーバ９２から収集した集約結果データのまとめ集約処理を実施し、アプリケーションサーバ９１に送信する。
【０１２９】
変換後クエリプラン１２４は、標準クエリプラン１１０を基にしてアクセラレータ最適化ルール部９５が変換生成するものである。アクセラレータ９８で処理をするクエリプランは変換し、実行エンジン部９４で処理するクエリプランは変換しない。アクセラレータのスペック情報などを参照し、どちらで処理するのが適当か判断し、変換要否を決定する。変換後クエリプラン１２４は、図中下部の処理から、ＦＰＧＡ並列処理Ｓ１３０、exchange処理Ｓ１１３、aggregate処理Ｓ１１１の順で実行されることを示している。
【０１３０】
ＦＰＧＡ並列処理Ｓ１３０はアクセラレータ９８（スキャン処理部９９、フィルタ処理部５７及び集約処理部５６）が行い、aggregate条件１３１、filter条件１３２、scan条件１３３、データローカリティ利用条件１３４に従って、ローカルドライブ３２データベースデータの読み出し（Ｓ１３５）と、スキャン処理、フィルタ処理及び集約処理とを行い、その後アクセラレータ９９の処理結果をフォーマット変換して主記憶に格納（Ｓ１２９）するものである。アクセラレータ最適化ルール部９５は、標準クエリプラン内に存在するscan処理Ｓ１２２、filter処理Ｓ１１９、aggregate処理Ｓ１１６を検出し、当該処理の条件を収集して、ＦＰＧＡ並列処理Ｓ１３０のaggregate条件、filter条件、scan条件として設定する。aggregate条件１３１は集約演算種別（ＳＵＭ／ＭＡＸ／ＭＩＮ）、グループ化対象カラム、集約演算対象カラム等の集約処理に必要な情報であり、filter条件１３２は比較条件（＝、＞、＜、等）と比較対象カラム等のフィルタ処理に必要な情報であり、scan条件１３３は読み出し対象のデータベースデータファイルの分散ファイルシステム上の位置情報（分散ファイルシステムパス）等のスキャン処理に必要な情報である。データローカリティ利用条件１３４は、自ワーカノードサーバ９２上のファイルシステム１０１に存在するデータベースデータファイルをスキャン処理対象とするための条件である。ＦＰＧＡ並列処理Ｓ１３０は、アクセラレータ制御部９７の指示によりアクセラレータ９９が実行する。
【０１３１】
exchange処理Ｓ１１３及び第２のaggregate処理Ｓ１１１は、標準クエリプランと同様に、実行エンジン部９４内のエクスチェンジ処理部１０２及び集約処理部５１が行う。これらの処理部をアクセラレータ９９内に設けてもよい。
【０１３２】
標準クエリプラン１１０は、ＣＰＵ処理されることを前提としているため、scan、filter、aggregateの各処理は、処理の開始時及び完了時にデータを主記憶に配置又は主記憶から読み出すことが基本動作になっている。このような主記憶のデータ入出力は、ＣＰＵ―メモリ間のデータの移動が発生し、処理効率を落とす要因となる。本発明によるクエリプラン変換方式では、各処理を統合した新たなＦＰＧＡ並列処理Ｓ１３０に変換することにより、各処理をアクセラレータ内部でパイプライン並列処理可能として、ＦＰＧＡ―メモリ間のデータの移動を不要とし、処理効率を高める効果がある。
【０１３３】
また、標準クエリプランにおけるscan処理Ｓ１２２は、分散ファイルシステム１００よりデータベースデータを取得するため、分散ファイルシステム１００のデータ分散状況によっては、他ワーカノードサーバ９２よりネットワークを介してデータベースデータを取得する場合がある。本発明によるクエリプラン変換では、アクセラレータ９８が近傍のローカルドライブより確実にデータベースデータを取得可能とすることでアクセラレータを効率よく動作させることが可能となる。
【０１３４】
図１７は、第３の実施形態における、全体シーケンスを説明する図である。
【０１３５】
クライアント２は、最初にデータベースデータ格納指示を分散ファイルシステム１００に対して指示する（Ｓ１４０）。取りまとめのワーカノードサーバ＃０の分散ファイルシステム１００は、当該データベースデータを所定のサイズのブロックに分割して、リプリケーションのために他ワーカノードサーバへデータのコピーを送信する（Ｓ１４１、Ｓ１４２）。それぞれのワーカノードにおいてファイルパス解決部９６は、前記データベースデータのブロックが格納されたことを分散ファイルシステム１００からのイベント通知によって検出し、次に当該ブロックを各サーバ９２上のローカルファイルシステム１０１上で検索することによって、分散ファイルシステムパスとローカルファイルシステムパスの対応表を作成する（Ｓ１４３、Ｓ１４４、Ｓ１４５）。対応表は、ブロックが更新される度に更新し、またキャッシュとしてファイルに格納保存しておいてもよい。
【０１３６】
次に、クライアント２は、分析指示をアプリケーションサーバに送信する（Ｓ１４６）。アプリケーションサーバ９１は、ＳＱＬクエリを分散データベースシステム１０３に送信する（Ｓ１４８）。ＳＱＬクエリを受領したワーカノードサーバ＃０は、前述したようにクエリプランを変換し、変換後クエリプラン（及び変換しない標準クエリプラン）を他ワーカノードサーバ＃１、＃２へ送信する（Ｓ１５０、Ｓ１５１）。
【０１３７】
各ワーカノード＃０、＃１、＃２は、ＦＰＧＡ並列処理のスキャン処理やフィルタ処理、集約処理をアクセラレータ９８にオフロードして実行する（Ｓ１５２、Ｓ１５３、Ｓ１５４）。変換されていない標準クエリプランについては、実行エンジン９４にて実行する。次にワーカノードサーバ＃１、＃２は、アクセラレータ９８や実行エンジン９４が出力する結果データを、まとめ処理のためにワーカノードサーバ＃０に送信する（Ｓ１５５、Ｓ１５６）。
【０１３８】
ワーカノードサーバ＃０は、前記結果データをまとめ処理を実行し（Ｓ１５７）、まとめ結果データをアプリケーションサーバへ送信する（Ｓ１５８）。アプリケーションサーバは、ユーザへの表示のためのクライアントに結果送信を行う（Ｓ１５９）。
【０１３９】
本実施の形態においては、クエリ変換をワーカノードサーバ＃０で行うようにしているが、アプリケーションサーバや個別のワーカノードサーバ＃１、＃２で行うようにしてもよい。
【０１４０】
図１８は、第３の実施の形態において、アクセラレータ最適化ルール部９５がクエリプランに設定したフィルタ条件を、アクセラレータ制御部９７が並列処理に適した形態に変換する際の処理フローを説明する図である。
【０１４１】
アクセラレータ制御部９７は、フィルタ条件が標準形かどうかを判定する（Ｓ１７０）。もし標準形でなければ、分配法則及びド・モルガンの法則により標準形に変換する（Ｓ１７１）。次に、標準形のフィルタ条件式をアクセラレータの並列実行コマンドに設定する（Ｓ１７２）。標準形は、連言標準形（乗法標準形）あるいは選言標準形（加法標準形）である。
【０１４２】
また、フィルタ条件の変換の一例を図１９に示す。変換前のフィルタ条件１８０は、カラムの大小比較（X1= (col1>10)、X2=(col2>=20)）や一致比較（X3=(col3==30)、X4=(col4==”ABDC”)）、及びそれらの論理和と論理積（( (X1 and X2) or X3) and X4）を含んでいる。従来のソフトウェアによる逐次処理（１）では、まずカラムの比較評価を順次実行し、次に内側の括弧でくくられたものから順に論理和、論理積の評価を行っていく。アクセラレータ向けのフィルタ条件変換（２）では、フィルタ条件式を連言標準形に変換する（１８１）。連言標準形では、比較評価の論理和(or)を１つ以上含む論理積(and)の形式となるため、図に示すように、比較評価、論理和、論理積をこの順で並列に処理可能となる。
【０１４３】
図２０は、第３の実施の形態において、分散ファイルシステムパスからアクセラレータのスキャン処理に必要なＬＢＡとサイズ情報への変換フローを示す図である。変換後クエリプランに含まれるスキャン条件１３３は、対象データベースデータの位置情報である分散ファイルシステムパス（例：/hdfs/data/…/DBfile）を含む。アクセラレータ制御部９７は、第一の変換として、ファイルパス解決部９６に問い合わせることで、分散ファイルシステムパスをファイルシステムパス（例： /root/data/…/blockfile）に変換する（Ｓ１９０）。
【０１４４】
次に、アクセラレータ制御部９７は、第２の変換として、ＯＳのファイルシステムに問い合わせることで、前記ファイルシステムパスをドライブ上のファイルの論理的な位置情報であるＬＢＡ（例：0x0124abcd…）とサイズ情報に変換する（Ｓ１９１）。そして最後にスキャン条件を前記ＬＢＡ及びサイズ情報と共に並列実行コマンドに設定する（Ｓ１９２）。
【０１４５】
本方式によれば、アクセラレータは、複雑な分散ファイルシステムやファイルシステムを解析する必要がなく、並列実行コマンドにあるＬＢＡ及びサイズ情報から直接ドライブのデータベースデータにアクセスすることが可能となる。
【産業上の利用可能性】
【０１４６】
本発明は、クライアントから指示された処理を分散データベースシステムから取得した情報に基づいて実行する種々の構成の情報処理システムに広く適用することができる。
【符号の説明】
【０１４７】
６０，７０，８０，９０……情報処理システム、２……クライアント、３，７１，９１……アプリケーションサーバ、４，６１，１０３……分散データベースシステム、６……マスタノードサーバ、７，６２，９２……ワーカノードサーバ、１０，２０，３０……ＣＰＵ、１１，２１，３１……メモリ、１２，２２，３２……ローカルドライブ、３４，６３，９８……アクセラレータ、４１……分析ＢＩツール、４３……クエリ変換部、４４……アクセラレータ情報テーブル、４５……Thriftサーバ部、４６……クエリパーサ部、４７……クエリプランナ部、４８……リソース管理部、４９……タスク管理部、５０……スキャン処理部、５１，５６……集約処理部、５２……結合処理部、５３，５７……フィルタ処理部、５４……処理切替え部、５５，９７……アクセラレータ制御部、５８……データベースデータ、７２……アクセラレータ情報取得部、８１……コード，９５……アクセラレータ最適化ルール部、９６……ファイルパス解決部、９９……スキャン処理部、１００……分散ファイルシステム、１０１……ファイルシステム。
【図１】
2018143441.tif 000003
【図２】
2018143441.tif 000004
【図３】
2018143441.tif 000005
【図４】
2018143441.tif 000006
【図５】
2018143441.tif 000007
【図６】
2018143441.tif 000008
【図７】
2018143441.tif 000009
【図８】
2018143441.tif 000010
【図９】
2018143441.tif 000011
【図１０】
2018143441.tif 000012
【図１１】
2018143441.tif 000013
【図１２】
2018143441.tif 000014
【図１３】
2018143441.tif 000015
【図１４】
2018143441.tif 000016
【図１５】
2018143441.tif 000017
【図１６】
2018143441.tif 000018
【図１７】
2018143441.tif 000019
【図１８】
2018143441.tif 000020
【図１９】
2018143441.tif 000021
【図２０】
2018143441.tif 000022
【国際調査報告】
2018143441.tif 000023
2018143441.tif 000024
2018143441.tif 000025