13:55 (7F 国際会議場) Introduction to Impala 〜Hadoop用のSQLエンジン〜
... Cloudera Impalaは、Hive同様のクエリ言語を使用して、より短時間でインタラクティブなクエリを実現するために開発された、Apacheライセンスのオープンソースソフトウェアです。本セッションではImpalaの概要を中心に紹介します。
- 川崎さんは今日はダウンしてしまったらしい、代打で小林さんが発表していました。
➤自己紹介
➤ Impala とは?
- Cloudera が開発した低レイテンシーの分析特化型クエリ実行基盤
- Google Dremel、F1などにインスパイアされている
- データサイエンティストが使用することを想定
→インタラクティブにデータにアクセスすることを想定のしている
*
- Hadoop 内部で直接実行できるSQLクエリエンジン
- 高いパフォーマンス
→JavaのかわりにC++ ( JVM 起動のオーバーヘッドがない) - LLVM の生成、MR に依存しない
➤ MR、Hive、そしてImpalaへ
- MR のおさらい
- 処理の並列化、耐障害性など
- 問題点
- Javaで書かなければならない、MRを組み合わせて処理を実現
→実装が難しい
- Javaで書かなければならない、MRを組み合わせて処理を実現
*
- MR を基盤としたツール群がそして生まれた
- Pig, Hive, Oozie, Mahout...
- 特に Hive
- SQL Like なMR用のクエリ言語
- スキーマの定義、個々のデータ二対するアクセス権限を設定したりできる
- 処理概要
- 問題点
- 高いレイテンシー
→小さいジョブを実行しても数十秒かかる(すぐに結果がほしいユーザーのニーズにはあわない)
↓ MR に依存しない、低レイテンシーの基盤を開発するモチベーションにつながった - Impala
➤ Impala のアーキテクチャ
- Hive との大きな違い
- Impala daemon ( Query Planner, Coordinator, Executor ), Statestore (メタデータ保持)
- クエリ実行の概要
- Hive と同一のクエリを実行できる(一部制限はある)
- メタデータを取得して実行計画をつくる→図解
- HBase と HDFS のデータをスキャンして Hash Join して集める
→深堀すると3つのフラグメントに分かれて担われている( coordinator, DN, Resion Server)
*
- メタデータの処理
- Hive のメタストアを利用
- ただし、一度 Impala を起動するとその後、メタストアは同期されない
*
- 実行エンジン
- C++, LLVM
*
- Statestore
- 中央のステートリポジトリ
- なくても Impala は動作する(キャッシュしているから)
*
- ユーザー視点からみる Impala
- HiveQL にならっている
- GA でDDL をサポートする予定
→現時点ではテーブルは Hive 側でつくっている状態 - 機能制限
→カスタムUDFはつくれない、Hashジョインしかサポートしていない
↓ - Join の順番 = From句に書いた順番に処理をする
- オプティマイザは GA 時に実装予定
➤ ImpalaとHive の比較
- デモ:Cloudera のVMを使用して
*
- Hive
- 耐障害性あり、高いレイテンシー
↓↑まったくの逆 - Impala
- 耐障害性なし、低レイテンシー
*
- 失敗したらすぐに投げ直しましょうという設計思想
→データサイエンティスト向けなので
*
- メモリ内で実行するクエリに対してはスピードアップを実感できる
*
- GA で実装予定の機能紹介
- JDBC ドライバ
- Trevni の採用、ファイルフォーマット
- DDL対応
- SQL パフォーマンスの最適化
*
- GA後
- UDF
- コストベースのオプティマイザ
➤ まとめ
- 開発の背景の説明
- データサイエンティストのためのツール(業務処理には向いていない)
- GA後も改善を続けます
- cloudera/impala · GitHub
➤ QA
- メモリにのらないものを遅くてもいいから実行するための機能はあるか
- メモリにのせることを前提としているのでメモリにのらないものは遅くなる
→swapしてしまう
*
- JDBC対応
- Client からのクエリを JDBC 経由で投げられるということ
*
- Impala のジョブ管理
- Hive は Hive、Impala は Impala が。独立している。
- 独立した Cluster をつくったほうがいいのか?
- 同時に流すのは少なくともいずれかのほうがいいと思う
*
- Planner, Coordinator は Java?
- Planner は Java→Hive のメタストアを使うため(構文解析も Hive のものを使用している)
*
- Hive との互換性
- Select 文
- 要確認との回答
*
- 並列で2つSelect文を投げたときの優先順位
- 要確認との回答
*
- Drill との比較
- 開発のプロセスがオープンでないという印象はあるがいかが?
- Drillはコミュニティオープンだと明言しているが。
- 開発が Cloudera 主体は事実
- しかし、Apacheプロジェクトに寄贈したいという気持ちはあると認識してもらえるとありがたい
✔ #hcj13w わたしのとった他のメモへのリンク
- #hcj13w Hadoop Conference Japan 2013 Winter 午前中 Keynote のメモ
- #hcj13w A会場 午後 (1) ”Hadoop’s Power to Transform Business Ted Dunning(MapR Technologies)” のメモ
- #hcj13w A会場 午後 (3) ”Hadoop上の多種多様な処理でPigの活きる道” のメモ
- #hcj13w A会場 午後 (4) ”スケーラブルなシステムのためのHBaseスキーマ設計” のメモ
- #hcj13w A会場 午後 (5) ”いかにしてHadoopにデータを集めるか” のメモ
- #hcj13w A会場 午後 (6) ”トラブルシューティングのために欲しかった、Hadoopがまるっと分かる可視化ツール” のメモ