Hadoopはどのように動くのか ─並列・分散システム技術から読み解くHadoop処理系の設計と実装

第17回 Impalaの設計と実装[1]

この記事を読むのに必要な時間:およそ 2.5 分

はじめに

今回から3回に渡って,Hadoop上で動作するデータ処理ソフトウェアの1つであるApache Impala(incubating)(以下,Impala)について,以下の流れで説明していきます。

  • Impala概要(今回)
  • クエリ実行時の並列化の仕組み(第18回)
  • I/O処理における高速化の仕組み(第19回)

Impalaの特徴のすべてをお伝えできるわけではありませんが,Impalaの速度に対する取り組みについて参考になれば幸いです。

今回は,Impalaが開発されるに至った背景や特徴,および動作の概要までを紹介していきます。

Impala開発の背景

これまでの連載内でも触れられてきましたが,ImpalaはHadoop上でSQL(正確にはHive Query Language/HiveQL)を高速に処理するために開発された並列データ処理系です。Impala以前から,SQLを実行するHadoopのエコシステムとして,Apache Hive(以下,Hive)が存在していました。少し長くなりますが,Impalaが先行のHiveとは別に新規に開発された背景を説明していきます。

Hadoopは,バッチ処理をMapReduceで行う並列データ処理系(並列データ処理フレームワーク)として構築されました。本連載第7回でも述べられているように,MapReduceは非常に強力なフレームワークである一方,それを用いたアプリケーションの記述はJava言語を用いた手続き的な方法となり,必ずしも生産性が高くないため,処理を簡潔に記述するために,Apache Pig(以下,Pig)やHiveといった宣言的なクエリで問い合わせができるインターフェースが用いられてきました。特にHiveは,SQLに似たHiveQLでクエリを記述できることから人気が高まり,JDBC/ODBC経由でのアクセスなどが整備された結果,元々はリレーショナルデータベースやデータウェアハウス(DWH)に接続することを用途としたアプリケーションからも利用できるようになっていきました。

Hiveは,接続方法が整備されたことで,DWHにおける低レイテンシ指向の問い合わせを始めとした,バッチ以外のさまざまなワークロードの問い合わせを有するアプリケーションから接続されるようになりました。しかしながら,HiveひいてはMapReduceと,並列データベースに代表されるDWHで期待される特性は,本連載第14回で述べられているように異なります。DWHを想定したアプリケーションからの問い合わせをHiveにおいて処理する場合は,応答時間が長くなるだけでなく,タイムアウトなどの理由でアプリケーション側から強制終了され,実行が停止してしまうこともありました。

このような状況は期待する特性の齟齬によるものであったため,ImpalaはHiveの特性に合わないアドホックなSQL処理の要望に応えるべく,処理エンジンを含めて新規に開発されました。

Impalaの特長

一般に,Impalaの処理はHiveと比較して非常に高速です。しかし,ImpalaはHiveを置き替えるものではありません。本連載第8回の「ImpalaやPrestoの高速性の理由」でも述べられているように,Impalaは応答速度を重視するため,耐障害性について妥協している側面があります。そのため,バッチ処理としての高スループットを目指す用途ではHiveを用い,分析などのアドホッククエリに対して高速に応答を返す用途ではImpalaを用いる,というように使い分けることを想定しています。

上記のような背景で開発されたImpalaは,アドホッククエリに対応すべく,特に次の2つをはじめとするさまざまな特徴や特性を有しています。

  1. アドホッククエリに特化すべく,MapReduceやSparkなどの汎用エンジンを用いずに記述された並列SQL処理エンジン
  2. I/O先読みやランタイムコード生成をはじめとする種々の方式による高効率性

第18回ではおもに1. について,第19回ではおもに2. について,それぞれ説明していきます.今回はその準備として,続く説明でImpalaの基本的な構成と処理の流れについて紹介します。

著者プロフィール

矢野智聡(やのともあき)

日本オラクル株式会社を経て,2014年よりCloudera株式会社所属。Impala,HiveなどのSQLに関連するエコシステムを中心としてHadoopクラスタのサポートに従事。


山田浩之(やまだひろゆき)

日本アイ・ビー・エム株式会社を経て,ヤフー株式会社にて分散型全文検索エンジンの研究開発に従事。2008年上期未踏IT人材発掘・育成事業において高性能分散型検索エンジンの開発によりスーパークリエータに認定。現在は東京大学生産技術研究所にて高性能並列データ処理系の研究開発に従事。博士(情報理工学)。

著書に『検索エンジン自作入門』。

コメント

コメントの記入