JP6807963B2 - 情報処理システム及び情報処理方法 - Google Patents

情報処理システム及び情報処理方法 Download PDF

Info

Publication number
JP6807963B2
JP6807963B2 JP2018566146A JP2018566146A JP6807963B2 JP 6807963 B2 JP6807963 B2 JP 6807963B2 JP 2018566146 A JP2018566146 A JP 2018566146A JP 2018566146 A JP2018566146 A JP 2018566146A JP 6807963 B2 JP6807963 B2 JP 6807963B2
Authority
JP
Japan
Prior art keywords
task
processing
query
accelerator
software
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.)
Active
Application number
JP2018566146A
Other languages
English (en)
Other versions
JPWO2018143441A1 (ja
Inventor
和志 仲川
和志 仲川
在塚 俊之
俊之 在塚
藤本 和久
和久 藤本
渡辺 聡
聡 渡辺
義文 藤川
義文 藤川
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2018143441A1 publication Critical patent/JPWO2018143441A1/ja
Application granted granted Critical
Publication of JP6807963B2 publication Critical patent/JP6807963B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

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

Description

本発明は情報処理システム及び情報処理方法に関し、例えばビッグデータを分析する分析システムに適用して好適なものである。
近年、ビッグデータの利用が拡大しつつある。ビッグデータを利用するに際しては、その分析が必要となるが、ビックデータの分析分野では、今後、HadoopやSparkといったスケールアウト型の分散データベースの適用が主流化するものと考えられる。また迅速な意思決定のため、ビッグデータを用いたインタラクティブで短TAT(Turn Around Time)のセルフサービス分析に対するニーズも高まっている。
なお特許文献1には、XLMデータを記憶するデータベースを各々有する複数の分散されたデータベースサーバに接続されたコーディネータサーバであって、各々のデータベースサーバの処理能力に基づいて各々クエリを生成する技術が開示されている。
特開2009−110052号公報
ところで、分散データベースシステムにおいて、大量のデータを高速処理するためには性能確保のために多数のノードが必要となるが、この結果としてシステム規模が増大し、導入コストやメンテナンスコストが増加する課題がある。
このような課題を解決するための方法の1つとして、分散データベースシステムのノードにアクセラレータを搭載し、ノード当たり性能を向上させることで、ノード数を減らしてシステム規模を抑制する方法が考えられる。実際上、研究レベルでは、OSS(Open-Source Software)データベースエンジンと同様の機能を有するアクセラレータが多数発表されており、このようなアクセラレータを利用することにより、ノードの性能を向上させ得るものと考えられる。
しかしながら、この種のアクセラレータは何らかのシステム改変を前提としており、これまで一般的なデータベースエンジンを改変することなく利用可能なアクセラレータは存在しなかった。
ところで、近年、OSSのApache系の分散データベースエンジン(SparkやImpalaなど)のユーザ定義関数(UDF)を拡張する動き(Apache Arrow)があり、データベースエンジンの改変のないOSS分散データベースアクセラレータを実現する環境が整いつつある。一方で、ユーザ定義関数を利用する場合、SQL(Structured Query Language)クエリを生成するアプリケーションの改変が必要となる課題が依然として残る。
本発明は以上の点を考慮してなされたもので、アプリケーションの改変を行うことなく、大容量データの高速処理のためのシステム規模の増大を抑止し、導入コストやメンテナンスコストの増大を抑制し得る情報処理技術を提案しようとするものである。
かかる課題を解決するため本発明の一形態においては、クライアントからの指示に応じて処理を実行する情報処理システムにおいて、前記クライアントからの指示に応じた処理を実行するアプリケーションが実装されたアプリケーションサーバと、複数のサーバによりデータを分散保持する分散データベースシステムと、を備え、前記分散データベースシステムは、割り振られるタスクを実行するためのソフトウェアを稼働させるプロセッサと、一部又は全部の種類の当該タスクを実行可能なハードウェアでなるアクセラレータとが実装された複数のサーバを有し、前記アプリケーションサーバは、前記クライアントからの指示に応じた処理を実行するための情報を前記分散データベースシステムから取得するためのクエリを生成して、前記分散データベースシステムに送信し、変換部は、前記アプリケーションサーバが生成するクエリから、前記アクセラレータが実行する第1のタスクと、前記ソフトウェアが実行する第2のタスクに分け、前記分散データベースシステムの複数のサーバは、前記クエリに含まれる前記アクセラレータにより実行すべき第1のタスクを前記アクセラレータに実行させ、前記クエリに含まれる前記ソフトウェアにより実行すべき第2のタスクを前記ソフトウェアに基づいて実行し、前記第1及び又は第2のタスクの実行結果を返信し、前記アプリケーションサーバは、前記第1及び第2のタスクの実行結果に基づき得られる前記クエリの処理結果を前記分散データベースシステムから受信し、前記変換部は、前記アプリケーションサーバが有しており、前記サーバのアクセラレータのスペック情報に基づいて、前記アプリケーションサーバが生成するクエリである第1のクエリから、前記アクセラレータが実行する第1のタスクと、前記ソフトウェアが実行する第2のタスクに分けた第2のクエリに変換し、前記分散データベースシステムのマスタノードサーバが、前記第2のクエリを受信してタスクに分解し、各タスクを前記複数のサーバに割り振るようにした。
また本発明の一形態においては、クライアントからの指示に応じて処理を実行する情報処理システムにおいて、前記クライアントからの指示に応じた処理を実行するアプリケーションが実装されたアプリケーションサーバと、複数のサーバによりデータを分散保持する分散データベースシステムと、を備え、前記分散データベースシステムは、割り振られるタスクを実行するためのソフトウェアを稼働させるプロセッサと、一部又は全部の種類の当該タスクを実行可能なハードウェアでなるアクセラレータとが実装された複数のサーバを有し、前記アプリケーションサーバは、前記クライアントからの指示に応じた処理を実行するための情報を前記分散データベースシステムから取得するためのクエリを生成して、前記分散データベースシステムに送信し、変換部は、前記アプリケーションサーバが生成するクエリから、前記アクセラレータが実行する第1のタスクと、前記ソフトウェアが実行する第2のタスクに分け、前記分散データベースシステムの複数のサーバは、前記クエリに含まれる前記アクセラレータにより実行すべき第1のタスクを前記アクセラレータに実行させ、前記クエリに含まれる前記ソフトウェアにより実行すべき第2のタスクを前記ソフトウェアに基づいて実行し、前記第1及び又は第2のタスクの実行結果を返信し、前記アプリケーションサーバは、前記第1及び第2のタスクの実行結果に基づき得られる前記クエリの処理結果を前記分散データベースシステムから受信し、前記第2のタスクは、前記ソフトウェアが複数の処理を、各処理の間にデータを主記憶に格納しながら行うタスクであり、前記第1のタスクは、前記アクセラレータがパイプライン並列処理を行うタスクを含み、前記クエリに基づいて、前記ソフトウェアが実行するのに適した第1のクエリプラン作成し、前記第1のクエリプランを前記アクセラレータが実行するのに適した第2のクエリプランに変換するようにした。
また本発明の一形態においては、クライアントからの指示に応じて処理を実行する情報処理方法であって、前記クライアントからの指示に応じた処理を実行するアプリケーションが実装されたアプリケーションサーバが、前記クライアントからの指示に応じた処理を実行するための情報を分散データベースシステムから取得するためのクエリを生成すると共に、生成した前記クエリを、前記アクセラレータが実行する第1のタスクと、前記ソフトウェアが実行する第2のタスクに変換して分散データベースシステムに送信する第1のステップと、前記分散データシステムの複数のサーバが、前記クエリに含まれるアクセラレータにより実行すべき第1のタスクを前記サーバが有するアクセラレータに実行させ、前記クエリに含まれるプロセッサ上で稼働するソフトウェアにより実行すべき第2のタスクを前記サーバが有するソフトウェアに基づいて実行し、前記第1及び又は第2のタスクの実行結果を返信する第2のステップと、前記アプリケーションサーバ、前記第1及び第2のタスクの実行結果に基づき得られる前記クエリの処理結果を前記分散データシステムから受信する第3のステップとを備え、前記第1のステップにおける前記変換は前記サーバのアクセラレータのスペック情報に基づいて行い、前記第2のタスクは、前記ソフトウェアが複数の処理を、各処理の間にデータを主記憶に格納しながら行うタスクであり、前記第1のタスクは、前記アクセラレータがパイプライン並列処理を行うタスクを含み、前記クエリに基づいて、前記ソフトウェアが実行するのに適した第1のクエリプランを作成し、前記第1のクエリプランを前記アクセラレータが実行するのに適した第2のクエリプランに変換するようにした。
第1及び第2の実施の形態による情報処理システムのハードウェア構成を示すブロック図である。 第1及び第2の実施の形態による情報処理システムの論理構成を示すブロック図である。 アクセラレータ情報テーブルの概略構成を示す概念図である。 SQLクエリ変換部によるSQLクエリの変換の説明に供する図である。 クエリ変換処理の処理手順を示すフローチャートである。 マスタノードサーバにより実行される処理の処理手順を示すフローチャートである。 ワーカノードサーバにより実行されるMap処理の処理手順を示すフローチャートである。 ワーカノードサーバにより実行されるReduce処理の処理手順を示すフローチャートである。 情報処理システムにおける分析処理時の処理の流れを示すシーケンス図である。 ワーカノードサーバにおけるMap処理時の処理の流れを示すシーケンス図である。 第2の実施の形態による情報処理システムにおいてワーカノードサーバにより実行されるMap処理の処理手順を示すフローチャートである。 第2の実施の形態による情報処理システムにおいてワーカノードサーバにより実行されるMap処理の流れを示すシーケンス図である。 他の実施の形態を示すブロック図である。 他の実施の形態を示すブロック図である。 第3の実施の形態による情報処理システムの論理構成を示すブロック図である。 標準クエリプラン及び変換後クエリプランの説明に供する概念図である。 情報処理システムにおける分析処理時の処理の流れを示すシーケンス図である。 フィルタ処理の説明に供する部分的なフローチャートである。 (1)及び(2)は、フィルタ処理の説明に供する図である。 スキャン処理の説明に供する部分的なフローチャートである。
以下図面について、本発明の一実施の形態を詳述する。
(1)第1の実施の形態
(1−1)本実施の形態による情報処理システムの構成
図1において、1は全体として本実施の形態による情報処理システムを示す。この情報処理システムは、ビッグデータの分析を行う分析システムである。
実際上、情報処理システム1は、1又は複数のクライアント2と、アプリケーションサーバ3と、分散データベースシステム4とを備えて構成される。そして各クライアント2は、LAN(Local Area Network)又はインターネットなどからなる第1のネットワーク5を介してアプリケーションサーバ3と接続されている。
また分散データベースシステム4は、マスタノードサーバ6及び複数のワーカノードサーバ7から構成されており、これらマスタノードサーバ6及びワーカノードサーバ7がLAN又はSAN(Storage Area Network)などからなる第2のネットワーク8を介してアプリケーションサーバ3とそれぞれ接続されている。
クライアント2は、ユーザが使用する汎用のコンピュータ装置である。クライアント2は、ユーザ操作又は当該クライアント2に実装されたアプリケーションからの要求に応じて、指定された分析条件を含むビッグデータの分析要求を第1のネットワーク5を介してアプリケーションサーバ3に送信する。またクライアント2は、アプリケーションサーバ3から第1のネットワーク5を介して送信されてきた分析結果を表示する。
アプリケーションサーバ3は、クライアント2から要求された分析処理を実行するのに必要なデータを取得するためのSQLクエリを生成して分散データベースシステム4のマスタノードサーバ6に送信したり、マスタノードサーバ6から送信されるそのSQLクエリの結果に基づいて分析処理を実行し、その分析結果をクライアント2に表示させる機能を有するサーバ装置である。
このアプリケーションサーバ3は、CPU(Central Processing Unit)10、メモリ11、ローカルドライブ12及び通信装置13を備えて構成される。
CPU10は、アプリケーションサーバ3全体の動作制御を司るプロセッサである。またメモリ11は、例えば、揮発性の半導体メモリから構成され、CPU10のワークメモリとして利用される。ローカルドライブ12は、例えばハードディスク装置やSSD(Solid State Drive)などの大容量の不揮発性記憶装置から構成され、各種プログラムやデータを長期間保持するために利用される。
通信装置13は、例えばNIC(Network Interface Card)から構成され、第1のネットワーク5を介したクライアント2との通信時や、第2のネットワーク8を介したマスタノードサーバ6又はワーカノードサーバ7との通信時におけるプロトコル制御を行う。
マスタノードサーバ6は、例えばHadoopにおけるマスタノードとして機能する汎用のサーバ装置(オープンシステム)である。実際上、マスタノードサーバ6は、アプリケーションサーバ3から第2のネットワーク8を介して送信されてきたSQLクエリを解析し、当該SQLクエリに基づく処理をMap処理やReduce処理などのタスクに分解する。またマスタノードサーバ6は、これらMap処理のタスク(以下、これをMap処理タスクと呼ぶ)やReduce処理のタスク(以下、これをReduce処理タスクと呼ぶ)の実行計画を立案し、立案した実行計画に従ってこれらMap処理タスク及びReduce処理タスクの実行要求を各ワーカノードサーバ7に送信する。またマスタノードサーバ6は、Reduce処理タスクを振り分けたワーカノードサーバ7から送信されてくるReduce処理タスクの処理結果をSQLクエリの処理結果としてアプリケーションサーバ3に送信する。
このマスタノードサーバ6は、アプリケーションサーバ3と同様にCPU20、メモリ21、ローカルドライブ22及び通信装置23を備えて構成される。これらCPU20、メモリ21、ローカルドライブ22及び通信装置23の機能及び構成は、アプリケーションサーバ3の対応部位(CPU10、メモリ11、ローカルドライブ12及び通信装置13)と同様であるため、これらの詳細説明は省略する。
ワーカノードサーバ7は、例えばHadoopにおけるワーカノードとして機能する汎用のサーバ装置(オープンシステム)である。実際上、ワーカノードサーバ7は、分散配置されたビッグデータの一部を後述するローカルドライブ32内に保持しており、マスタノードサーバ6から与えられたMap処理タスクやReduce処理タスクの実行要求(以下、これをタスク実行要求と呼ぶ)に従ってMap処理やReduce処理を実行し、その処理結果を他のワーカノードサーバ7やマスタノードサーバ6に送信する。
このワーカノードサーバ7は、CPU30、メモリ31、ローカルドライブ32及び通信装置33に加えて、アクセラレータ34及びDRAM(Dynamic Random Access Memory)35を備えて構成される。CPU30、メモリ31、ローカルドライブ32及び通信装置33の機能及び構成は、アプリケーションサーバ3の対応部位(CPU10、メモリ11、ローカルドライブ12及び通信装置13)と同様であるため、これらの詳細説明は省略する。なお本実施の形態の場合、マスタノードサーバ6及びワーカノードサーバ7間の通信や、ワーカノードサーバ7同士間の通信は、すべて第2のネットワーク8を介して行われる。
アクセラレータ34は、FPGA(Field Programmable Gate Array)から構成され、マスタノードサーバ6から与えられるタスク実行要求に含まれる所定形式のユーザ定義関数で定義されたMap処理タスクやReduce処理タスクを実行する。またDRAM35は、アクセラレータ34のワークメモリとして利用される。なお、以下においては、各ワーカノードサーバに搭載されるアクセラレータは、すべて同一の性能及び機能を有するものであるものとする。
図2は、かかる情報処理システム1の論理構成を示す。この図2に示すように、各クライアント2にはそれぞれWebブラウザ40が実装される。Webブラウザ40は、汎用のWebブラウザと同様の機能を有するプログラムであり、ユーザが上述の分析条件を設定するための分析条件設定画面や、分析結果を表示するための分析結果画面などを表示する。
またアプリケーションサーバ3には、分析BI(Business Intelligence)ツール41、JDBC/ODBC(Java(登録商標) Database Connectivity /Open Database Connectivity)ドライバ42及びクエリ変換部43が実装される。これら分析BIツール41、JDBC/ODBCドライバ42及びクエリ変換部43は、それぞれアプリケーションサーバ3のCPU10(図1)がメモリ11(図1)に格納された図示しないプログラムを実行することにより具現化される機能部である。
分析BIツール41は、ユーザがクライアント2に表示された分析条件設定画面上で設定した分析条件に従った分析処理に必要なデータベースデータを分散データベースシステム4から取得するためのSQLクエリを生成する機能を有するアプリケーションである。分析BIツール41は、取得したデータベースデータに基づいて、かかる分析条件に従った分析処理を実行し、処理結果を含む上述の分析結果画面をクライアントに表示させる。
またJDBC/ODBCドライバ42は、分析BIツール41が分散データベースシステム4にアクセスするためのインタフェース(API:Application Interface)として機能する。
クエリ変換部43は、JDBC/ODBCドライバ42のクラスを継承し、クエリ変換機能を付加した子クラスとして実装される。クエリ変換部43は、ローカルドライブ12に格納されたアクセラレータ情報テーブル44を参照して、分析BIツール41が生成したSQLクエリを、ワーカノードサーバ7のアクセラレータ34(図1)が実行すべきタスクと、それ以外のタスクとに明示的に分けたSQLクエリに変換する機能を有する。
実際上、本実施の形態の場合、アプリケーションサーバ3のローカルドライブ12には、分散データベースシステム4のワーカノードサーバ7に搭載されたアクセラレータ34のハードスペック情報が予めシステム管理者等により格納されたアクセラレータ情報テーブル44が格納されている。
このアクセラレータ情報テーブル44は、図3に示すように、項目欄44A、アクセラレーション可否欄44B及び条件欄44Cを備えて構成される。そして項目欄44Aには、アクセラレータ34がサポートするすべての機能がそれぞれ格納され、条件欄44Cには、対応する機能に対する条件が格納される。またアクセラレーション可否欄44Bは、条件/処理欄44BA及び可否欄44BBに区分され、条件/処理欄44BAには、対応する機能における条件や対応する機能における具体的な処理内容が格納され、可否欄44BBには、対応する条件や処理内容をサポートしているか否かを表す情報(サポートしている場合には「可」、サポートしていない場合には「否」)が格納される。
そしてクエリ変換部43は、このアクセラレータ情報テーブル44を参照して、分析BIツール41が生成したSQLクエリをMap処理タスク及びReduce処理タスクに分解し、これらMap処理タスク及びReduce処理タスクのうち、アクセラレータ34が実行可能なMap処理タスクやReduce処理タスクについては上述のユーザ定義関数により定義(記述)し、それ以外のタスクについては分散データベースシステム4のワーカノードサーバ7に実装されたソフトウェアが認識可能な形式(つまりSQL)で定義(記述)したSQLクエリを生成する(つまり分析BIツール41が生成したSQLタスクをそのようなSQLに変換する)。
例えば、分析BIツール41が生成したSQLクエリが図4(A−1)に示すようなMap処理(フィルタ処理)タスクだけを含み、アクセラレータ情報テーブル44に格納されたアクセラレータ34のハードスペック情報によればそのMap処理タスクをアクセラレータ34が実行可能である場合、クエリ変換部43は、そのSQLクエリを、そのMap処理タスクを上述のユーザ定義関数で定義した図4(A−2)に示すようなSQLクエリに変換する。
なお図4(A−1)は、『「table1」から価格(「price」)が「1000」よりも大きいレコードの「id」及び「価格(「price」)」を抽出』するMap処理の実行を要求するSQLクエリの記述例であり、図4(A−2)における「UDF(“SELECT id,price FROM table1 WHERE price>1000”)」の部分がかかるユーザ定義関数により定義されたMap処理タスクを表す。
また、分析BIツール41が生成したSQLクエリが図4(B−1)に示すようなMap処理タスク及びReduce処理タスクを含み、アクセラレータ情報テーブル44に格納されたアクセラレータ34のハードスペック情報によればそのMap処理タスク及びReduce処理タスクのうちのMap処理(フィルタ処理及び集約処理)タスクをアクセラレータ34が実行可能な場合、クエリ変換部43は、そのSQLクエリを、そのMap処理タスクを上述のユーザ定義関数で定義し、他のタスクをSQLで定義した図4(B−2)に示すようなSQLクエリに変換する。
なお図4(B−1)は、『「table1」から価格(「price」)が「1000」よりも大きいレコードのみを抽出して「id」でグルーピングし、グルーピングした「id」の数をカウント』する一連の処理の実行を要求するSQLクエリの記述例であり、図4(B−2)における「UDF(“SELECT id,COUNT(*) FROM table1 WHERE price>1000 GROUP BY id”」の部分がかかるユーザ定義関数により定義されたMap処理(フィルタ処理及び集約処理)タスクを表し、「SUM(tmp.cnt)」及び「GROUP BY tmp.id」の部分がソフトウェア処理により実行すべきReduce処理タスクを表す。
一方、分散データベースシステム4のマスタノードサーバ6には、図2に示すように、Thriftサーバ部45、クエリパーサ部46、クエリプランナ部47、リソース管理部48及びタスク管理部49が実装される。これらThriftサーバ部45、クエリパーサ部46、クエリプランナ部47、リソース管理部48及びタスク管理部49は、マスタノードサーバ6のCPU20(図1)がメモリ21(図1)に格納された対応するプログラム(図示せず)をそれぞれ実行することにより具現化される機能部である。
Thriftサーバ部45は、アプリケーションサーバ3から送信されてくるSQLクエリを受信したり、当該SQLクエリの実行結果をアプリケーションサーバ3に送信する機能を有する。またクエリパーサ部46は、Thriftサーバ部45が受信したアプリケーションサーバ3からのSQLクエリを解析し、クエリプランナ部47で扱えるデータ構造の集合体に変換する機能を有する。
クエリプランナ部47は、クエリパーサ部46の解析結果に基づいてSQLクエリにより指定された処理の内容を個々のMap処理タスク及びReduce処理タスクに分解し、これらMap処理タスク及びReduce処理タスクの実行計画を立案する機能を有する。
またリソース管理部48は、各ワーカノードサーバ7のハードウェアリソースのスペック情報と、各ワーカノードサーバ7から収集したハードウェアリソースの現在の使用状況に関する情報などを管理し、クエリプランナ部47により立案された実行計画に従って上述のMap処理タスクやReduce処理タスクを実行させるワーカノードサーバ7をタスクごとにそれぞれ決定する機能を有する。
タスク管理部49は、リソース管理部48の決定結果に基づいて、かかるMap処理タスクやReduce処理タスクの実行を要求するタスク実行要求を対応するワーカノードサーバ7にそれぞれ送信する機能を有する。
他方、分散データベースシステム4の各ワーカノードサーバ7には、スキャン処理部50、集約処理部51、結合処理部52、フィルタ処理部53、処理切替え部54及びアクセラレータ制御部55が実装される。これらスキャン処理部50、集約処理部51、結合処理部52、フィルタ処理部53、処理切替え部54及びアクセラレータ制御部55は、それぞれワーカノードサーバ7のCPU30(図1)がメモリ31(図1)に格納された対応するプログラム(図示せず)を実行することにより具現化される機能部である。
スキャン処理部50は、マスタノードサーバ6から与えられたタスク実行要求に従って、必要なデータベースデータ58をローカルドライブ32から読み出してメモリ31(図1)にロードする機能を有する。また集約処理部51、結合処理部52及びフィルタ処理部53は、それぞれマスタノードサーバ6から与えられたタスク実行要求に従って、メモリ31に読み出されたデータベースデータ58に対する集約処理(SUM、MAX又はCOUNTなど)、結合処理(INNER JOIN又はOUTER JOINなど)、又は、フィルタリング処理を実行する機能を有する。
処理切替え部54は、マスタノードサーバ6から与えられたタスク実行要求に含まれるMap処理タスクやReduce処理タスクを、集約処理部51、結合処理部52及び又はフィルタ処理部53を用いたソフトウェア処理により実行すべきか、又は、アクセラレータ34を利用したハードウェア処理により実行すべきかを判定する機能を有する。なおタスク実行要求に複数のタスクが含まれている場合、処理切替え部54は、タスクごとにソフトウェア処理により実行すべきか、又は、ハードウェア処理により実行すべきかを判定する。
実際上、処理切替え部54は、タスク実行要求においてタスクがSQLで記述されている場合には、そのタスクをソフトウェア処理により実行すべきと判定し、集約処理部51、結合処理部52及びフィルタ処理部53のうちの必要な処理部にそのタスクを実行させる。また処理切替え部54は、タスク実行要求においてタスクが上述のユーザ定義関数で記述されている場合には、そのタスクをハードウェア処理により実行すべきと判定して、アクセラレータ制御部55を呼び出し、当該ユーザ定義関数をアクセラレータ制御部55に与える。
アクセラレータ制御部55は、アクセラレータ34を制御する機能を有する。アクセラレータ制御部55は、処理切替え部54から呼び出されると、そのとき処理切替え部54から与えられたユーザ定義関数に基づいて、当該ユーザ定義関数により定義されたタスク(Map処理タスク又はReduce処理タスク)をアクセラレータ34に実行させるために必要な1又は複数のコマンド(以下、これをアクセラレータコマンドと呼ぶ)を生成する。そしてアクセラレータ制御部55は、生成したアクセラレータコマンドをアクセラレータに順次出力するようにしてアクセラレータ34にタスクを実行させる。
アクセラレータ34は、Map処理タスクやReduce処理タスクを実行するための各種機能を備える。図2は、アクセラレータ34がフィルタ処理機能及び集約処理機能を備える場合の一例であり、それぞれ集約処理部51及びフィルタ処理部53と同様の機能を有する集約処理部56及びフィルタ処理部57をアクセラレータ34が備えている場合を示している。アクセラレータ34は、アクセラレータ制御部55から与えられるアクセラレータコマンドに従って必要な集約処理やフィルタ処理を集約処理部56やフィルタ処理部57により実行し、その処理結果をアクセラレータ制御部55に出力する。
かくしてアクセラレータ制御部55は、アクセラレータ34から出力された各アクセラレータコマンドの処理結果をまとめるまとめ処理を実行する。ワーカノードサーバ7は、アクセラレータ34により実行したタスクがMap処理タスクであった場合にはその処理結果をReduce処理が割り振られた他のワーカノードサーバ7に送信し、アクセラレータ34により実行したタスクがReduce処理タスクであった場合にはその処理結果をマスタノードサーバ6に送信する。
(1−2)各種処理の内容
次に、本情報処理システム1において実行される各種処理の処理内容について説明する。
(1−2−1)クエリ変換処理
図5は、アプリケーションサーバ3の分析BIツール41(図2)からクエリ変換部43(図2)にSQLクエリが与えられたときに当該クエリ変換部43により実行されるクエリ変換処理の処理手順を示す。
クエリ変換部43は、分析BIツール41からSQLクエリが与えられるとこのクエリ変換処理を開始し、まず、与えられたSQLクエリを解析し、SQLクエリの内容をクエリ変換部43が扱えるデータ構造の集合体に変換する(S1)。
続いてクエリ変換部43は、かかる解析結果に基づいてSQLクエリにより指定された処理の内容を個々のMap処理タスクやReduce処理タスクに分解すると共に、これらMap処理タスクやReduce処理タスクの実行計画を作成する(S2)。またクエリ変換部43は、アクセラレータ情報テーブル44(図3)を参照し(S3)、かかるMap処理タスクやReduce処理タスクの中に、ワーカノードサーバ7のアクセラレータ34により実行可能なタスクが存在するか否かを判定する(S4)。
そしてクエリ変換部43は、この判定で否定結果を得ると、分析BIツール41から与えられたSQLクエリをそのまま分散データベースシステム4のマスタノードサーバ6に送信し(S5)、この後、このクエリ変換処理を終了する。
これに対して、クエリ変換部43は、ステップS4の判定で肯定結果を得ると、かかるSQLクエリを、ワーカノードサーバ7のアクセラレータ34により実行可能なタスク(Map処理タスク又はReduce処理タスク)を上述のユーザ定義関数で定義し(S6)、さらにこれ以外のタスクをSQLで定義したSQLクエリに変換する(S7)。
そしてクエリ変換部43は、変換後のSQLクエリを分散データベースシステム4のマスタノードサーバ6に送信し(S8)、この後、このクエリ変換処理を終了する。
(1−2−2)マスタノードサーバの処理
一方、図6は、アプリケーションサーバ3からSQLクエリが送信されてきたマスタノードサーバ6において実行される一連の処理の流れを示す。
マスタノードサーバ6では、アプリケーションサーバ3からSQLクエリが送信されてくると、この図6に示す処理が開始され、まず、そのSQLクエリをThriftサーバ部45(図2)が受信し(S10)、この後、クエリパーサ部46(図2)がこのSQLクエリを解析する(S11)。
そして、この解析結果に基づいて、クエリプランナ部47(図2)が、当該SQLクエリにおいて指定された処理の内容をMap処理タスクやReduce処理タスクに分解すると共に、これらMap処理タスクやReduce処理タスクの実行計画を立案する(S12)。
この後、リソース管理部48(図2)が、クエリプランナ部47により立案された実行計画に従って、これらMap処理タスクやReduce処理タスクの振分け先のワーカノードサーバ7をタスクごとにそれぞれ決定する(S13)。
次いで、タスク管理部49(図2)が、リソース管理部48の決定に従って、対応するワーカノードサーバ7に対して、そのワーカノードサーバ7に振り分けられたMap処理タスク又はReduce処理タスクを実行すべき旨のタスク実行要求を送信する(S14)。以上によりマスタノードサーバ6の処理が終了する。
(1−2−3)ワーカノードサーバの処理
(1−2−3−1)Map処理
図7は、Map処理を実行すべき旨のタスク実行要求が与えられたワーカノードサーバ7において実行される一連の処理の流れを示す。
マスタノードサーバ6からMap処理タスクのタスク実行要求がワーカノードサーバ7に与えられると、そのワーカノードサーバ7においてこの図7に示す処理が開始され、まず、スキャン処理部50(図2)がローカルドライブ32(図1)から必要なデータベースデータ58(図2)をメモリ31(図1)に読み出す(S20)。この際、スキャン処理部50は、そのデータベースデータ58が圧縮されている場合には伸長するなど、そのデータベースデータ58に対する必要なデータ処理を施す。
続いて、処理切替え部54(図2)が、マスタノードサーバ6から与えられたタスク実行要求にユーザ定義関数が含まれているか否かを判定する(S21)。
処理切替え部54は、この判定で否定結果を得ると集約処理部51(図2)、結合処理部52(図2)及びフィルタ処理部53(図2)のうちの必要な処理部を起動してタスク実行要求に含まれる1又は複数のMap処理タスクを順次実行させる(S22)。また、かかるMap処理タスクを実行した処理部は、処理結果をReduce処理タスクが割り振られたワーカノードサーバ7に送信する(S25)。以上により、そのワーカノードサーバ7における処理が終了する。
これに対して、処理切替え部54は、ステップS21の判断で肯定結果を得ると、ユーザ定義関数で定義されていないMap処理タスクやReduce処理タスクについては集約処理部51、結合処理部52及び又はフィルタ処理部53に実行させる一方、これと並行してアクセラレータ制御部55(図2)を呼び出す。
そして処理切替え部54により呼び出されたアクセラレータ制御部55は、タスク実行要求に含まれるユーザ定義関数に基づいて必要な1又は複数のアクセラレータコマンドを生成し、生成したアクセラレータコマンドをアクセラレータ34に順次与えることにより、そのユーザ定義関数により定義されたMap処理タスクをアクセラレータ34に実行させる(S23)。
またアクセラレータ制御部55は、アクセラレータ34による上述のMap処理タスクが完了すると、その処理結果をまとめるまとめ処理を実行し(S24)、この後、かかるまとめ処理の処理結果や、ソフトウェア処理したMap処理タスクの処理結果をReduce処理が割り振られたワーカノードサーバ7に送信する(S25)。以上により、そのワーカノードサーバ7における処理が終了する。
(1−2−3−2)Reduce処理
一方、図8は、Reduce処理タスクを実行すべき旨のタスク実行要求が与えられたワーカノードサーバ7において実行される一連の処理の流れを示す。
マスタノードサーバ6からReduce処理タスクのタスク実行要求がワーカノードサーバ7に与えられると、そのワーカノードサーバ7においてこの図8に示す処理が開始され、まず、処理切替え部54が、そのReduce処理を実行するのに必要なMap処理タスクの処理結果が他のワーカノードサーバ7から送信されてくるのを待ち受ける(S30)。
そして処理切替え部54は、必要なMap処理タスクの処理結果をすべて受領すると、マスタノードサーバ6から与えられたタスク実行要求にユーザ定義関数が含まれているか否かを判定する(S31)。
処理切替え部54は、この判定で否定結果を得ると集約処理部51、結合処理部52及びフィルタ処理部53のうちの必要な処理部を起動してReduce処理タスクを実行させる(S32)。また、かかるReduce処理タスクを実行した処理部は、処理結果をマスタノードサーバ6に送信する(S35)。以上により、そのワーカノードサーバ7における処理が終了する。
これに対して、処理切替え部54は、ステップS31の判断で肯定結果を得ると、アクセラレータ制御部55を呼び出す。そして処理切替え部54により呼び出されたアクセラレータ制御部55は、タスク実行要求に含まれるユーザ定義関数に基づいて必要な1又は複数のアクセラレータコマンドを生成し、生成したアクセラレータコマンドをアクセラレータ34に順次与えることにより、そのユーザ定義関数により定義されたReduce処理タスクをアクセラレータ34に実行させる(S33)。
またアクセラレータ制御部55は、アクセラレータ34による上述のReduce処理タスクが完了すると、その処理結果をまとめるまとめ処理を実行し(S34)、この後、かかるまとめ処理の処理結果をマスタノードサーバ6に送信する(S35)。以上により、そのワーカノードサーバ7における処理が終了する。
(1−3)情報処理システムにおける分析処理の流れ
図9は、以上のような本情報処理システム1における分析処理の流れの一例を示す。かかる分析処理はクライアント2から分析条件を指定した分析指示がアプリケーションサーバ3に与えられることにより開始される(S40)。
アプリケーションサーバ3では、かかる分析指示が与えられると、分析指示に基づくSQLクエリを生成すると共に、生成したSQLクエリを、ワーカノードサーバ7のアクセラレータ34により実行可能なタスクを上述のユーザ定義関数により定義し、他のタスクをSQLにより定義したSQLクエリに変換する(S41)。そしてアプリケーションサーバ3は、変換後のSQLクエリをマスタノードサーバ6に送信する(S42)。
マスタノードサーバ6は、アプリケーションサーバ3からSQLクエリが与えられると、クエリ実行計画を立案して、そのSQLクエリをMap処理タスクと、Reduce処理タスクとに分解する。またマスタノードサーバ6は、分解したこれらMap処理タスクやReduce処理タスクの振分け先のワーカノードサーバ7を決定する(S43)。
そしてマスタノードサーバ6は、かかる決定結果に基づいて、これらのMap処理タスクやReduce処理タスクのタスク実行要求を、対応するワーカノードサーバ7にそれぞれ送信する(S44〜S46)。
Map処理タスクのタスク実行要求が与えられたワーカノードサーバ7は、必要に応じて他のワーカノードサーバ7とデータベースデータ58(図2)をやり取りしながら、そのタスク実行要求において指定されたMap処理タスクを実行する(S46,S47)。そして、かかるワーカノードサーバ7は、そのMap処理タスクが完了すると、Resuce処理タスクが割り振られたワーカノードサーバ7にそのMap処理タスクの処理結果を送信する(S48,S49)。
またReduce処理タスクのタスク実行要求が与えられたワーカノードサーバ7は、関連するMap処理タスクが割り振られたすべてのワーカノードサーバ7からそのMap処理タスクの処理結果が与えられるとそのタスク実行要求において指定されたReduce処理タスクを実行する(S50)。そして、かかるワーカノードサーバ7は、そのReduce処理タスクが完了すると、その処理結果をマスタノードサーバ6に送信する(S51)。
なお、このときマスタノードサーバ6が受信するReduce処理タスクの処理結果が、そのときマスタノードサーバ6がアプリケーションサーバ3から与えられたSQLクエリの処理結果である。かくしてマスタノードサーバ6は、受信したReduce処理タスクの処理結果をアプリケーションサーバ3に送信する(S52)。
アプリケーションサーバ3は、マスタノードサーバ6からSQLクエリの処理結果が与えられると、その処理結果に基づいて分析処理を実行し、分析結果をクライアント2に表示させる(S53)。
一方、図10は、マスタノードサーバ6からMap処理タスクのタスク実行要求が与えられたワーカノードサーバ7において実行されるMap処理タスクの処理の流れの一例を示す。この図10は、かかるMap処理タスクをアクセラレータ34において実行する場合の例である。
なお上述したスキャン処理部50、集約処理部51、結合処理部52、フィルタ処理部53、処理切替え部54及びアクセラレータ制御部55が実行する各種処理は、結局のところCPU30により実行されるため、この図10では、CPU30の処理としている。
通信装置33は、マスタノードサーバ6から送信されてきたMap処理タスクのタスク実行要求を受信すると、これをメモリ31に格納する(S60)。そして、このタスク実行要求は、この後、CPU30によりメモリ31から読み出される(S61)。
CPU30は、メモリ31からタスク実行要求を読み出すと、他のワーカノードサーバ7やローカルドライブ32に対して必要なデータベースデータ58(図2)の転送を指示する(S62)。またCPU30は、この結果として他のワーカノードサーバ7やローカルドライブ32から送信されてきたデータベースデータ58をメモリに格納する(S63,S64)。そしてCPU30は、この後、かかるタスク実行要求に応じたMap処理タスクの実行をアクセラレータ34に指示する(S65)。
アクセラレータ34は、CPU30からの指示に応じてMap処理タスクを開始し、必要なデータベースデータ58を適宜メモリ31から読み出しながら、必要なフィルタ処理及び又は集約処理を実行する(S66)。そしてアクセラレータ34は、かかるMap処理タスクの処理結果を適宜メモリ31に格納する(S67)。
メモリ31に格納されたかかるMap処理タスクの処理結果は、この後、CPU30により読み出される(S68)。そしてCPU30は、読み出した処理結果をまとめる結果まとめ処理を実行し(S69)、その処理結果をメモリ31に格納する(S70)。またCPU30は、この後、かかる結果まとめ処理の処理結果をReduce処理が割り振られたワーカノードサーバ7に送信するよう通信装置33に指示を与える(S71)。
かくして、かかる指示が与えられた通信装置33は、結果まとめ処理の処理結果をメモリ31から読み出し(S72)、これをReduce処理が割り振られたワーカノードサーバ7に送信する(S73)。
(1−4)本実施の形態の効果
以上のように本実施の形態の情報処理システム1では、アプリケーションサーバ3において、アプリケーションである分析BIツール41が生成したSQLクエリを、分散データベースシステム4のワーカノードサーバ7のアクセラレータ34により実行可能なタスクをユーザ定義関数で定義し、それ以外のタスクをSQLで定義したSQLクエリに変換し、マスタノードサーバ6において、このSQLクエリの処理をタスクごとに分解してこれらのタスクを各ワーカノードサーバ7に割り振り、各ワーカノードサーバ7において、ユーザ定義関数で定義されたタスクをアクセラレータ34において実行し、SQLで定義されたタスクをソフトウェア処理する。
従って、本情報処理システム1によれば、例えば、分析BIツール41の改変を必要とすることなく、一部のタスクをアクセラレータ34に実行させて、ワーカノードサーバ7の1台当りの性能を向上させることができる。また本情報処理システム1では、この際、分析BIツール41の改変を必要としない。よって本情報処理システム1によれば、アプリケーションの改変を必要とせずに、大容量データの高速処理のためのシステム規模の増大を抑止し、導入コストやメンテナンスコストの増大を抑制することができる。
(2)第2の実施の形態
図1及び図2において、60は全体として第2の実施の形態による情報処理システムを示す。この情報処理システム60は、分散データベースシステム61のワーカノードサーバ62のアクセラレータ63が、マスタノードサーバ6から割り振られたMap処理タスクを実行する際、必要なデータベースデータ58(図2)を他のワーカノードサーバ7やローカルドライブ32から取得する場合に、メモリ31を介することなく直接他のワーカノードサーバ7やローカルドライブ32からそのデータベースデータ58を取得する点を除いて第1の実施の形態による情報処理システム1と同様に構成されている。
実際上、第1の実施の形態による情報処理システム1では、図10について上述したように、他のワーカノードサーバ7やローカルドライブ32からアクセラレータ34へのデータベースデータ58の転送は、メモリ31を介して行われていた。これに対して本実施の形態の情報処理システム60では、後述する図12に示すように、他のワーカノードサーバ7やローカルドライブ32からアクセラレータ34へのデータベースデータ58の転送をメモリ31を介すことなく直接行う点が第1の実施の形態による情報処理システム1と相違する。
図11は、本実施の形態による情報処理システム60において、分散データベースシステム61のマスタノードサーバ6から例えばMap処理タスクのタスク実行要求が与えられたワーカノードサーバ62において実行される一連の処理の流れを示す。
マスタノードサーバ6からMap処理のタスク実行要求がワーカノードサーバ62に与えられると、そのワーカノードサーバ62においてこの図11に示す処理が開始され、まず、図2について上述した処理切替え部54が、そのタスク実行要求に上述のユーザ定義関数が含まれているか否かを判定する(S80)。
そして処理切替え部54は、この判定で否定結果を得ると集約処理部51、結合処理部52及びフィルタ処理部53のうちの必要な処理部を起動してMap処理のタスクを実行させる(S81)。また、かかるMap処理タスクを実行した処理部は、処理結果をReduce処理タスクが割り振られたワーカノードサーバ62に送信する(S85)。以上により、そのワーカノードサーバ62における処理が終了する。
これに対して、処理切替え部54は、ステップS80の判断で肯定結果を得ると、ユーザ定義関数で定義されていないMap処理タスクやReduce処理タスクについては集約処理部51、結合処理部52及び又はフィルタ処理部53に実行させる一方、これと並行してアクセラレータ制御部55を呼び出す。
そして処理切替え部50により呼び出されたアクセラレータ制御部55は、タスク実行要求に含まれるユーザ定義関数をアクセラレータ用のコマンドに変換してアクセラレータ63(図1及び図2)に与えることにより、そのMap処理タスクの実行をアクセラレータ63に指示する(S82)。
そしてアクセラレータ63は、かかる指示が与えられると、必要なデータベースデータを直接転送するようローカルドライブ32や他のワーカノードサーバ62に指示を与える(S83)。かくして、アクセラレータ63は、ローカルドライブ32や他のワーカノードサーバ62から直接転送されるデータベースデータを利用してかかるタスク実行要求において指定されたMap処理タスクを実行する。
次いで、アクセラレータ制御部55は、アクセラレータ63によるMap処理が完了すると、その処理結果をまとめる結果まとめ処理を実行し(S84)、この後、かかる結果まとめ処理の処理結果や、ソフトウェア処理したMap処理タスクの処理結果をReduce処理が割り振られたワーカノードサーバ62に送信する(S85)。以上により、そのワーカノードサーバ62における処理が終了する。
図12は、本実施の形態の情報処理システム60において、マスタノードサーバ6からMap処理タスクのタスク実行要求が与えられたワーカノードサーバ62におけるMap処理タスクの流れの一例を示す。この図12は、かかるMap処理タスクをアクセラレータ63において実行する場合の例である。
なお、図10の場合と同様に、この図12においても図2のスキャン処理部50、集約処理部51、結合処理部52、フィルタ処理部53、処理切替え部54及びアクセラレータ制御部55が実行する各種処理をCPU30の処理として記載している。
通信装置33は、マスタノードサーバ6から送信されてきたMap処理タスクのタスク実行要求を受信すると、これをメモリ31に格納する(S90)。そして、このタスク実行要求は、この後、CPU30によりメモリ31から読み出される(S91)。
CPU30は、メモリ31からタスク実行要求を読み出すと、そのタスク実行要求に従ったMap処理タスクを実行するようアクセラレータ63に指示を与える(S92)。そして、この指示を受けたアクセラレータ63は、ローカルドライブ32(や他のワーカノードサーバ62)に対して必要なデータベースデータの転送を要求する。この結果、ローカルドライブ32(や他のワーカノードサーバ62)から必要なデータベースデータがアクセラレータ63に直接与えられる(S93)。
そしてアクセラレータ63は、ローカルドライブ32(や他のワーカノードサーバ62)から転送されてきたデータベースデータをDRAM35(図1)に格納し、必要なデータベースデータを適宜DRAM35から読み出しながら、必要なフィルタ処理及び又は集約処理などのMap処理を実行する(S94)。そしてアクセラレータ63は、かかるMap処理タスクの処理結果を適宜メモリ31に格納する(S95)。
この後ステップS96〜ステップS99において、図10のステップS68〜ステップS71と同様の処理が実行され、この後、CPU30により実行されたまとめ処理の処理結果が通信装置33によりメモリ31から読み出されて(S100)、Reduce処理が割り振られたワーカノードサーバ62に送信される(S101)。
以上のように本実施の形態による情報処理システム60によれば、アクセラレータ63がメモリ31を介さずローカルドライブ32から直接データベースデータ58を取得するため、ローカルドライブ32からメモリ31へのデータベースデータの転送、及びメモリ31からアクセラレータ63へのデータベースデータの転送が不要となり、CPU30の必要データ転送帯域を少なくして、かつ低遅延なデータ転送を行うことができ、結果としてワーカノードサーバ62の性能を向上させることができる。
(3)他の実施の形態
なお上述の第1及び第2の実施の形態においては、アプリケーションサーバ3が保持するアクセラレータ情報テーブル44(図2)に格納されたアクセラレータ34,63のハードスペック情報が予めシステム管理者等により格納されている場合について述べたが、本発明はこれに限らず、例えば図2との対応部分に同一符号を付した図13に示すように、各ワーカノードサーバ7,62からそのワーカノードサーバ7,62に搭載されたアクセラレータ34,63のハードスペック情報を収集するアクセラレータ情報取得部72を情報処理システム70のアプリケーションサーバ71に設け、当該アクセラレータ情報取得部72が、定期的又は非定期に収集した各ワーカノードサーバ7,62のアクセラレータ34,63のハードスペック情報をアクセラレータ情報テーブル44に格納し、又は、収集した各アクセラレータ34のハードスペック情報に基づいてアクセラレータ情報テーブル44を更新するようにしても良い。このようにすることにより、アクセラレータ34,63が交換された場合や、ワーカノードサーバ7,62が増設された場合においても、アプリケーションサーバ71が常に最新のアクセラレータ情報(アクセラレータ34,63のハードウェアスペック情報)に基づいてSQLクエリの変換処理を行うことが可能となる。
なお、このアクセラレータ情報取得部72は、アプリケーションサーバ3のCPU10がメモリ11に格納されたプログラムを実行することにより具現化されるソフトウェア構成と、また専用のハードウェアから構成されるハードウェア構成とのいずれの構成であってもよい。
また上述の第1及び第2の実施の形態においては、各ワーカノードサーバ7,62間の通信を第2のネットワーク8を介して行うようにした場合について述べたが、本発明はこれに限らず、例えば図1との対応部分に同一符号を付した図14に示すように、ワーカノードサーバ7,62のアクセラレータ34、63間を高速シリアル通信用のケーブル81を介してデイジーチェーン接続したり、すべてのワーカノードサーバ7,62のアクセラレータ34,63間をそれぞれ高速シリアル通信用のケーブル81を介して相互に接続し、これらケーブル81を介してワーカノードサーバ7,62間でデータベースデータ等の必要なデータをやり取りするように情報処理システム80を構築するようにしても良い。
さらに上述の第1及び第2の実施の形態においては、アプリケーションサーバ3に実装するアプリケーション(プログラム)が分析BIツール41である場合について述べたが、本発明はこれに限らず、かかるアプリケーションが分析BIツール41以外のものであっても本発明を広く適用することができる。
(4)第3の実施の形態
図1及び図15において、90は全体として第3の実施の形態による情報処理システムを示す。第1の実施の形態による情報処理システム1では、図2に示すクエリ変換部43がアクセラレータにより実行可能な第1のタスクと、ソフトウェアにより実行すべき第2のタスクとに明示的に分けたクエリに変換するものであった。これに対して、本実施の形態の情報処理システム90では、分析BIツール41(図15)が出力するクエリを変換せずにJDBC/ODBCドライバ42(図15)を介してワーカノードサーバ92に送信し、次に当該ワーカノードサーバ92におけるクエリプランナ部93がアクセラレータ処理に適したクエリプランを変換生成し、当該クエリプランを各ワーカノードにおける実行エンジンで実行する点が第1の実施の形態による情報処理システムと相違する。
図15は、第3の実施の形態における情報処理システム90の論理構成を示す。既に説明した構成と同一の機能を有する部分については、同一の符号を付し、説明を省略する。
ワーカノードサーバ92は、図1及び図2におけるマスタノードサーバ6及びワーカノードサーバ7(62)を合わせた機能を有する。ハードウェア構成としては、図1のワーカノードサーバ7と同様である。
アプリケーションサーバ91から受信したクエリは、まずクエリパーサ部46が解析する。クエリプランナ部93は、クエリパーサ部46が解析したクエリを、アクセラレータ最適化ルール部95と連携してアクセラレータ処理に適したクエリプランを生成する。
アクセラレータ最適化ルール部95は、ローカルドライブ32内のアクセラレータ情報テーブル44(図3)を用い、アクセラレータの制約条件を考慮して、アクセラレータ処理に最適化したクエリプラン生成ルールを適用する。
ファイルパス解決部96は、データベースファイルの分散ファイルシステム100上の格納位置情報(分散ファイルシステムパス)を、ローカルファイルシステム101上の格納位置情報(ローカルファイルシステムパス)への変換情報を検索して保持し、ファイルパスの問い合わせに対して応答する。
実行エンジン部94は、結合処理部52、集約処理部51、フィルタ処理部53、スキャン処理部50及びエクスチェンジ処理部102から構成され、アクセラレータ制御部97及びアクセラレータ98と連携しながらクエリプランを実行する(いわゆるソフトウェア処理)。
分散ファイルシステム100は、複数のサーバ群をネットワークで連結して一つのファイルシステムとして構成するものである。分散ファイルシステムの一例としては、HDFS(Hadoop Distributed File System)がある。
ファイルシステム101は、オペレーティングシステム(OS)が持つ機能の一つであり、ドライブ上に格納されるファイルの論理的な位置情報(LBA(Logical Block Address)とサイズ)等を管理し、アプリケーション等からのファイル名による読出し要求に対して、ファイルの位置情報から、ドライブ上のデータを読み出す機能を提供する。
図16は、第3の実施の形態におけるクエリプランの実行方法と、クエリプランの変換方法とを説明する図である。
標準クエリプラン110は、クエリプランナ部93が入力クエリから最初に生成するクエリプランである。後述の通り変換後クエリプラン124に変換されることもあれば、変換なしで実行エンジン部94で実行されることもある。標準クエリプラン110では、図中下部の処理から、scan処理S122、filter処理S119、aggregate処理S116、exchange処理S113、aggregate処理S111の順で実行されることを示している。
scan処理S122はスキャン処理部50が行い、分散ファイルシステム100からのデータベースデータの読み出し(S123)と、当該データベースデータを実行エンジン部向けインメモリフォーマットへの変換を実行して主記憶(メモリ31(図1))へ格納(S121)する。
filter処理S119はフィルタ処理部53が行い、scan処理結果のデータを主記憶より読み出して(S120)、各行データに対してfilter条件に一致するかどうかを判定し、一致している行データをヒット判定し、その結果を主記憶に格納(S118)する(filter処理)。
第1のaggregate処理(集約処理)S116は集約処理部51が行い、ヒット判定された行データを主記憶より読み出して(S117)、aggregate条件に従って処理を実行し、集約結果データを主記憶に格納(S115)する。
exchange処理S113はエクスチェンジ処理部102が行い、集約結果データを主記憶より読み出して(S114)、S111について後述する第2のaggregate処理(まとめ処理)を実行するワーカノードサーバ92へ、ネットワークを介して転送(S112)する。
第2のaggregate処理(まとめ処理)S111は、まとめを担当するワーカノードサーバ92が、各ワーカノードサーバ92から収集した集約結果データのまとめ集約処理を実施し、アプリケーションサーバ91に送信する。
変換後クエリプラン124は、標準クエリプラン110を基にしてアクセラレータ最適化ルール部95が変換生成するものである。アクセラレータ98で処理をするクエリプランは変換し、実行エンジン部94で処理するクエリプランは変換しない。アクセラレータのスペック情報などを参照し、どちらで処理するのが適当か判断し、変換要否を決定する。変換後クエリプラン124は、図中下部の処理から、FPGA並列処理S130、exchange処理S113、aggregate処理S111の順で実行されることを示している。
FPGA並列処理S130はアクセラレータ98(スキャン処理部99、フィルタ処理部57及び集約処理部56)が行い、aggregate条件131、filter条件132、scan条件133、データローカリティ利用条件134に従って、ローカルドライブ32データベースデータの読み出し(S135)と、スキャン処理、フィルタ処理及び集約処理とを行い、その後アクセラレータ99の処理結果をフォーマット変換して主記憶に格納(S129)するものである。アクセラレータ最適化ルール部95は、標準クエリプラン内に存在するscan処理S122、filter処理S119、aggregate処理S116を検出し、当該処理の条件を収集して、FPGA並列処理S130のaggregate条件、filter条件、scan条件として設定する。aggregate条件131は集約演算種別(SUM/MAX/MIN)、グループ化対象カラム、集約演算対象カラム等の集約処理に必要な情報であり、filter条件132は比較条件(=、>、<、等)と比較対象カラム等のフィルタ処理に必要な情報であり、scan条件133は読み出し対象のデータベースデータファイルの分散ファイルシステム上の位置情報(分散ファイルシステムパス)等のスキャン処理に必要な情報である。データローカリティ利用条件134は、自ワーカノードサーバ92上のファイルシステム101に存在するデータベースデータファイルをスキャン処理対象とするための条件である。FPGA並列処理S130は、アクセラレータ制御部97の指示によりアクセラレータ99が実行する。
exchange処理S113及び第2のaggregate処理S111は、標準クエリプランと同様に、実行エンジン部94内のエクスチェンジ処理部102及び集約処理部51が行う。これらの処理部をアクセラレータ99内に設けてもよい。
標準クエリプラン110は、CPU処理されることを前提としているため、scan、filter、aggregateの各処理は、処理の開始時及び完了時にデータを主記憶に配置又は主記憶から読み出すことが基本動作になっている。このような主記憶のデータ入出力は、CPU―メモリ間のデータの移動が発生し、処理効率を落とす要因となる。本発明によるクエリプラン変換方式では、各処理を統合した新たなFPGA並列処理S130に変換することにより、各処理をアクセラレータ内部でパイプライン並列処理可能として、FPGA―メモリ間のデータの移動を不要とし、処理効率を高める効果がある。
また、標準クエリプランにおけるscan処理S122は、分散ファイルシステム100よりデータベースデータを取得するため、分散ファイルシステム100のデータ分散状況によっては、他ワーカノードサーバ92よりネットワークを介してデータベースデータを取得する場合がある。本発明によるクエリプラン変換では、アクセラレータ98が近傍のローカルドライブより確実にデータベースデータを取得可能とすることでアクセラレータを効率よく動作させることが可能となる。
図17は、第3の実施形態における、全体シーケンスを説明する図である。
クライアント2は、最初にデータベースデータ格納指示を分散ファイルシステム100に対して指示する(S140)。取りまとめのワーカノードサーバ#0の分散ファイルシステム100は、当該データベースデータを所定のサイズのブロックに分割して、リプリケーションのために他ワーカノードサーバへデータのコピーを送信する(S141、S142)。それぞれのワーカノードにおいてファイルパス解決部96は、前記データベースデータのブロックが格納されたことを分散ファイルシステム100からのイベント通知によって検出し、次に当該ブロックを各サーバ92上のローカルファイルシステム101上で検索することによって、分散ファイルシステムパスとローカルファイルシステムパスの対応表を作成する(S143、S144、S145)。対応表は、ブロックが更新される度に更新し、またキャッシュとしてファイルに格納保存しておいてもよい。
次に、クライアント2は、分析指示をアプリケーションサーバに送信する(S146)。アプリケーションサーバ91は、SQLクエリを分散データベースシステム103に送信する(S148)。SQLクエリを受領したワーカノードサーバ#0は、前述したようにクエリプランを変換し、変換後クエリプラン(及び変換しない標準クエリプラン)を他ワーカノードサーバ#1、#2へ送信する(S150、S151)。
各ワーカノード#0、#1、#2は、FPGA並列処理のスキャン処理やフィルタ処理、集約処理をアクセラレータ98にオフロードして実行する(S152、S153、S154)。変換されていない標準クエリプランについては、実行エンジン94にて実行する。次にワーカノードサーバ#1、#2は、アクセラレータ98や実行エンジン94が出力する結果データを、まとめ処理のためにワーカノードサーバ#0に送信する(S155、S156)。
ワーカノードサーバ#0は、前記結果データをまとめ処理を実行し(S157)、まとめ結果データをアプリケーションサーバへ送信する(S158)。アプリケーションサーバは、ユーザへの表示のためのクライアントに結果送信を行う(S159)。
本実施の形態においては、クエリ変換をワーカノードサーバ#0で行うようにしているが、アプリケーションサーバや個別のワーカノードサーバ#1、#2で行うようにしてもよい。
図18は、第3の実施の形態において、アクセラレータ最適化ルール部95がクエリプランに設定したフィルタ条件を、アクセラレータ制御部97が並列処理に適した形態に変換する際の処理フローを説明する図である。
アクセラレータ制御部97は、フィルタ条件が標準形かどうかを判定する(S170)。もし標準形でなければ、分配法則及びド・モルガンの法則により標準形に変換する(S171)。次に、標準形のフィルタ条件式をアクセラレータの並列実行コマンドに設定する(S172)。標準形は、連言標準形(乗法標準形)あるいは選言標準形(加法標準形)である。
また、フィルタ条件の変換の一例を図19に示す。変換前のフィルタ条件180は、カラムの大小比較(X1= (col1>10)、X2=(col2>=20))や一致比較(X3=(col3==30)、X4=(col4==”ABDC”))、及びそれらの論理和と論理積(( (X1 and X2) or X3) and X4)を含んでいる。従来のソフトウェアによる逐次処理(1)では、まずカラムの比較評価を順次実行し、次に内側の括弧でくくられたものから順に論理和、論理積の評価を行っていく。アクセラレータ向けのフィルタ条件変換(2)では、フィルタ条件式を連言標準形に変換する(181)。連言標準形では、比較評価の論理和(or)を1つ以上含む論理積(and)の形式となるため、図に示すように、比較評価、論理和、論理積をこの順で並列に処理可能となる。
図20は、第3の実施の形態において、分散ファイルシステムパスからアクセラレータのスキャン処理に必要なLBAとサイズ情報への変換フローを示す図である。変換後クエリプランに含まれるスキャン条件133は、対象データベースデータの位置情報である分散ファイルシステムパス(例:/hdfs/data/…/DBfile)を含む。アクセラレータ制御部97は、第一の変換として、ファイルパス解決部96に問い合わせることで、分散ファイルシステムパスをファイルシステムパス(例: /root/data/…/blockfile)に変換する(S190)。
次に、アクセラレータ制御部97は、第2の変換として、OSのファイルシステムに問い合わせることで、前記ファイルシステムパスをドライブ上のファイルの論理的な位置情報であるLBA(例:0x0124abcd…)とサイズ情報に変換する(S191)。そして最後にスキャン条件を前記LBA及びサイズ情報と共に並列実行コマンドに設定する(S192)。
本方式によれば、アクセラレータは、複雑な分散ファイルシステムやファイルシステムを解析する必要がなく、並列実行コマンドにあるLBA及びサイズ情報から直接ドライブのデータベースデータにアクセスすることが可能となる。
本発明は、クライアントから指示された処理を分散データベースシステムから取得した情報に基づいて実行する種々の構成の情報処理システムに広く適用することができる。
60,70,80,90……情報処理システム、2……クライアント、3,71,91……アプリケーションサーバ、4,61,103……分散データベースシステム、6……マスタノードサーバ、7,62,92……ワーカノードサーバ、10,20,30……CPU、11,21,31……メモリ、12,22,32……ローカルドライブ、34,63,98……アクセラレータ、41……分析BIツール、43……クエリ変換部、44……アクセラレータ情報テーブル、45……Thriftサーバ部、46……クエリパーサ部、47……クエリプランナ部、48……リソース管理部、49……タスク管理部、50……スキャン処理部、51,56……集約処理部、52……結合処理部、53,57……フィルタ処理部、54……処理切替え部、55,97……アクセラレータ制御部、58……データベースデータ、72……アクセラレータ情報取得部、81……コード,95……アクセラレータ最適化ルール部、96……ファイルパス解決部、99……スキャン処理部、100……分散ファイルシステム、101……ファイルシステム。

Claims (11)

  1. クライアントからの指示に応じて処理を実行する情報処理システムにおいて、
    前記クライアントからの指示に応じた処理を実行するアプリケーションが実装されたアプリケーションサーバと、
    複数のサーバによりデータを分散保持する分散データベースシステムと、
    を備え、
    前記分散データベースシステムは、割り振られるタスクを実行するためのソフトウェアを稼働させるプロセッサと、一部又は全部の種類の当該タスクを実行可能なハードウェアでなるアクセラレータとが実装された複数のサーバを有し、
    前記アプリケーションサーバは、
    前記クライアントからの指示に応じた処理を実行するための情報を前記分散データベースシステムから取得するためのクエリを生成して、前記分散データベースシステムに送信し、
    変換部は、前記アプリケーションサーバが生成するクエリから、前記アクセラレータが実行する第1のタスクと、前記ソフトウェアが実行する第2のタスクに分け、
    前記分散データベースシステムの複数のサーバは、
    前記クエリに含まれる前記アクセラレータにより実行すべき第1のタスクを前記アクセラレータに実行させ、前記クエリに含まれる前記ソフトウェアにより実行すべき第2のタスクを前記ソフトウェアに基づいて実行し、前記第1及び又は第2のタスクの実行結果を返信し、
    前記アプリケーションサーバは、
    前記第1及び第2のタスクの実行結果に基づき得られる前記クエリの処理結果を前記分散データベースシステムから受信し、
    前記変換部は、前記アプリケーションサーバが有しており、前記サーバのアクセラレータのスペック情報に基づいて、前記アプリケーションサーバが生成するクエリである第1のクエリから、前記アクセラレータが実行する第1のタスクと、前記ソフトウェアが実行する第2のタスクに分けた第2のクエリに変換し、
    前記分散データベースシステムのマスタノードサーバが、前記第2のクエリを受信してタスクに分解し、各タスクを前記複数のサーバに割り振る
    ことを特徴とする情報処理システム。
  2. 前記アクセラレータは、
    所定形式のユーザ定義関数により定義されたタスクを実行可能なFPGA(Field Programmable Gate Array)から構成され、
    前記クエリは、前記第1のタスクを前記ユーザ定義関数により定義され、前記第2のタスクを前記ソフトウェアにより認識可能な所定形式で定義されている
    ことを特徴とする請求項に記載の情報処理システム。
  3. 前記ソフトウェアにより認識可能な所定形式は、SQL(Structured Query Language)を用いた形式である
    ことを特徴とする請求項に記載の情報処理システム。
  4. 前記アプリケーションサーバは、
    各前記サーバから当該サーバに搭載された前記アクセラレータの前記ハードスペック情報を取得するアクセラレータ情報取得部を備える
    ことを特徴とする請求項に記載の情報処理システム。
  5. 前記第2のタスクは、前記ソフトウェアが複数の処理を、各処理の間にデータを主記憶に格納しながら行うタスクであり、前記第1のタスクは、前記アクセラレータがパイプライン並列処理を行うタスクを含むことを特徴とする
    ことを特徴とする請求項1に記載の情報処理システム。
  6. クライアントからの指示に応じて処理を実行する情報処理システムにおいて、
    前記クライアントからの指示に応じた処理を実行するアプリケーションが実装されたアプリケーションサーバと、
    複数のサーバによりデータを分散保持する分散データベースシステムと、
    を備え、
    前記分散データベースシステムは、割り振られるタスクを実行するためのソフトウェアを稼働させるプロセッサと、一部又は全部の種類の当該タスクを実行可能なハードウェアでなるアクセラレータとが実装された複数のサーバを有し、
    前記アプリケーションサーバは、
    前記クライアントからの指示に応じた処理を実行するための情報を前記分散データベースシステムから取得するためのクエリを生成して、前記分散データベースシステムに送信し、
    変換部は、前記アプリケーションサーバが生成するクエリから、前記アクセラレータが実行する第1のタスクと、前記ソフトウェアが実行する第2のタスクに分け、
    前記分散データベースシステムの複数のサーバは、
    前記クエリに含まれる前記アクセラレータにより実行すべき第1のタスクを前記アクセラレータに実行させ、前記クエリに含まれる前記ソフトウェアにより実行すべき第2のタスクを前記ソフトウェアに基づいて実行し、前記第1及び又は第2のタスクの実行結果を返信し、
    前記アプリケーションサーバは、
    前記第1及び第2のタスクの実行結果に基づき得られる前記クエリの処理結果を前記分散データベースシステムから受信し、
    前記第2のタスクは、前記ソフトウェアが複数の処理を、各処理の間にデータを主記憶に格納しながら行うタスクであり、前記第1のタスクは、前記アクセラレータがパイプライン並列処理を行うタスクを含み、
    前記クエリに基づいて、前記ソフトウェアが実行するのに適した第1のクエリプラン作成し、前記第1のクエリプランを前記アクセラレータが実行するのに適した第2のクエリプランに変換する
    ことを特徴とする情報処理システム。
  7. 前記サーバのうちの少なくとも一つのサーバが、
    前記クエリプランを変更して、前記クエリに含まれる第1のタスクと第2のタスクを他のサーバに割り振り、
    その処理結果を他のサーバから受信してまとめて、前記アプリケーションサーバに送信する
    ことを特徴とする請求項に記載の情報処理システム。
  8. 前記変換される第1及び第2のタスクは、スキャン処理、フィルタ処理及び集約処理を含み、
    前記第1のタスクでは、前記スキャン処理、フィルタ処理及び集約処理をパイプライン並列処理する
    ことを特徴とする請求項に記載の情報処理システム。
  9. 前記フィルタ処理のクエリプラン変換処理では、
    比較演算、論理和、論理積の順で並列処理可能なフィルタ条件式に変換する
    ことを特徴とする請求項に記載の情報処理システム。
  10. 前記複数のサーバの各々は、
    複数のサーバで構成される分散ファイルシステムと、単独のサーバで構成されるファイルシステムと、分散ファイルシステム及びファイルシステムを構成するためのドライブと、を有し、
    前記スキャン処理のクエリプラン変換処理では、
    前記タスクに含まれる分散ファイルシステムパスをファイルシステムパスに変換し、
    前記ファイルシステムパスを、前記ドライブでのアドレスに変換し、
    前記ドライブでのアドレスを前記第1のタスクに設定する
    ことを特徴とする請求項に記載の情報処理システム。
  11. クライアントからの指示に応じて処理を実行する情報処理方法であって、
    前記クライアントからの指示に応じた処理を実行するアプリケーションが実装されたアプリケーションサーバが、前記クライアントからの指示に応じた処理を実行するための情報を分散データベースシステムから取得するためのクエリを生成すると共に、生成した前記クエリを、前記アクセラレータが実行する第1のタスクと、前記ソフトウェアが実行する第2のタスクに変換して分散データベースシステムに送信する第1のステップと
    前記分散データシステムの複数のサーバが、前記クエリに含まれるアクセラレータにより実行すべき第1のタスクを前記サーバが有するアクセラレータに実行させ、前記クエリに含まれるプロセッサ上で稼働するソフトウェアにより実行すべき第2のタスクを前記サーバが有するソフトウェアに基づいて実行し、前記第1及び又は第2のタスクの実行結果を返信する第2のステップと、
    前記アプリケーションサーバ、前記第1及び第2のタスクの実行結果に基づき得られる前記クエリの処理結果を前記分散データシステムから受信する第3のステップと
    を備え、
    前記第1のステップにおける前記変換は前記サーバのアクセラレータのスペック情報に基づいて行い、
    前記第2のタスクは、前記ソフトウェアが複数の処理を、各処理の間にデータを主記憶に格納しながら行うタスクであり、前記第1のタスクは、前記アクセラレータがパイプライン並列処理を行うタスクを含み、
    前記クエリに基づいて、前記ソフトウェアが実行するのに適した第1のクエリプランを作成し、前記第1のクエリプランを前記アクセラレータが実行するのに適した第2のクエリプランに変換する
    ことを特徴とする情報処理方法。
JP2018566146A 2017-02-03 2018-02-02 情報処理システム及び情報処理方法 Active JP6807963B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
PCT/JP2017/004083 WO2018142592A1 (ja) 2017-02-03 2017-02-03 情報処理システム及び情報処理方法
JPPCT/JP2017/004083 2017-02-03
PCT/JP2018/003703 WO2018143441A1 (ja) 2017-02-03 2018-02-02 情報処理システム及び情報処理方法

Publications (2)

Publication Number Publication Date
JPWO2018143441A1 JPWO2018143441A1 (ja) 2019-06-27
JP6807963B2 true JP6807963B2 (ja) 2021-01-06

Family

ID=63039402

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018566146A Active JP6807963B2 (ja) 2017-02-03 2018-02-02 情報処理システム及び情報処理方法

Country Status (4)

Country Link
US (1) US20190228009A1 (ja)
JP (1) JP6807963B2 (ja)
CN (1) CN110291503B (ja)
WO (2) WO2018142592A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200195731A1 (en) * 2018-12-12 2020-06-18 Sichuan University Lccs system and method for executing computation offloading
JP7247161B2 (ja) * 2020-12-24 2023-03-28 株式会社日立製作所 情報処理システム及び情報処理システムにおけるデータ配置方法
JP7122432B1 (ja) 2021-05-20 2022-08-19 ヤフー株式会社 情報処理装置、情報処理方法及び情報処理プログラム
CN113535745B (zh) * 2021-08-09 2022-01-18 威讯柏睿数据科技(北京)有限公司 一种层次化数据库操作加速系统和方法
US20230244664A1 (en) * 2022-02-02 2023-08-03 Samsung Electronics Co., Ltd. Hybrid database scan acceleration system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS625465A (ja) * 1985-07-01 1987-01-12 Akira Nakano 情報処理ユニツトおよびマルチ情報処理ユニツトシステム
JP3763982B2 (ja) * 1998-11-25 2006-04-05 株式会社日立製作所 データベース処理方法及びその実施装置並びにその処理プログラムを記録した媒体
US20030158842A1 (en) * 2002-02-21 2003-08-21 Eliezer Levy Adaptive acceleration of retrieval queries
US8176186B2 (en) * 2002-10-30 2012-05-08 Riverbed Technology, Inc. Transaction accelerator for client-server communications systems
JP5161535B2 (ja) * 2007-10-26 2013-03-13 株式会社東芝 コーディネータサーバ及び分散処理方法
CN104541247B (zh) * 2012-08-07 2018-12-11 超威半导体公司 用于调整云计算系统的系统和方法
JP2014153935A (ja) * 2013-02-08 2014-08-25 Nippon Telegr & Teleph Corp <Ntt> 並列分散処理制御装置、並列分散処理制御システム、並列分散処理制御方法および並列分散処理制御プログラム
CN103123652A (zh) * 2013-03-14 2013-05-29 曙光信息产业(北京)有限公司 数据查询方法和集群数据库系统
JP2015084152A (ja) * 2013-10-25 2015-04-30 株式会社日立ソリューションズ データ割当制御プログラム、MapReduceシステム、データ割当制御装置、データ割当制御方法
US10534770B2 (en) * 2014-03-31 2020-01-14 Micro Focus Llc Parallelizing SQL on distributed file systems
WO2016185542A1 (ja) * 2015-05-18 2016-11-24 株式会社日立製作所 計算機システム、アクセラレータ及びデータベースの処理方法
CN105677812A (zh) * 2015-12-31 2016-06-15 华为技术有限公司 一种数据查询方法及数据查询装置

Also Published As

Publication number Publication date
JPWO2018143441A1 (ja) 2019-06-27
WO2018142592A1 (ja) 2018-08-09
CN110291503A (zh) 2019-09-27
US20190228009A1 (en) 2019-07-25
WO2018143441A1 (ja) 2018-08-09
CN110291503B (zh) 2023-04-25

Similar Documents

Publication Publication Date Title
JP6807963B2 (ja) 情報処理システム及び情報処理方法
JP6117378B2 (ja) 分散型データベースクエリ・エンジン用のシステムおよび方法
US20220407781A1 (en) Intelligent analytic cloud provisioning
US9740706B2 (en) Management of intermediate data spills during the shuffle phase of a map-reduce job
US10528599B1 (en) Tiered data processing for distributed data
US10581957B2 (en) Multi-level data staging for low latency data access
US10922316B2 (en) Using computing resources to perform database queries according to a dynamically determined query size
US20140214752A1 (en) Data stream splitting for low-latency data access
US20190095462A1 (en) Parallel processing of large data files on distributed file systems with dynamic workload balancing
US11494386B2 (en) Distributed metadata-based cluster computing
US20170228422A1 (en) Flexible task scheduler for multiple parallel processing of database data
US10909119B2 (en) Accessing electronic databases
US11216462B1 (en) Transient materialized view rewrite
US20180302268A1 (en) Systems and Methods for Real Time Streaming
US20150293971A1 (en) Distributed queries over geometric objects
US20230237043A1 (en) Accelerating change data capture determination using row bitsets
EP2765517B1 (en) Data stream splitting for low-latency data access
JP6393193B2 (ja) データ仮想化装置及び大規模データ処理プログラム
US10019472B2 (en) System and method for querying a distributed dwarf cube
JP6139399B2 (ja) 分散クエリ処理装置、クエリ処理方法及びクエリ処理プログラム
US11593368B1 (en) Maintenance of clustered materialized views on a database system
US12007994B1 (en) Partition granular selectivity estimation for predicates
US20230135440A1 (en) Join elimination
CN117349323B (zh) 数据库的数据处理方法及装置、存储介质及电子设备
US20230394067A1 (en) Data analysis processing apparatus, data analysis processing method, and program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200609

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200730

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201208

R150 Certificate of patent or registration of utility model

Ref document number: 6807963

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150