Hadoop MapReduce+HiveとImpalaのそれぞれの場合について、ベンチマークした結果を表2と表3に示します。平均処理時間は5回測定した平均値です。
Hadoop MapReduce+Hiveで最も高速に処理できたのは、Snappyで圧縮されたRCFileの場合で約164秒でした。一方、Impalaで最も高速に処理できたのは、Gzipで圧縮されたSequenceFileの場合で約20秒でした。つまり、最も処理時間が短い組み合わせ同士を比較すると、ImpalaはHadoop MaReduce+Hiveよりも8倍以上も高速に処理できました。
今回、ClouderaからリリースされたImpalaとHadoop MapReduce+Hiveの性能比較を行いました。
HiBenchというベンチマークツールを使用し、15台のクラスタ構成でSELECTクエリの処理時間でベンチマークした結果、Impalaは、まだβ版である現段階でもHadoop MapReduce+Hiveよりも8倍高速にクエリを処理できることが分かりました。
今後、CDH5にパッケージングされる見込みのImpalaの正式版では、Hiveストレージフォーマットとして、カラム指向の「Trevni」や「RCFile」がサポートされる予定です*7。そのため、今回のベンチマーク結果よりもさらに高速に処理できることが期待できます。
一方、手動によるアドホックなクエリを実行する分には、現状のβ版でも十分に利用できますので、もし現状のHadoop MapReduce+Hiveの処理時間が業務遂行上のボトルネックとなっているのであれば、利用を検討する価値はあるかもしれません。
ただし、高速な処理性能を維持する点では注意が必要です。
今回の検証では、1億レコードのテーブルを利用してベンチマークを行いましたが、実はHiBenchのデフォルト設定で生成される10億レコードのテーブルを利用したベンチマークも少しだけ試しました。そのベンチマークではスワップ処理が頻発したため、ImpalaはHadoop MapReduce+Hiveよりも2倍程度しか高速に処理できませんでした。
このことから、テーブルのレコード数が増えれば、もっと差が縮まると予想されます。つまり、高速な処理性能を安定して維持するためには、処理対象となるデータ量に応じてクラスタを設計・構築する必要があるといえます。
*7 本稿*1を参照。
Copyright © ITmedia, Inc. All Rights Reserved.