本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)
使い慣れたSQLによるデータ操作環境をHadoopプラットフォーム上で手に入れる
本日は「Impala(インパラ)」という言葉を解説します。ImpalaはHadoopによる高速なビッグデータ処理をより簡単に利用する為の「Hadoop上で動作するソフトウェア」です。
以前の記事で「Hadoop(ハドゥープ)」とは、
- 巨大データの取り扱いを目的とした分散処理のフレームワークである
- 分散処理によってビッグデータを高速に処理することができる
- Hadoopの利用者は自作したデータ処理のプログラムや他者が開発したツールプログラムをHadoop内に組み込んでビッグデータ処理を行う
と説明させていただきました。Hadoopの登場や広まりによってビッグデータ分析処理は劇的に効率化され、多くのデータ分析業務に携わるみなさんがその恩恵を受けています。
しかしここで、Hadoopを利用するユーザはさらに贅沢な要求をHadoopに対して抱き始めます。それは、
- Hadoopそのものはフレームワークにすぎないので、実際にデータを操作する場合は、Hadoop上で具体的なデータ操作を行う「Hadoopアプリケーション」を開発しなければならない。これが面倒くさい!
- 「データベースマネージメントシステム(DBMS)に、SQLを使ってデータを投入して検索する」、これと同じように「Hadoopに、SQLを使ってデータを投入して検索する」。これってできないのか?やりたいのに!
- ならば、上記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という使い分け)
という事が挙げられます。
関連記事:
- Hadoop(ハドゥープ)とは?
- Hiveとは?
- SQLとは?
- MapReduceとHadoopの違い(1)
- MapReduceとHadoopの違い(2)
- Impalaとは? (本稿)