Hadoop Conference Japan 2014 #hcj2014 でImpalaがPrestoより19倍速いという話をしてきた

タイトルとスライドの通りです。

Hadoop Conference Japan を運営された皆様、本当にお疲れさまでした。
また、私のセッションに参加して話を聞いていただいた皆様、ありがとうございました。

朝のキーノートで「使用しているコンポーネント」で Impala がランクインしていて実は結構驚きました。まだまだ普及していないと思っていましたけど、意外と使われているようでうれしいです。
(後 Hue がランクインしているのにも驚いた)

今回は他のSQLエンジンのセッションの間に挟まれての講演だったので、これは気を抜けないなと思い、結構頑張ってスライドを作りました。
やっぱり調べてみると Impala はとても面白くて、機能の細かい部分などを見て新たな発見もたくさんすることができました。

Impala が爆速なのは疑いようのない事実で、これをどう説明するか思案しましたが、結局 US で公開している以下のブログをベースに紹介することにしました。ブログを日本語訳にしてなかったのでちょうどよかったかなと。
http://blog.cloudera.com/blog/2014/05/new-sql-choices-in-the-apache-hadoop-ecosystem-why-impala-continues-to-lead/

ソースコードもあらためて読んでみると非常に楽しく、新たな発見がありました。
Impala のソースコードは、ヘッダファイル部分のコメントで仕様について非常に詳細に書かれていて、もう一つのドキュメントと言ってもいいぐらいです。

例えば simple-scheduler.h というヘッダファイルの一部は以下のようになっています。

// Performs simple scheduling by matching between a list of backends configured
// either from the statestore, or from a static list of addresses, and a list
// of target data locations.
//
// TODO: Notice when there are duplicate statestore registrations (IMPALA-23)
// TODO: Handle deltas from the statestore
class SimpleScheduler : public Scheduler {
 public:
  static const std::string IMPALA_MEMBERSHIP_TOPIC;

  // Initialize with a subscription manager that we can register with for updates to the
  // set of available backends.
  //  - backend_id - unique identifier for this Impala backend (usually a host:port)
  //  - backend_address - the address that this backend listens on
  SimpleScheduler(StatestoreSubscriber* subscriber, const std::string& backend_id,
      const TNetworkAddress& backend_address, Metrics* metrics, Webserver* webserver,
      ResourceBroker* resource_broker, RequestPoolService* request_pool_service);


また、今回のスライドはUSの開発チームのレビューを受けるために全て英語で作成しました。
全レビューが終わった段階で日本語に再翻訳しています。
実際に使用していないとはいえ、英語で40分セッション用のスライドを作るのは初めてで、結構大変なんじゃないかなと思ったのですが、実際には英語のドキュメントの文言をそのまま流用できるなどのメリットも多く、そんなに苦労はしませんでした。再翻訳の分時間はかかりましたが。


今回は40分という時間の関係上機能や性能を紹介するだけで終わってしまいましたが、実際の使い方などについてもわかったことがたくさんありますし、アーキテクチャの深い部分とか、パフォーマンスチューニングの方法など、かなりのネタを集めることができました。残念ながら今回ほとんど紹介できなかったので、またどこかの機会で是非紹介してみたいですね。