#garagekidztweetz

id:garage-kid@76whizkidz のライフログ・ブログ!

法被を脱いで最終形態になった @shiumachi 氏が最強だった #hcj2014 Evolution of Impala - Hadoop 上の高速SQLエンジン、最新情報のメモ

スポンサーリンク

f:id:garage-kid:20140707215541p:plain

http://pixabay.com/en/the-elephant-cub-kenya-tsavo-274003/

Hadoop Confence Japan 2014 参加レポートエントリ、6発目は @shiumachi 氏による「Evolution of Impala」に参加してきました。

タイトルは半分釣りですが、本セッション開始早々、本当に @shiumachi 氏は今回のカンファレンスのユニフォーム的な法被*1を脱ぎ捨てて最終形態に変身してました(嘘じゃないっす!)。

そして内容もさることながら、いつもどおりのキレッキレのトーク、最強でした。

冗談はさておき実際、はじめて Impala が世に出たときにくらべると、格段によくなっているということを丁寧に説明されていました。
※手前味噌ながら、当時の Impala 紹介セミナーに参加したときのメモはこちら

すこしでも Impala に興味をもったら、O'Reilly Japan - Cloudera Impala をまずは読んで、はじめるなら今でしょということでした。

Hive, Presto との比較ベンチマークなどは必見だと思います。
※スライドが公開されたらこちらのエントリにも貼らせてもらおうと思います。

では、以降はわたしのメモです。

16:30- Evolution of Impala - Hadoop 上の高速SQLエンジン、最新情報 嶋内 翔氏(Cloudera)

* ハッピ脱いだ?!( Д ) ゚ ゚

Cloudera Impala とは?

  • Hadoop Cluster のための MPP SQL クエリエンジン
    • C++
    • OSS
  • Cloudera, MapR, Amazon がサポート
  • 現在のバージョンは 1.3.1
  • Impala は使うの超簡単

    • HDFS, HBase 上のデータに対して仮想的なビューとしてテーブルつくれる
    • ODBC, JDBC
    • Kerberos, LDAP 認証
  • Impala のアーキテクチャ

    • 分散サービス
    • impalad
      • データのある全てのノードで動作
      • どの impalad でもユーザからのクエリを受けれる
    • statestore
      • ステートリポジトリ
      • 簡単な死活監視
      • ソフトステート
        • 起動時にすべての impalad は statestore に登録する
    • catalogd
  • 実行のアーキテクチャは従前から改善されている
    • スライドが詳しい
  • クエリ計画
    • 2 フェーズプロセス
      • シングルノードプラン
    • 簡単な例: Coordinator fragment > Fragment1 > Fragment2
    • インメモリでの実行
    • データはストリームで送信される
      • Disk に書きだされることはない、ボトルネック事由にはならない
  • クエリ実行
    • LLVM
  • What's new?
    • 今は以下は全部ある
      • DDL
      • Join 最適化
      • 分散 Join
      • UDF
      • JDBC ドライバ

クエリ言語とユーザビリティ

  • metadata 管理
    • catalogd
      • DDL のあとに REFRESH や INVALIDATE METADATA をする必要はなくなった
  • UDF
    • 1.1, 1.2 から使えるようになった
    • C++
    • Hive UDF をポートする
    • python UDF は開発中
  • HBase 連携
    • Impala は HBase のテーブルにたいして select, insert が実行可能
    • 1 行 insert も可能

リソース管理

  • アドミッションコントロール (Impala 1.3 より)
    • 高速・軽量なリソース管理
    • リソースプールごとに最大並列実行数、キューの最大長、プールのメモリ総容量を設定可能
    • Cloudera Manager 連携
    • ソフトリミットに注意
      • statestore の heartbeat が 500ms 間隔
  • YARN と Llama
    • Llama
      • 低レイテンシーのクエリで用いるために粒度の粗い YARN のスケジューリングをよりキメ細かくする
      • Impala 1.4 で Production に
  • Apache Sentry
    • アクセス制御ができる
      • DB, table, view, column/row の粒度で

パフォーマンスと最適化

  • HDFS ショートサーキッドリード
    • ローカルディスクから読み込むときにDのプロトコルをバイパスする
  • HDFS キャッシング
    • メモリ常駐データへのゼロオーバーヘッドアクセス
  • Parquet
    • ぱーけー
    • Hadoop 用カラムナストレージ
    • 圧縮効率がいい
      • ストレージ効率がよくなる
      • スキャン効率
    • Twitter, Cloudera の共同開発
    • アーキテクチャ
      • スライドの図解が詳しい
  • Compute Stats
    • ETL 処理のおわりにかならず実行しよう
    • テーブルや列の統計情報収集
  • Impala benchmark
    • TPC-DS を実行
    • Shark, Hive, Presto と比較
      • これもスライドが詳しい
      • Impala は次点の Shark より 5 倍
      • 同時ユーザ処理に強い
        • Presto より 19 倍 (10ユーザ同時)
        • CPU 使用効率がいい
    • とある商用 DB との比較
  • Hadoop におけるスケーラビリティ
    • Impala においても担保できるか?
      • 結論だけ言うと、担保できる、という
    • EDW ワークロードにおける評価指標
      • レスポンスタイム
      • 並列度
      • データサイズ (データは大きめでなければ意味が無い 15TB vs 30TB で今回は実施)

ロードマップ

  • Impala 1.4
    • Limit なしの Order by
  • Impala 2.0
    • SQL 2003 support
    • 相関サブクエリ
    • Nested Data Type
    • ハッシュテーブルをディスクに書き出せるようになる

まとめ

  • 速いし、安定しているので使うなら、今でしょ?!
  • Impala 本よんじゃいなよ

QA.

Impala 単体での個別バージョンごとの性能の変化は?
  • 個別バージョンで性能はあがっているはずだが、やったことがないので具体的にお見せすることができない
UDTF は対応されるか?
  • Impala 2 系以降で対応されるのではないか

本セッションのメモは以上です。

あわせて読まれたい

#hcj2014 の個人参加レポート
各セッションの個人メモ

*1:今回の Hadoop Conference ではスピーカーのみなさん、お揃いの法被を着ていたのです