Impalaとは?:Hadoop上で稼動するクエリエンジン|データ分析用語を解説

AUTHOR :   ギックス

本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)

使い慣れたSQLによるデータ操作環境をHadoopプラットフォーム上で手に入れる

本日は「Impala(インパラ)」という言葉を解説します。ImpalaはHadoopによる高速なビッグデータ処理をより簡単に利用する為の「Hadoop上で動作するソフトウェア」です。
以前の記事で「Hadoop(ハドゥープ)」とは、

  • 巨大データの取り扱いを目的とした分散処理のフレームワークである
  • 分散処理によってビッグデータを高速に処理することができる
  • Hadoopの利用者は自作したデータ処理のプログラムや他者が開発したツールプログラムをHadoop内に組み込んでビッグデータ処理を行う

と説明させていただきました。Hadoopの登場や広まりによってビッグデータ分析処理は劇的に効率化され、多くのデータ分析業務に携わるみなさんがその恩恵を受けています。
しかしここで、Hadoopを利用するユーザはさらに贅沢な要求をHadoopに対して抱き始めます。それは、

  1. Hadoopそのものはフレームワークにすぎないので、実際にデータを操作する場合は、Hadoop上で具体的なデータ操作を行う「Hadoopアプリケーション」を開発しなければならない。これが面倒くさい!
  2. 「データベースマネージメントシステム(DBMS)に、SQLを使ってデータを投入して検索する」、これと同じように「Hadoopに、SQLを使ってデータを投入して検索する」。これってできないのか?やりたいのに!
  3. ならば、上記2点を解決する「汎用的なHadoopアプリケーション」を誰かが作ってオープンソースで公開してくれたらみんな幸せなのに!

というモノでした。
そしてこれらを満たすために生まれたのがImpalaなのです。ImpalaはHadoopのオープンソースコントリビュータ(貢献者)であるCloudera社によって開発されました。Impalaは「Hadoopアプリケーション」としてHadoop上で稼動し、利用者に「クエリエンジン」の機能を提供します。またこの際の問い合わせにはSQLが利用可能です。Hadoop上でImpalaが稼動することにより、利用者はMySQLやPostgreSQL、Oracleなどに近い感覚でデータの操作を行う事ができます。その際にHadoopの分散処理機構が持つ高速なデータ処理機能が利用できることはいうまでもありません。

Apache Hiveとの違いは?

Hadoop上でSQLを扱うアプリケーションとしては「Apache Hive」が有名です。Impalaがプロジェクトして発足したのが2013年5月であるのに対して、HiveがFacebook社からApache Software Foundationに寄贈されたのが2008年12月ですから、Hiveは先行プロダクト、Impalaは後発プロダクトであるといえます。両者の違いをごく簡単に説明すると、

  • Hiveが内部の処理方法としてMapReduceを利用しているのに対して、Impalaは独自の分散処理方法を実装している
  • ImpalaはHive内部のMapReduce処理が不得意としている「リアルタイム処理」を補完することを目的の一つとしている
  • 状況に左右されるものの、Impalaの応答時間はHiveのそれよりも数倍~数十倍高速である
  • 現時点ではImpalaとHiveは駆逐関係にあるのではなく補完関係にある(例えば耐障害性を重視したバッチ処理にはHive,BIツール等からのインタラクティブなリアルタイム処理にはImpalaという使い分け)

という事が挙げられます。

関連記事:

データ分析用語:索引
 

SERVICE