How to install Cloudera Impala (Beta) on Debian

Hiveより数倍、数十倍速いとの触れ込みに触発され、Cloudera Impalaに挑戦してみました。『Debianには入らないよ』と明記されているだけあって、一度は挫折記事を書き始めたりしつつ、忍耐と閃きで乗り切ったインストール記録になります。

とても良いネタなのでCDH3ユーザは早くコッチにおいでと手招きしておきたいと思います。



リンク集

お師匠さんの記事に綺麗にまとまっています。
  • 続)Cloudera Impala 情報 – Tech Blog
  • 続)Cloudera Impala 情報(2) – Tech Blog
  • 続)Cloudera Impala 情報(3) – Tech Blog


  • 環境

    Debian Squeezeで、CDH4.1.0 を利用しています。
    HiveのmetadataはMySQLで動いている前提です。


    失敗した手順

    様々な手順を試しましたが、結局、王道で成功しました。
    失敗した方法は詳細抜きで箇条書きしておきます。

  • WheezyのAPTを利用 → GCC4.7必須になるのでボツ
  • LLVM+CLANGをソースからコンパイル → 力足らずでImpalaのcmakeが通らない
  • RPMをalienでDEBに変換して利用 → 動くはずがない
  • SRPMのソースからコンパイル → 配布されてるソースとかなり違ってて上手くいかない

  • 成功した方法は、使うソフトウェアのバージョンを確実に合わせ、どうしてもSqueezeにないパッケージだけ単体でdebなどを持ってきて利用しました。ひたすらbash, cmake, c++ のソースを見ては修正していく作業でした。


    各種バージョンについて

    READMEに書かれているソフトウェア+各種ソースが必要になります。

    Impala

    github の最新を利用したので、0.1.1 とかじゃなくて 79bb70ef15 になります。

    自前で入れるモノ

    Thrift 0.7.0
    Thriftはパッケージに存在しないのでソースから入れる必要があります。

    LLVM + CLANG 3.0
    Squeezeだと 2.7 しかないので 3.0 を用意する必要があります。Wheezyのを利用したりソースからも入れてみましたがcmakeが通らないので、とある場所からdebを拝借しました。

    パッケージで入れるモノ

    README記載のものだけでは全然足りません。
    下記手順の apt-get install のところを参照してください。

    各種ソース

    hadoop-cdh や glog といったソースそのものが必要になります。
    今回はSRPMを解凍したら中に入ってたのでそのまま利用しましたが、せっかく探したので各URLを書いておきます。
    ただ、python-thrift だけはソースは存在しなかったので、thriftの方からコピることになります。

  • CDH4 Downloadable Tarballs
  • hadoop-2.0.0-cdh4.1.0
  • hive-0.9.0-cdh4.1.0
  • hbase-0.92.1-cdh4.1.0
  • mongoose-3.3
  • glog-0.3.1
  • gflags-1.5
  • gperftools-2.0
  • gtest-1.6.0
  • snappy-1.0.5
  • cyrus-sasl-2.1.23

  • それではここからインストール手順になります。


    基本パッケージ

    まずはThriftやImpalaに必要なパッケージをインストールします。
    あとで libstdc++6 だけWheezy用のdebを入れる場合、競合が起きるのでその前に実行します。


    Thriftのインストール

    リンク

  • Apache Thrift Installation Tutorial
  • Thriftのインストール – 超メモ帳(Web式)
  • [適用済み#THRIFT-664] Ruby extension fails to build with Ruby 1.9.1
  • [下記staticを削除したヒント] RVM+Ruby 1.9.2+Thrift 0.7.0 = RRT = Really Really Trashed!

  • インストール

    パッケージが無いのでソースから入れます。バージョンは古めですが0.7.0必須のようです。


    LLVM + CLANGのインストール

    リンク

  • How do I install LLVM/Clang 3.0?

  • インストール

    パッケージではなく、アーカイブで公開されていたので利用させてもらいました。


    Impalaのインストール

    リンク

  • [文字コードWARN対策] How to configure encoding in maven

  • インストール

    ソースの準備から。

    コンパイルを実行します。

    SRPMにしか入ってないスクリプトを使って、実行環境に配置します。


    Impala用の設定


    パッケージ用にアーカイブ

    Impala ClientやHadoop SLAVEサーバ群へのコピーや、あとでdebパッケージ作るようにアーカイブしておきます。


    運用

    SLAVEサーバへ設置

    Hadoop SLAVEサーバ全台に設置します。
    impala-shellを実行するクライアントサーバを別にする場合は、アーカイブ解凍だけでOKです。


    テストデータ作成

    hiveで作成します。
  • test_table には適当なデータが入っているテーブル名を指定します
  • TextFile形式は非圧縮でないとimpalaは動きません

  • Impalaでクエリを実行

    Metadata MySQLやimpaladに接続できるサーバで実行します。めんどければ適当なSLAVEサーバで。
  • 実行ユーザはなんでもよいです
  • host-of-impalad は、SLAVEのどれを選んでもよいです


  • 成功すると、MapReduceが一切走らずにレスポンスが返り、とても速いのがわかります。
    失敗する場合、/var/log/impala や /tmp/impala* を確認したり、impalad をforegroundで動かして修正していきます。

    次回は実際に利用した感触について触れていきたいと思います。