JP6516110B2 - SQL−on−Hadoopシステムにおける複数クエリ最適化 - Google Patents

SQL−on−Hadoopシステムにおける複数クエリ最適化 Download PDF

Info

Publication number
JP6516110B2
JP6516110B2 JP2017527675A JP2017527675A JP6516110B2 JP 6516110 B2 JP6516110 B2 JP 6516110B2 JP 2017527675 A JP2017527675 A JP 2017527675A JP 2017527675 A JP2017527675 A JP 2017527675A JP 6516110 B2 JP6516110 B2 JP 6516110B2
Authority
JP
Japan
Prior art keywords
map
query
jobs
query plan
reduce
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
JP2017527675A
Other languages
English (en)
Other versions
JP2017539012A (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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JP2017539012A publication Critical patent/JP2017539012A/ja
Application granted granted Critical
Publication of JP6516110B2 publication Critical patent/JP6516110B2/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/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/2453Query 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/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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

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

Description

本発明は、データベース技術の分野に関し、より詳細には、クエリ最適化に関する。
マップリデュース(MapReduce)フレームワークは、その単純なプログラミングモデルと、数千ものコモディティマシンにわたる良好なスケーラビリティとによって広く関心を持たれてきた。このフレームワークは、ユーザーが自身のマップ(Map)関数及びリデュース(Reduce)関数を記述することを可能にし、そのような関数を並列化する一般的なフレームワークを提供する。きめの細かなフォールトトレランスを可能にするために、マップからリデュースへの全ての中間データは、ディスクに記憶される。そのような特徴は、演算子間で中間データをパイプライン化する従来のデータベースシステムを特徴付ける。Hadoopは、マップリデュースモデルの1つの実施態様であり、コミュニティによって広く用いられている。
マップ関数及びリデュース関数は、HadoopではJava等の低級言語で記述されるので、それらの言語に精通していない開発者にとっては煩わしく、それらの関数を再利用することが難しい。MRプログラムの表現を簡素化するために、多くのシステムが、Hive、Pig、Impala、及びPresto等のマップリデュースフレームワーク上で高級言語(例えば、SQLクエリ)のサポートを提供している。それらのシステムは、SQL−on−Hadoopシステムと呼ばれる。そのようなシステムは、SQL型のクエリ(query)をマップリデュースジョブのDAG(Directed Acyclic Graph:有向非循環グラフ)に変換する。これらのジョブは、その後、Hadoop等のマップリデュースシステムによって1つずつ実行される。
幾つかのSQL−on−Hadoopシステムは、クエリのバッチ処理を対象にしている。異なるクエリが同様の作業を実行することが多いので、クエリのバッチがシステムによって実行されるとき、多くの冗長な計算が行われる。例えば、複数のMRジョブが、同じ入力ファイルを読み出し、データスキャンを共有してI/Oコストを削減することができる。データスキャンを共有することに加えて、マップ出力及びマップ関数の共有等の異なるジョブ間で他の機会共有もある。このため、複数クエリ最適化のアイデアを適用して、そのようなシステムにおいて冗長な計算を回避することによって複数のジョブの処理を最適化することが有用である。マルチクエリ最適化は、複数のジョブを単一のMRジョブにグループ化して、全てのジョブの全体の計算時間を削減することである。
幾つかの既存の研究は、MRジョブのバッチの幾つかの共有技法を提案している。それらの研究は、システムがMRジョブのバッチをグループ化することから利得を得ることができるか否かを推定するコストモデルを構築するものである。それらのコストモデルのほぼ全てが、入力スキャン及びマップ出力の共有しか考慮していない。なぜならば、それらのコストモデルは、I/Oコストが総計算時間を支配すると考えるからである。それらのコストモデルは、マップ関数の共有を考慮していなかった。関係演算子のDAGからなるマップ関数が重く、無視することができないSQL−on−Hadoopシステムでは、マップ関数の共有を考慮しないことによって、モデルは正確でないものとなる。加えて、Hiveにおける複数クエリオプティマイザーが近年提案されている。その研究は、ルールベースの方法を用いて、複数のクエリを、Hiveが実行することができる単一のインサートクエリに書き換える。その研究は、スキャン共有及びマップ関数共有を活用するが、共有するルールが過度に単純である。それらのルールは、同じ結合(join)演算の共有しか考慮せず、そのような共有が常に有益であると考える。
したがって、本発明は、SQL−on−Hadoopシステムにおいて処理される複数のクエリを最適化する方法を提供することを目的としている。
SQL−on−Hadoopシステムにおける各マップ関数は、幾つかの関係演算子のシーケンスからなるクエリプラン(query plan)全体の一部分であり、幾つかの演算子の順序は交換することができる。この特性に基づいて、提案した方法は、複数のMRジョブを最適化する問題を、各グループ内の最適なクエリプランを有するMRジョブの最適なグループを見つけることと定義する。MRジョブのバッチの全体の計算時間のコストモデルが、データを読み出し/書き込み/ソートするI/Oコストと、マップ関数における関係演算子のDAGを処理するCPUコストとの双方を考慮して作成される。各グループ内で最適な統合クエリプランを見つけるために、本方法は、各クエリプランが局所的に最適であるという特徴に基づいて探索空間を削減する幾つかのルールを生成する。次に、貪欲(greedy)アルゴリズムが用いられて、複数のジョブをグループ化する。この場合、より正確なコストモデルを適用することによって、より適したジョブを単一のグループ内に集約することができ、全体の計算時間が削減される。
本明細書において開示される方法は、SQL−on−Hadoopシステム用に特別に設計された複数クエリ最適化メカニズムである。一般に、クエリのバッチの全体の計算時間を削減するために、入力スキャンの共有、マップ出力の共有、及びマップ関数の共有が考慮され、冗長な計算が回避される。一方、ほぼ全ての既存の研究は、CPU節約をもたらすマップ関数共有を考慮することなく、I/O節約をもたらすスキャン共有及びマップ出力にしか着目していない。マップ関数は通常、SQL−on−Hadoopシステムでは複雑で重く、それらの研究は効率的でない場合がある。SQL−on−Hadoopにおけるマップ関数は、それらのほとんどが交換可能である関係演算子のシーケンスとして表されるクエリプランの一部分であることを考慮すると、開示した方法は、SQL−on−Hadoopにおける複数クエリ最適化の問題を次のように定義する。すなわち、各マップ関数が、関係演算子のDAGであるマップリデュースジョブの集合が与えられた場合に、それらのジョブを、全てのジョブの全体の計算時間を最小にする各グループ内の最適な統合クエリプランを有するグループに分割せよ。この問題を解くために、開示した方法は、データの読み出し、書き込み、ソート及び転送のI/Oコストと、マップ関数処理のCPUコストとの双方を考慮に入れた計算時間を推定するコストモデルを作成する。このコストモデルとともに、上記問題の探索空間を削減する2つの発見的アルゴリズムが開示されている。
開示した方法では、複数のMRジョブをマージ(merge)するときに準最適な統合クエリプランを見つける発見的アルゴリズムが最初に開示される。単一のMRジョブにおける各クエリプランが局所的に最適であるという知見に基づいて、本アルゴリズムは、次の2つのルールを定義する。すなわち、(1)複数のクエリプラン間に共通の演算子がない場合、それらのクエリプランを単純にマージすることによって統合クエリプランが生成される;(2)複数の共通の演算子がある場合、それらの共通の演算子間の順序を維持しつつ、それらの共通の演算子のサブセット又は全てを共有することによって統合クエリプランが生成される。本アルゴリズムは、最初に、マップ関数共有のより多くの機会を提供するようにフィルター演算子を幾つかの独立した演算子に分割し、共通演算子の順序を交換することによって、各クエリプランを変換する。次に、本アルゴリズムは、上記ルールに基づいて、変換から取得されたプランをマージすることによって多くの統合クエリプランを生成する。最後に、本アルゴリズムは、最小実行時間を有する統合クエリプランを選ぶ。
開示した方法では、複数のマップリデュースジョブをグループ化する貪欲アルゴリズムが開示される。本アルゴリズムは、マージされるジョブのグループのペアを、それらのマージする利益に基づいて反復的に選択する。各ジョブは、最初は、単一ジョブグループとみなされる。各反復において、本アルゴリズムは、最大利益を生み出す2つのグループを新たなグループにマージする。この反復は、いずれの2つのグループをマージすることによっても利益がないときに終了する。
本発明のより完全な理解のために、以下の説明及び添付図面が参照される。
複数のマップリデュースジョブの間の幾つかの機会共有を示す図である。 SQL−on−Hadoopシステムにおけるマップ関数の特殊な共有を示す図である。 コストモデルにおいて用いられるシンボルの定義を示す図である。 準最適な統合クエリプランを見つける変換段階及び統合段階を示す図である。 準最適な統合クエリプランを見つける発見的(heuristic)アルゴリズムを示す論理フロー図である。 複数のマップリデュースジョブをグループ化する貪欲アルゴリズムを示す論理フロー図である。 開示した方法を用いて3つのマップリデュースジョブをグループ化する一例を示す図である。 開示した方法を用いた新たなSQL−on−Hadoopシステムのアーキテクチャを示すブロック図である。
本発明は、本発明の好ましい実施形態の以下の説明及び図における非常に多くの詳細によってより容易に理解することができる。
機会共有
A.マップリデュースフレームワークにおける機会共有
複数のマップリデュースジョブの中には、冗長な計算を回避することができる多くの機会共有が存在する。本明細書において開示した方法は、次の3種類の共有、すなわち、スキャン共有、マップ出力共有及びマップ関数共有を特定する。そのような機会共有は、他の研究においても利用されている。次に、これらの機会共有を手短に紹介する。
スキャン共有。スキャン共有は、入力ファイルのスキャンの数を削減することによってI/Oコストを節約することができる。2つのMRジョブJ及びJが同じ入力を有する場合、それらのMRジョブを単一のMRジョブJにグループ化することによって、スキャンを共有することができる。図1における(a)は、J及びJをマージすることによって、入力ファイルF1のスキャンを1回のみとすることができることを示している。ユーザー定義のマップ関数M及びMは、マージマッパーにおいて共有ファイル上で呼び出される。マージマッパーでは、2つの出力ストリームが生成されることに留意されたい。これらのストリームを区別するために、リデューサー(reducer)ステージにおいて、各タプル(tuple)には、その起源を示すタグTが追加される。例えば、リデュース関数Rは、タグTを有するデータを読み出すことができる。
マップ出力共有。スキャン共有に加えて、マップ出力の鍵及び値のタイプがMRジョブJ及びJの双方について同じである場合、マップ出力も共有することができる。この場合、M及びMは、各入力タプルに適用される。Mのみから得られる出力は、Tを用いてタグ付けされている一方、M及びMの双方から取得される出力は、T12を用いてタグ付けされている。したがって、マップ出力の重複部分を共有することができる。マップ出力結果の生成を少なくすることによって、中間データのソート及びネットワークを介した転送に関するオーバーヘッドを省くことができる。
マップ関数共有。2つのマップ関数間で共通の計算を共有することによって、CPU節約をもたらすことができる。例えば、M及びMは、同一である場合に、1度のみ実行することができる。マップステージの終了時に、2つのストリームが生成され、タグ付けされる。マップ出力も共有される場合、1つのストリームのみを生成する必要がある。場合によっては、全体の関数の一部分しか共有することができない場合がある。例えば、各マップ関数は、データに対して幾つかのフィルターを実行する。例えば、Mは「a>10及びb<100」である一方、Mは「a>10」であり、このように、aに対する述語を共有することができる。
上述した機会共有の中で、スキャン共有及びマップ出力共有は、I/O節約をもたらすことができる一方、マップ関数共有は、CPU節約をもたらすことができる。関係のある既存の研究のほぼ全ては、読み出し、ソート、転送等に起因したI/Oコストが通常、全体の計算時間の主要なものであると考える。このため、既存の研究は、それらの研究において、I/O節約、換言すれば、スキャン共有及びマップ出力共有にしか着目していない。一方、SQL−on−Hadoopシステムでは、マップ関数は通常、クエリプラン全体のほとんどの部分を実行するので重く複雑である。マップ関数共有は、大きなCPU節約を生み出すことができ、そのため、I/O節約のみを考えることは、そのようなシステムでは効率的でない場合がある。SQL−on−Hadoopにおけるマップ関数共有の詳細は、次のセクションにおいて説明される。したがって、本明細書において開示した方法は、I/O節約及びCPU節約の双方を考慮に入れる。
B.SQL−on−Hadoopシステムにおけるマップ関数共有
上述したように、SQL−on−Hadoopシステムは、クエリを、マップリデュースジョブのDAGとして表されたクエリプランに変換し、各マップ関数は、実際には、関係演算子のシーケンスからなるクエリプランの一部分である。マップ関数は通常、複雑で重いので、複数のMRジョブの間でそれらのマップ関数を共有することが必要である。幾つかのMRジョブが単一のジョブにマージされた場合、マージされたマップ関数の統合クエリプランが生成される。本発明者らの知る限り、SQL−on−Hadoopシステムのマップ関数におけるフィルター演算子、グループ化(group-by)演算子及び場合によってはマップ結合(map-join)演算子等のほとんどの演算子は通常、最終結果を変更することなく互いに交換することができる。この特徴によって、多数の統合クエリプランを生成することができる。このため、最も多くの利益を取得するための最良のものをどのように選ぶのかが問題となる。
図2は、2つのMRジョブ間でのマップ関数共有の一例を示している。これらの2つのジョブは、それらのマップ関数において同様の計算を実行する。演算子のシーケンスの下から上に、最初に、フィルター演算子が、同じ入力データに対して異なる述語を適用し、次に、同じマップ結合演算子が、このフィルタリングされたデータに適用され、最後に、この結合されたデータが、同じ鍵に基づいているが異なる関数を用いて部分的にグループ化される。これらの2つのジョブを組み合わせるには、2つのクエリプランを単一のプランに統合しなければならない。この例では、関数の一部分を共有するために、マップ結合演算子とフィルター演算子とを交換することがより望ましい。この場合、マップ結合演算子を共有し、1度だけ実行することができる。もちろん、そのような演算子の共有は、常に有利であるとは限らない場合がある。例えば、少数のタプルしか選択されないことを意味する、2つのフィルター演算子の選択が非常に少ないという場合、最初にフィルターを実行することによって、統合クエリプランの計算時間をより少なくすることが可能である。このため、最小実行時間を有する統合クエリプランをどのように選択するのかが、後のセクションにおいて説明される本質的な問題となる。
コストモデル
A.問題定義
SQL−on−Hadoopにおいて複数のMRジョブを最適化する問題は、一般のマップリデュースフレームワークにおける問題と異なる。1つの主な理由は、SQL−on−Hadoopにおけるマップ関数が、関係演算子のシーケンスからなるクエリの全体のクエリプランの一部分であり、それらの順序のうちの幾つかは交換することができるからである。このため、複数のクエリプランを統合することによって新たなクエリプランの多くの候補が存在する。この特性を考慮に入れると、上記問題は以下のように定義される。
各マップ関数が、関係演算子のDAG{D、D,...,D}であるクエリプランの一部分であるマップリデュースジョブの集合{J,J,...,J}が与えられた場合に、それらのジョブを、全てのジョブの全体の計算時間を最小にする最適な実行プラン{D’、D’,...,D’}を有するS個のグループ
Figure 0006516110
にグループ化せよ。
B.コストモデル
この問題を解くには、どのジョブのグループが、ジョブを個別に処理するよりも全体の計算時間に最も多くの利益をもたらすことができるのかを知っている必要がある。このため、入力データ及び中間データの双方を読み出し/書き込むI/Oコストと、マップ関数を実行するCPUコストとの双方を考慮して全体の計算時間を推定するコストモデルが構築される。各シンボルの定義は、図3に示されている。
一般に、マップタスクは、HDFSからの入力データの読み出しと、クエリプランの計算と、ローカルディスクへの出力の書き込みと、外部への出力のソートとを含む。このため、マップ時間TMiは、以下の式(1)のように計算される。
Figure 0006516110
ここで、クエリプランの計算時間は、先行演算子の出力タプルでもあるこの演算子の入力タプルの数を1つのタプルの処理時間に乗算したものによって推定される各演算子の処理時間を加算することによって計算される。そのような計算は、クエリプランが、1つずつ実行しなければならない演算子のシーケンスであると考えられることから、妥当なものである。pMiは、マップタスクのソーティングパスの数であり、以下の式(2)の値に等しい。
Figure 0006516110
リデュースタスクは、ネットワークを通じたマップ出力の転送と、マージされたデータを外部にソートするリデュースサイド(reduce-side)と、ソートされたローカルデータの読み出しとを含む。ここで、本発明者らは、リデュース関数の計算時間と、リデュース出力をディスクに書き込むオーバーヘッドとを考慮しなかった。なぜならば、そのようなオーバーヘッドは、グループ化する場合とグループ化しない場合との双方において同じであるからである。リデュース時間TRiは、以下の式(3)のように計算される。
Figure 0006516110
ここで、pRiは、リデュースタスクのソーティングパスの数であり、以下の式(4)の値に等しい。
Figure 0006516110
単一のMRジョブの処理時間は、以下の式(5)のように、マップ時間及びリデュース時間の合計として計算される。
Figure 0006516110
ここで、pは、pMiとpRiとを加算したものである。
n個のMRジョブ{J,...,J}が与えられた場合に、グループ化を伴わない総処理時間
Figure 0006516110
は、以下の式(6)のように、各ジョブの処理時間を加算したものとして計算される。
Figure 0006516110
n個のMRジョブが単一のジョブGにグループ化される場合、グループ化されたジョブの処理は、一般のMRジョブの処理と同様である。n個のジョブを個別に処理する時間と比較して、グループ化されたジョブの処理は、入力ファイルFの読み出しを1回しか伴わない。マップ関数においてn個のクエリプランを計算することと異なり、グループ化されたジョブの処理は、最適な統合クエリプランDoptを処理する。次に、グループ化されたジョブの処理は、Gのマップ関数の出力、換言すれば、n個のマップ出力の合計ではないDoptの出力をハンドリングする。このため、処理時間Tは、以下の式(7)のように計算される。
Figure 0006516110
ここで、pは、以下の式(8)の値pMGと式(9)の値pRGとを加算したものである。
Figure 0006516110
Figure 0006516110
したがって、原問題は、n個のMRジョブを、最適なクエリプランD’={D’、D’,...,D’}を有するS個のグループ
Figure 0006516110
にグループ化することから得られる利得Tgainを最大にするものになる。利得Tgainは以下の式(10)で表され、式(11)が成立する。
Figure 0006516110
Figure 0006516110
アルゴリズム
A.最適なクエリプランの発見的アルゴリズム
コストモデルから、グループ化技術を用いた全体の処理時間を得るには、最適な統合クエリプランの計算時間を知ることが必要であることが分かる。最適な統合クエリプランを探求する問題は、以下のように定義される。
m個の統合クエリプランD’={D’,...,D’}を生成するn個のクエリプランD={D,...,D}が与えられた場合に、全てのプランの総計算時間を削減する最適なクエリプランDopt∈D’を見つけよ。
上述したように、クエリプランを処理するコストTD’iは、以下の式(12)によってシミュレーションされる。
Figure 0006516110
このため、この問題は、コストTD’iの処理時間を最小にする、以下の式(13)のような最適なクエリプランDoptを見つけるものになる。
Figure 0006516110
発見的アルゴリズムは、或る知見に基づいてこの問題を解くのに用いられる。既存のSQL−on−Hadoopシステムを十分に活用するために、本アルゴリズムは、既に局所的に最適化されたシステムからクエリプランを受信する。このため、各クエリプランが局所的に最適であるという前提に基づいて、複数のクエリプランの統合のための2つのルールが定義される。
・ルール1:複数のクエリプランの間に共通の演算子がない場合には、それらのクエリプランを単純にマージすることによって、統合クエリプランが生成される。ここで、共通の演算子とは、プランの間で共有することができる演算子、すなわち、その出力を複数のプランによって用いることができる演算子を意味する。
・ルール2:複数の共通の演算子がある場合、それらの演算子間の順序を維持しつつ、それらの演算子のサブセット又は全てを共有することによって、統合クエリプランが生成される。
これらの2つのルールに基づいて、本発明者らのアルゴリズムは2つの部分に定義される。第1の部分は、現在のクエリプランを他の等価なクエリプランに変換するクエリプランの変換である。フィルター演算子変換及び形状変換の2種類の変換がある。
フィルター演算子変換。フィルター演算子は、幾つかの述語に基づいてデータのサブセットを選択することである。表の場合、複数の属性のうちの単一の属性に対して、多くの独立した交差述語(intersected predicate)が存在する場合がある。例えば、フィルター演算子は、col1>10及びcol2<40という2つの述語を有する。この場合、この演算子は、述語col1>10を有するフィルター演算子1と、述語col2<40を有するフィルター演算子2という2つの独立した演算子に変換される。単一の述語を幾つかの述語に分割することもできるが、この作業では、それは考慮されない。このため、m個の述語は、m個の新たなフィルター演算子を生成することができる。
形状変換。各マップ関数は、演算子のツリーを含み、このツリーの形状は、演算子の順序を交換することによって変更することができる。このため、形状変換は、演算子を交換して、マップ関数の作業を共有するより多くの機会を提供することである。最初に、その出力を複数のマップにおける次の演算子が直接用いることのできる共通の演算子が識別されることになる。DとDとの間の共通の演算子の集合をCijと表記する(Cij=Cji)。その後、本アルゴリズムは、DにおいてCijと同じ順序を維持しつつ、共通の演算子Cijの順序を交換することによって他のクエリプランが変換されるクエリプランに対応するクエリプランDを選択する。あらゆるクエリプランは、ベースクエリプランとして選択される。そのようなプロセスは、図4によって示すことができる。このように、クエリプランDについて、n−1個の変換(nはクエリプランの数である){Di1,...,Dij,...,Din}がある。ここで、Dijは、Dに基づく変換であり、j≠iである。その結果、統合されるクエリプランのn個の集合S={D,D1i,...,Dji,...,Dni}が得られる。ここで、1≦i≦n及びj≠iである。
変換後、本アルゴリズムは、次のステップである統合に至る。このステップは、変換段階から取得されたクエリプランの集合を単一のクエリプランに統合する。この統合は、上記で定義した2つのルールに準拠していなければならない。Dをベースクエリプランとみなすクエリプランの集合Sの場合、統合クエリプランは、Dの共通の演算子の数及び順序に依存する。Dの共通の演算子は、Cijの和集合である。ここで、1≦j≦n及びj≠iである。各Cijについて、本アルゴリズムは、サブセット又は全体集合をツリーの下部に移動させ(データは、下部から上部に転送される)、同じことを他のクエリプランの全てに対して行う。例えば、図4において、C12={J,G}及びSは、Dをベースクエリプランとみなす。Sについて、本アルゴリズムは、演算子J又は演算子{J,G}をツリーの下部に移動させる。ルール2に基づくと、JとGとの間の順序は維持されるべきであることに留意されたい。その結果、本アルゴリズムは、それに応じて、Dのクエリプランの形状を調整する。このため、統合クエリプランは、共通でない(uncommon)演算子が現われるまで、共通の演算子を共有することができる。この例では、統合クエリプランの2つの候補が生成される。1つの候補は演算子Jのみを共有し、もう1つの候補は双方の演算子{J,G}を共有する。したがって、Sの集合について、統合クエリプランのc個の候補が生成される。ここで、cは、Dの共通の演算子の数である。その結果、n×c個の候補が存在する。ここで、cは、全てのクエリプランの共通の演算子の平均個数である。加えて、全てのクエリプランを単純に組み合わせることによる統合クエリプランが常に存在する。なぜならば、場合によっては、何も共有しないことが最小のオーバーヘッドを有する場合があるからである。
本アルゴリズムは図5に示されている。入力は、クエリプランの集合D={D,...,D}であり、出力は、計算時間Tminを有する最適な統合クエリプランDoptである。最初に、本アルゴリズムは、クエリプラン間の共通の演算子を見つける。次に、本アルゴリズムは、各クエリプランをベースプランとして選び、次に、他のプランをそれに応じて変換し、統合されるクエリプランのn個の集合を得る。この詳細は上記で説明されている。次に、本アルゴリズムは、クエリプランの各集合を統合して、最終の統合クエリプランの候補を生成する。最後に、本アルゴリズムは、全ての候補から、最小の実行時間を有する1つの統合クエリプランを選択し、このクエリプラン及び時間を返す。本アルゴリズムは、O(nc)時間で動作する。ここで、nはクエリプランの数であり、cは共通の演算子の平均個数である。この発見的アルゴリズムを用いると、準最適な解が見つかる。
B.最適なグループ化のための貪欲アルゴリズム
準最適なクエリプランが生成された後、次のステップは、MRジョブをグループ化することである。最適なグループを見つける処理時間を削減するために、貪欲アルゴリズムが採用され、このアルゴリズムも準最適解のみを見つけることができる。本アルゴリズムは図6に記載されている。入力はn個のマップリデュースジョブJ={J,...,J}であり、出力はジョブのグループGopt={G,...,G}である。本アルゴリズムは、以下のように動作する。
ステップ−1:各ジョブを単一のグループGopt={G、G,...,G}として開始し;
ステップ−2:グループの各ペアの利得TGiGj=TGi+TGj−TGi∪Gjを計算し、ここで、G,G∈Goptであり;
GiGjを計算するために、統合クエリプランが、上記で説明したアルゴリズムに基づいて生成され;
ステップ−3:最大利得Tmax_gainを生成するグループのペアG’=G∪Gを見つけ;
ステップ−4:G’をGopt内に追加し、GoptからG及びGを削除し;
ステップ−5:Tmax_gain<0になるまで、ステップ−2からステップ−4を繰り返し;
ステップ−6:Goptを返す。
最初の反復は、最大マージ利益を有するグループのペアを得るのにO(n)を必要とすることに留意されたい。後続の反復は、先行のマージされたグループに新たなグループをマージすることの利益を計算するのにO(n)のみで動作する。なぜならば、各反復においては、1つの新たなグループしか生成されないからである。このため、このグループ化するアルゴリズムの時間複雑度はO(n)である。ここで、nは、グループ化されるMRジョブの数である。
C.例
複数のクエリをグループ化する例が図7に示されている。チャーン分析からの特徴生成のための3つのクエリがある。各クエリは、異なる述語を有する表cdrへの集約を実行する。1つの共通の述語は、友人(friend)が削除された(eliminated)表に存在しないということである。この述語は、マップ結合演算によって実行することができる。なぜならば、削除された表は、非常に小さく、この表を全てのマップに分配する方が効率的であるからである。このため、各クエリは、マップ関数が、全ての述語を有するフィルター演算子と、「NOT EXISTS(存在しない)」計算のマップ結合演算子と、部分的なグループ化(group by)演算子とから逐次的に構成されるMRジョブに変換される。
本発明者らの方法を用いて、クエリが単一のMRジョブにグループ化された場合、図7の右側に示すように、最適な統合クエリプランを取得することができる。そのようなグループ化を用いると、多くの冗長な計算を省くことができる。第1に、3つのマップ関数は同じ表cdrを読み出すので、この表のスキャンは1度しか行われない。第2に、統合クエリプランは、2つの共通の演算子と、「type in ('SMS', 'VOICE')」という共通の述語を有するフィルター演算子と、マップ結合演算子とを共有することができる。最後に、2つのグループ化演算子の結果は、最初のMRジョブのリデュース関数によって共有することができる。Q2のマップ出力は、これらのデータをR1及びR2の双方が用いることができることを意味するT12を用いてタグ付けされる一方、Q3のマップ出力は、T13を用いてタグ付けされる。Q1のマップ出力は、実際には、Q2及びQ3のマップ出力を組み合わせたものであり、このため、この出力を2回生成する必要はない。
アーキテクチャ
本発明者らの方法を有するSQL−on−Hadoopシステムのアーキテクチャが図8に示されている。クエリのバッチがシステムに発行され、マルチクエリ受信機81によってキャッシュされる。SQLパーサー82が、マルチクエリ受信機81とクエリプランナー83との間に接続されている。次に、クエリは、クエリプランナー83と、既存のシステムからのクエリオプティマイザー84とによって複数のMRジョブのDAGに変換及び最適化される。全てのクエリが変換及び最適化された後、それらのクエリからの全てのMRジョブは、複数クエリオプティマイザー85に送信される。この複数クエリオプティマイザーは、まず、本発明者らのモデルに基づいて、マップリデュースジョブグループ化86によってそれらのMRジョブをグループに分割し、次に、マルチクエリプランジェネレーター87によってクエリプランを再生成する。本発明者らの複数クエリオプティマイザーが受信したMRジョブは最適化されるので、実際にクエリプランの一部分であるマップ関数は、局所的に最適であるとみなされる。このため、最適なクエリプランを見つけるという本アルゴリズムの本発明者らの前提は正しい。最後に、新たなクエリプランは、クエリ実行器(例えば、Hadoop)88によって実行され、結果はクライアントに返される。
開示した方法は、マップリデュースジョブグループ化モジュールにおいて実施される。最初に、コストモデルがシステムに登録される。このコストモデルを他のコストモデルに取り替えることは容易である。次に、このモジュールは、本明細書に開示したアルゴリズムを用いて、ジョブをグループに分割し、それらのジョブを、マージされたジョブごとの最適な統合クエリプランを用いて幾つかのジョブにマージする。その結果、幾つかの演算子は、2つ以上の後続の演算子が共有することができ、これは、複数クエリ最適化を有しないクエリプランとは異なっている。

Claims (5)

  1. SQL−on−Hadoopシステムにおいて複数のマップリデュースジョブをグループ化及びマージすることによって複数のクエリを最適化して全体の計算時間を削減する方法であって、
    各マップ関数が関係演算子のDAG(Directed Acyclic Graph)として表されるクエリプランの一部分であることに基づいて、当該SQL−on−Hadoopシステムにおいて複数クエリ最適化の問題として、複数のマップリデュースジョブが与えられた場合に、当該複数のマップリデュースジョブをグループ化して最適なグループを見つけることを、各グループの中で最適な統合クエリプランを見つけながら行うことにより、当該複数のマップリデュースジョブの全体の計算時間を削減する、という問題を設定し、
    前記複数クエリ最適化の問題を解くために、グループ化技術を用いて、全てのクエリの前記計算時間を推定するコストモデルを作成して当該SQL−on−Hadoopシステムに登録し、
    当該SQL−on−Hadoopシステムにおいて、登録された前記コストモデルを基に、処理時間削減のための貪欲アルゴリズムを用いて、複数のマップリデュースジョブをグループ化して最適なグループを見つけることと、発見的アルゴリズムを用いて複数のマップリデュースジョブを単一のマップリデュースジョブにマージするときに、グループ化された各グループを処理するための複数の統合クエリプランを生成し、生成された統合クエリプランの中から、当該統合クエリプランの処理時間を計算しながら、計算された処理時間を基に最小処理時間を有する準最適な統合クエリプランを見つけること、とを実行して、複数のマップリデュースジョブの前記全体の計算時間の削減を図り
    前記複数のマップリデュースジョブをグループ化する貪欲アルゴリズムの実行は、
    各マップリデュースジョブを単一ジョブグループとして開始することと、
    最大の利益をもたらす、マージされるマップリデュースジョブのグループのペアを反復的に選択することと、
    いずれの2つのグループをマージすることによっても利益がないときは、前記反復的に選択することを停止してグループ化を終了することと、
    を含み、
    前記準最適な統合クエリプランを見つける発見的アルゴリズムの実行は、
    各マップ関数における前記クエリプランが局所的に最適であることに基づいて複数のクエリプランの統合のためのルールを作成することと、
    マップ関数の共有のより多くの機会を提供するように、フィルター演算子を独立した演算子に分割し、共通の演算子の順序を交換することによって、各クエリプランを等価なクエリプランに変換することと、
    前記統合のためのルールに基づいて、前記変換から取得されたクエリプランをマージすることによって、複数の統合クエリプランの候補を生成することと、
    生成された複数の統合クエリプランの中から最小処理時間を有する統合クエリプランの候補を前記準最適な統合クエリプランとして選択することと、
    を含む、方法。
  2. 前記複数クエリ最適化の問題は、各マップ関数が関係演算子のDAGであるマップリデュースジョブの集合が与えられた場合に、それらのマップリデュースジョブを、全てのマップリデュースジョブの全体の計算時間を最小にする最適なクエリプランを有するマップリデュースジョブにグループ化及びマージせよ、と定義される、請求項1に記載の方法。
  3. 当該SQL−on−Hadoopシステムにおけるマップリデュースジョブの計算の前記コストモデルに基づく前記計算時間の計算として、
    入力ファイルを読み出し、マップ関数を実行し、中間データを書き込み外部にソートするコストの加算として、各マップジョブの実行時間を計算することと、
    ネットワークを介してマップ出力を転送し、マップ出力を外部にソート/マージし、それらをリデュース関数に読み込むコストの加算として、各リデュースジョブの実行時間を計算することと、
    前記マップジョブの前記実行時間と前記リデュースジョブの前記実行時間との加算として各マップリデュースジョブの実行時間を計算することと、
    を含む、請求項1に記載の方法。
  4. 前記マップ関数を実行するコストは、各演算子の入力タプルの数を1つのタプルの処理時間に乗算したものによって推定される前記各演算子のオーバーヘッドを加算したものである、請求項3に記載の方法。
  5. 当該SQL−on−Hadoopシステムにおける前記複数のクエリプラン-の統合のためのルールは、
    複数のクエリプラン間に共通の演算子がない場合には、該複数のクエリプランを単純にマージすることによって統合クエリプランの候補を生成するルール1と、
    複数の共通の演算子がある場合には、該複数の共通の演算子間の順序を維持しつつ、共通の演算子のサブセット又は全てを共有することによって統合クエリプランの候補を生成するルール2と、
    を含む、請求項に記載の方法。
JP2017527675A 2014-12-01 2014-12-01 SQL−on−Hadoopシステムにおける複数クエリ最適化 Active JP6516110B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/082348 WO2016088281A1 (en) 2014-12-01 2014-12-01 Multiple query optimization in sql-on- hadoop systems

Publications (2)

Publication Number Publication Date
JP2017539012A JP2017539012A (ja) 2017-12-28
JP6516110B2 true JP6516110B2 (ja) 2019-05-22

Family

ID=56091252

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017527675A Active JP6516110B2 (ja) 2014-12-01 2014-12-01 SQL−on−Hadoopシステムにおける複数クエリ最適化

Country Status (3)

Country Link
US (1) US10572478B2 (ja)
JP (1) JP6516110B2 (ja)
WO (1) WO2016088281A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10025824B2 (en) * 2015-05-27 2018-07-17 International Business Machines Corporation Filter optimizer for data streams
US10073981B2 (en) * 2015-10-09 2018-09-11 Microsoft Technology Licensing, Llc Controlling secure processing of confidential data in untrusted devices
US10339330B2 (en) * 2015-12-31 2019-07-02 Neustar, Inc. Data aggregation system for enabling query operations on restricted data that originates from multiple independent multiple sources
CN107678790B (zh) 2016-07-29 2020-05-08 华为技术有限公司 流计算方法、装置及系统
US11120021B2 (en) * 2017-01-11 2021-09-14 Facebook, Inc. Systems and methods for optimizing queries
CN108874954A (zh) * 2018-06-04 2018-11-23 深圳市华傲数据技术有限公司 一种数据库查询的优化方法、介质及设备
CN109101468B (zh) * 2018-08-02 2020-07-03 浙江大学 一种文本数据转换脚本的执行优化方法
US11416490B2 (en) 2020-08-03 2022-08-16 International Business Machines Corporation Prioritization and optimization of database workloads
CN112347120B (zh) * 2020-10-27 2022-04-01 蜂助手股份有限公司 一种基于复杂sql的自动优化方法和装置
CN112507180B (zh) * 2020-12-11 2022-07-05 浙江中控技术股份有限公司 模拟机时间的转换方法、装置、电子设备及存储介质
US11741101B2 (en) 2020-12-15 2023-08-29 International Business Machines Corporation Estimating execution time for batch queries
CN113792067B (zh) * 2021-11-16 2022-02-11 全景智联(武汉)科技有限公司 一种基于递归算法的sql自动生成系统与方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8935232B2 (en) * 2010-06-04 2015-01-13 Yale University Query execution systems and methods
US9495427B2 (en) * 2010-06-04 2016-11-15 Yale University Processing of data using a database system in communication with a data processing framework
US9367601B2 (en) * 2012-03-26 2016-06-14 Duke University Cost-based optimization of configuration parameters and cluster sizing for hadoop
JP5936118B2 (ja) 2012-04-16 2016-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コード変換方法、プログラム及びシステム
US8984515B2 (en) * 2012-05-31 2015-03-17 International Business Machines Corporation System and method for shared execution of mixed data flows
US10242052B2 (en) * 2012-07-24 2019-03-26 Unisys Corporation Relational database tree engine implementing map-reduce query handling
US9152469B2 (en) * 2013-01-28 2015-10-06 Hewlett-Packard Development Company, L.P. Optimizing execution and resource usage in large scale computing
US9342557B2 (en) * 2013-03-13 2016-05-17 Cloudera, Inc. Low latency query engine for Apache Hadoop

Also Published As

Publication number Publication date
WO2016088281A1 (en) 2016-06-09
US20170316055A1 (en) 2017-11-02
JP2017539012A (ja) 2017-12-28
US10572478B2 (en) 2020-02-25

Similar Documents

Publication Publication Date Title
JP6516110B2 (ja) SQL−on−Hadoopシステムにおける複数クエリ最適化
US10521427B2 (en) Managing data queries
US9053210B2 (en) Graph query processing using plurality of engines
Zhang et al. EAGRE: Towards scalable I/O efficient SPARQL query evaluation on the cloud
Turkay et al. Progressive data science: Potential and challenges
CN103761080A (zh) 一种基于SQL的MapReduce作业生成方法及系统
Zhang et al. Towards efficient join processing over large RDF graph using mapreduce
Zeng et al. Redesign of the gStore system
CN104699698A (zh) 基于海量数据的图查询处理方法
Iglesias et al. Scaling up knowledge graph creation to large and heterogeneous data sources
Wang et al. Cleanix: A parallel big data cleaning system
CN111814458A (zh) 规则引擎系统优化方法、装置、计算机设备及存储介质
Hacígümüş et al. Odyssey: a multistore system for evolutionary analytics
Alotaibi et al. Property graph schema optimization for domain-specific knowledge graphs
Ordonez et al. An er-flow diagram for big data
Bala et al. Extracting-transforming-loading modeling approach for big data analytics
Gazzarri et al. Towards task-based parallelization for entity resolution
Leung et al. A high-performance parallel database architecture
Azzam et al. Towards making distributed rdf processing flinker
Chasialis et al. QFusor: A UDF Optimizer Plugin for SQL Databases
Pan et al. Parallelizing multiple group-by queries using MapReduce: optimization and cost estimation
Hagedorn et al. Conquering a Panda's weaker self-Fighting laziness with laziness.
Chen et al. Query grouping–based multi‐query optimization framework for interactive SQL query engines on Hadoop
Liu et al. An Abstract Description Method of Map‐Reduce‐Merge Using Haskell
Lee et al. Minimization of resource consumption for multidatabase query optimization

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180829

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181009

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190402

R150 Certificate of patent or registration of utility model

Ref document number: 6516110

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150