Apache Impala、同時実行時の速度において従来の分析データベースやSQL on Hadoopに圧勝

Tatsuo Kawasaki
Cloudera Japan Official Blog
14 min readApr 26, 2017

--

原文:http://blog.cloudera.com/blog/2017/04/apache-impala-leads-traditional-analytic-database-april-25th/

原著者: Greg Rahn, Mostafa Mokhtar

TPC-DSベースの性能ベンチマークは、従来の分析データベース(Greenplum)と比べ、特に複数ユーザによる同時ワークロードにおいて Impalaの方が優れていることを示しています。 また、今までと同様に、Hive LLAP、Spark SQL、PrestoのようなSQL-on-Hadoopエンジンと比べ、大幅に性能が勝っていることを証明しています。

この1年は、Apache Impala (incubating) にとって最大の変化がありました。チームは、延々と拡大し続ける利用規模への対応と安定性の向上に取り組んできただけではなく、高性能なBIとSQL分析のオープンスタンダードとしてのImpalaの地位をさらに強固なものにしていくべく、数々のユニークな機能を追加しました。クラウド環境やハイブリッド環境に対応すべく、Impalaはクラウド固有の弾力性と柔軟性を提供するだけではなく、Amazon S3オブジェクトストアから直接読み書きできるようになりました(今後は追加のオブジェクトストアも予定しています)。GA(Generally Available)されたApache Kuduを利用すれば、ユーザーはImpalaを使うことで、データが取り込まれたタイミング、あるいは更新されたタイミングで即座に高速な分析を実行できます。また、Navigator Optimizerを利用すれば、従来の分析データベースやデータウェアハウスの上で動作していた既存のBIワークロードを、Impalaで構築されたClouderaの分析データベースに簡単に移行することができ、パフォーマンスを最適化することも簡単になります。そして、当然ながら、並行性の向上によるパフォーマンスの改善も、この一年においても最優先事項でした。

こうした機能改善に加え、柔軟性、スケーラビリティ、そしてSQLのみならず、データサイエンスと機械学習、そして業務バッチ処理のような非SQLワークロードの両方をサポートするオープンアーキテクチャを必要とするために、従来の分析データベースではなくClouderaの最新の分析データベースを求める企業(例えばNYSEQuest Diagnosticsのような企業)がますます増加するにつれ、Impalaの採用は増え続けています。このような企業では、これらの主要な要件を満たすだけでなく、従来の分析データベースのようなインタラクティブな性能を発揮するシステムを必要としました。

このベンチマークでは、変更されていないTPC-DSクエリを使用して、Clouderaの最新のImpalaでの分析データベースと従来の分析データベース(Greenplum)のマルチユーザーのパフォーマンスを比較しました。 また、両方の分析データベースが、SQL-on-Hadoopエンジン、Hive with LLAP、Spark SQL、およびPrestoとどのように比較されるのかについても調べました。 全体として、以下のようなことがわかりました:

  • Impalaは従来の分析データベースと比較してパフォーマンスをリードしています。高い同時実行性のワークロードでは8倍以上の良好なパフォーマンスです
  • 分析データベースおよび他のSQL-on-Hadoopエンジンとのパフォーマンスには大きな差があり、Impalaはマルチユーザーワークロードでは22倍近く高速です
  • これらの他のSQL-on-Hadoopエンジンは、分析データベースと比較するための大規模なベンチマークを完了することもできなかったため、簡略化した小規模なベンチマークが必要でした(依然としてHiveは修正が必要で、Prestoはマルチユーザーテストを完了できませんでした)

詳細については下記をご覧ください。

比較セット

分析データベース(変更していないクエリで、10TBおよび1TB規模でテスト)

  • CDH5.10のImpala 2.8
  • Green plum DataBase 4.3.9.1

SQL-on-Hadoopエンジン(Hive用にいくつかのクエリを変更し、1TB規模でテスト)

  • Spark SQL 2.1
  • Presto 0.160
  • Hive 2.1 with LLAP from HDP 2.5

構成

それぞれ以下のスペックの7台のワーカーノードで構成されたクラスタ:

  • CPU:2 x E5–2698 v4 @ 2.20GHz
  • ストレージ:8 x 2TB HDD
  • メモリ:256GB RAM

同一のハードウェアで構成された3つのクラスタ。1つがImpala、Spark、Presto用(CDHで実行)、1つがGreenplum用、もう一つがHive with LLAP用(HDPで実行)。各クラスタには同一のTPC-DSデータをロードしています。ImpalaとSpark用にはParquet / Snappy、HiveとPresto用にはORCFile/Zlib、GreenplumにはQuickLZ圧縮で独自の内部カラムナフォーマットを使用しました。

クエリ

ワークロード:

  • データ:TPC-DS 10TBおよび1TBスケールファクタ
  • クエリ:TPC-DS v2.4クエリテンプレート(TPC-DSの仕様を超えて変更していない)

(Hiveを除いて)すべてのエンジンがTPC-DS仕様に変更を加えずにクエリを実行できるように、すべてのエンジンでサポートされている77のクエリを実行しました(注1)。 22個の除外したクエリは、次のあまり一般的でないSQLの機能を使用しています。

  • ROLLUPを使用している11件のクエリ(このテストでは使用していない変形をTPC-DSは許容しています)
  • INTERSECTEXCEPTを使用している3つのクエリ
  • 高度なサブクエリ配置のある8つのクエリ(HAVING句でのサブクエリなど)

Hiveのサブクエリ配置の大きな制限により、意味的に同等のクエリを作成するためのいくつかの変更を余儀なくされました。これらの変更されたクエリはHiveのためだけに実行しました。

Greenplum、Presto、およびSpark SQLは、変更されていないすべてのクエリをサポートすると主張していますが、Spark SQLとPrestoは並行性がなくても10TB規模で99のクエリを正常に完了できませんでした。 Greenplumは、マルチユーザの並行性が増えるに従いクエリの失敗が増えています(詳細は後述)。

興味のある方は、Impalaで99のクエリをすべて実行するための、追加の22個のクエリの変更に関する過去のブログと、公開されたTPC-DSベースのキットを参照してください。

分析データベースのベンチマーク結果: 10TB規模の Impala vs Greenplum

ImpalaとGreenplumでは、修正していない77個の共通のTPC-DSクエリを使用して、10TBスケールでテストしました。シングルユーザーのテストと、2人、4人、8人の同時ストリームを比較する、より現実的なマルチユーザーテストの両方を実行しました。 要約すると、

  • 全体的に、Impalaはシングルユーザーとマルチユーザーの並行性テストの両方でGreenplumより優れています
  • Impalaは、同時実行性が2倍速から8.3倍優れているとともに、Greenplumよりもはるかに高い成功率を維持しながらより優れたスケーラビリティを実現しています

シングルユーザーテストでは、クエリ全体の幾何平均を比較した時に、ImpalaがGreenplumをは2.8倍、クエリストリームを完了する合計時間を1.8倍短縮しました。

マルチユーザースループットの比較では、TPC-DSのdsqgenツールを使用して同時クエリストリームを生成し、77個の変更されていない同じクエリを実行しました。 各クエリストリームは、ランダムな順序の共通の77のクエリから構成され、各ストリームは異なるクエリの置換値を使用しました。 私たちは複数のテストを実行し、同時実行性の各レベルにおいて、システムが飽和するポイントを超えるクエリストリームの数を増やし、その後のすべてのクエリでスループットを測定しました。

下記の図に示すように、Impalaのパフォーマンスは、2つのストリームで2倍、8つのストリームで8.3倍、Greenplumと比べて並行性が向上しています。

両方のシステムで、データセットのサイズと並行性と比較して適度なサイズのクラスターが与えられた場合、並行性が高まるにつれていくつかのクエリの失敗が予想されていました。 ImpalaとGreenplumの両方が2つのストリームテストで100%の成功率を達成しています。 4つと8つのストリームテストでは、Impalaの平均成功率は97%でしたが、Greenplumは50%の成功率でした。 これらのテストが7ノードクラスタより大きなクラスタで実行された場合、両方のシステムで成功率が向上することが期待されます。

分析データベース vs SQL-on-Hadoopエンジン:1TBベンチマーク

同じ77のクエリと10TBスケールファクタのベンチマークを使用して追加のSQL-on-Hadoopエンジンで試みましたが、Hive、Presto、およびSpark SQLは、シングルユーザの結果でさえ77の変更されていないクエリの多くをすべて正常に完了することができなかったため、10TBでの比較を実行することはできませんでした。

したがって、1TBスケールで別の比較を実行して、分析データベースエンジンと残りのSQL-on-Hadoopエンジンを比較しました。Hive以外のすべてのエンジンで同じ77のTPC-DSクエリを使用しました。Hiveには、解析に失敗するサブクエリを処理する際の制限を回避するためにいくつかの修正が必要でした。

他のSQL-on-Hadoopエンジンが参加するために必要なこの単純化した基準を使用して、5つのエンジンすべてでシングルユーザーテストと、より現実的なマルチユーザーテストの両方を実行しました。要約すると、

  • 分析データベースであるImpalaとGreenplumは、すべての同時実行レベルですべてのSQL-on-Hadoopエンジンを上回っています。
  • Impalaは、並行性が8.5倍ー21.6倍に向上することでパフォーマンスをリードしていることが見て取れます。
  • Prestoは、シングルユーザーのテストではすべてのエンジンの中で最も低いパフォーマンスを示し、マルチユーザーのテストを完了することさえできませんでした。

以下のシングルユーザーのテストでは、幾何平均を比較するとImpalaがパフォーマンスのリードを維持しますが、Greenplumの合計時間はわずかです。両方の分析データベースは他のエンジンよりも大幅に優れています。Impalaは、他のSQL-on-Hadoopエンジンよりも幾何平均で3.6倍から13倍、合計時間で2.8倍から8.3倍凌駕しています。

Prestoは、フィルタ、グループ化、および集計を使用した単純なテーブルスキャンを超える一般的なSQLのクエリで苦労しています。これらの非常に単純な種類のクエリではSpark SQLのような多くの処理を実行する傾向がありますが、上記に示したように、結合を含んだより標準的なクエリを活用する多くの典型的なBIクエリに対しては、SQL-on-Hadoop群での最も悪い結果を示しています。

上記の10TB分析データベースの比較と同様に、TPC-DS dsqgenを使用してランダム化したクエリストリームを生成することで、より代表的なマルチユーザ比較テストを4,8および16の同時ストリームで実行しました。Prestoを除くすべてのエンジンは、1TBスケールにおいて3つ(4,8,16同時ストリーム)のすべての並行性レベルでクエリが失敗することなくストリームを完了することができました。 4つの同時クエリを実行している場合でさえ、Prestoはメモリ不足のエラーでほとんどのクエリに失敗しています。

マルチユーザーの同時実行性テストを正常に完了したエンジンでは、分析データベース群とSQL-on-Hadoop群のパフォーマンスの差がさらに顕著になります。 ImpalaはGreenplumよりも1.3倍〜2.8倍高速であるだけでなく、Spark SQLと比較してさらに大きな差異(6.5倍〜21.6倍高速)Hiveと比較して8.5倍〜19.9倍高速でした。

結論

企業は、BI / SQLの重要な分析に必要なインタラクティブなマルチユーザーのパフォーマンスを犠牲にすることなく、組織はアーキテクチャの近代化を目指しています。 Clouderaのプラットフォームの一部として、Impalaは、最新の分析データベースを提供することができます。Impalaは、設計上、先行モデリングなしに、より多様なデータやユースケースをサポートする柔軟性を備えています。オンプレミスとクラウドの両方で、オンデマンドで弾力的かつコスト効率の高い拡張が可能です。この共有プラットフォームの一部として、同じデータをSQLの分析だけでなく、他のチームやワークロードでも利用できます。さらに、上記のベンチマークの結果からわかるように、Impalaは従来の分析データベースと比較して優れたパフォーマンスを発揮することに加え、これらのすべてを提供しています。

分析データベース群(Impala、Greenplum)とSQL-on-Hadoop群(Hive、Presto、Spark)の違いは、全体的なパフォーマンスおよび大規模での同時実行性の両方で顕著になります。これらの他のSQL-on-Hadoopエンジンは、分析データベース・ワークロードの要件を満たすことができませんが、他のワークロードにとって価値がないわけではありません。実際、Clouderaの大部分の顧客は、プラットフォームのオープンアーキテクチャを活用して、Hiveでデータを準備し、Sparkでモデルを構築、テストし、BIを実行し、Impalaでレポートを作成しています。

BIの経験にインテリジェンスと自動化を追加し、クラウドのサポートを継続し、マルチテナントとスケーラビリティをさらに向上させることを含む、Impalaを中心とした最新の分析データベースの重要な進歩を今後も引き続き推進します。詳細はブログをご覧ください。

また、いつものように、オープンベンチマークツールキットに基づいて独自のベンチマークを実行することで、これらの結果を個別に検証することをお勧めします。

Greg Rahnは、ImpalaチームのClouderaのプロダクトマネジメントディレクターです。Mostafa Mokhtarは、Impalaチームで働いているClouderaのソフトウェアエンジニアです。

注1: 1, 2, 3, 4, 6, 7, 11, 12, 13, 15, 16, 17, 19, 20, 21, 25, 26, 28, 29, 30, 31, 32, 33, 34, 37, 39, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 71, 73, 74, 75, 76, 78, 79, 81, 82, 83, 84, 85, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99

--

--