Your SlideShare is downloading. ×
0
Introduction to Impala~Hadoop用のSQLエンジン~Cloudera株式会社 カスタマーオペレーションズエンジニア小林大輔2013 1月21日
• 小林 大輔 (@daisukebe_)• Cloudera株式会社• カスタマーオペレーションズエンジニアとして  テクニカルサポート業務を担当• email: daisuke@cloudera.com
Agenda•   Impala•   MapReduce, Hive, そしてImpalaへ•   Impalaのアーキテクチャ•   ImpalaとHiveの比較(デモあり)
Agenda•   Impala•   MapReduce, Hive, そしてImpalaへ•   Impalaのアーキテクチャ•   ImpalaとHiveの比較(デモあり)
Impalaとは• Clouderaが開発した、低レイテンシ・分析特化型クエリ  実行基盤• Apacheライセンス(オープンソース)• Google Dremel, Google F1などにインスパイアされて開発  された  • 開発チームの...
Impalaとは(技術的な観点から)• Hadoop内部で直接実行されるSQLクエリエンジ  ン • Hadoopで広く使われているファイルフォーマットを読み込み • HDFS/HBaseとやり取り • Hadoopと同じノードで実行• 高パフ...
Agenda•   Impala•   MapReduce, Hive, そしてImpalaへ•   Impalaのアーキテクチャ•   ImpalaとHiveの比較(デモあり)
MapReduce• 分散バッチ処理システム• MapReduceが提供するもの  •   処理の並列化  •   耐障害性  •   ジョブ監視のための基盤  •   開発者のための抽象化されたインタフェース(map + reduce)
MapReduce      (1)• 分散処理が簡単になったとはいえ、それでも処理の実装  はかなり大変• Java で書かなければいけない• 現実には複数のMapReduceを組み合わせて一つの処理を  実現するため、設計が難しい  Map...
MapReduce         Hive           Oozie   Pig                          Mahout                MapReduce
Apache Hive• SQLライクなMapReduce用クエリ言語• メタデータを保持することで、テーブルスキーマや個々  のデータに対するアクセス権なども設定可能• ユーザー数が多く、多数のBI/DWHベンダーがHiveからの  アクセス...
HiveのアーキテクチャHiveQL とインタフェース                                           メタデータとスケジューラ      SQL App                    Hive   ...
HiveのアーキテクチャHiveQL とインタフェース                                           メタデータとスケジューラ      SQL App                    Hive   ...
HiveのアーキテクチャHiveQL とインタフェース                                           メタデータとスケジューラ   通常のMapReduceフレームワークを    SQL App      ...
MapReduce       (2)• 高レイテンシ  • 小さいジョブを実行しても数十秒かかる  • 数十分単位で処理時間がかかることもよくある• すぐに結果がほしいユーザーのニーズに合わない MapReduceに依存しない、低レイテンシ処...
Agenda•   Impala•   MapReduce, Hive, そしてImpalaへ•   Impalaのアーキテクチャ•   ImpalaとHiveの比較(デモあり)
ImpalaのアーキテクチャHiveQL とインタフェース                          メタデータとスケジューラ   SQL App                  Hive                       ...
ImpalaのアーキテクチャHiveQL とインタフェース                          メタデータとスケジューラ   SQL App                  Hive                       ...
ImpalaのアーキテクチャHiveQL とインタフェース                          メタデータとスケジューラ   SQL App                  Hive                       ...
Impalaのアーキテクチャ: クエリ実行ODBC/BeeswaxのThrift API経由でSQLリクエストを受信    SQL App                      Hive と同じクエリをそのまま投げる            ...
ImpalaのアーキテクチャHiveQL とインタフェース                          メタデータとスケジューラ   SQL App                  Hive                       ...
Impalaのアーキテクチャ● 例: Join(結合)とAggregation(集計)のクエリ        SELECT state, SUM(revenue)        FROM HdfsTbl h JOIN HbaseTbl b ON...
Impalaのアーキテクチャ:クエリの実行コーディネーターはリモートのImpalaデーモンと協調し、 各フラグメントの実行を開始    SQL App                Hive                         メタ...
Impalaのアーキテクチャ:クエリ実行   SQL App                  Hive                           メタスト          HDFS NN    Statestore    ODBC...
Impalaのアーキテクチャ:クエリ実行Impalaデーモン間に中間結果が渡され、クエリ結果はクライアントへ  返される   SQL App                  Hive                           メタス...
Impalaのアーキテクチャメタデータの処理:• Hiveのメタストアを利用• メタデータのキャッシュ: 一度Impalaを起動すると、メタストアは 再度同期されない(再起動が必要)• ベータ版: Impalaデーモンは、起動時にメタストアのメ...
Impalaのアーキテクチャ実行エンジン• C++で開発 • LLVMによるコード生成 • すべての式をインライン化することで、高速化を図   る
ImpalaのアーキテクチャStatestore• 中央のステートリポジトリ • ネームサービス(メンバーシップ) • GA: メタデータ • GA:ほかの関連スケジュールまたは診断ステート• ソフトステート • Statestoreがなくても...
ユーザー視点でのImpala: SQL• SQL サポート:  • SQLのHiveバージョンにならって開発  • 現時点では一部のDMLのサポートのみ(SELECT, INSERT)  • GA: DDLのサポート (CREATE, ALTE...
Agenda•   Impala•   Hadoop, Hive, そしてImpalaへ•   Impalaのアーキテクチャ•   ImpalaとHiveの比較(デモあり)
デモ: Hive vs Impala • Cloudera Demo VM • 新ベンチマークTPC-DS データセット~500MB • クエリの内容: 複数データの結合(joins)   集計(aggregate)、並べ替え(order by...
ImpalaとHiveの比較• Hive: MapReduce   •   高レイテンシ   •   MapReduceのオンディスクチェックポイントに   •   MapReduceによる耐障害性モデル   •   柔軟なファイルフォーマット...
ImpalaとHiveの比較• HiveよりImpalaのパフォーマンスが優れている点:  • Impalaは完全なディスクスループットを取得 (~100MB/sec/disk);    I/Oバウンドのワークロードの3〜4倍速い  • Hiv...
GAで実装予定の機能の紹介• JDBCドライバ対応• ファイルフォーマットとして、Trevniの採用• DDL対応• SQLパフォーマンスの最適化    http://blog.cloudera.com/blog/2012/12/whats-n...
GA後、実装予定の機能紹介• UDFによる拡張• コストベース・オプティマイザの搭載• ディスクを使用した外部結合    http://blog.cloudera.com/blog/2012/12/whats-next-for-        ...
• Impalaの概要、開発のモチベーション、アーキテクチャ について紹介しました• Impalaは、データサイエンティストのためのツールです• バッチ処理や、業務処理には向きません• GA、GA後も、多くの改良を進めていきます
Impalaを試してみる!• ベータ版は2012年10月24日から入手可能• 2013年Q1にはGA版が公開される予定•      や             impala-user@cloudera.org• https://github.c...
ご清聴ありがとうございました。       CONFIDENTIAL - RESTRICTED
Introduction to Impala ~Hadoop用のSQLエンジン~ #hcj13w
Upcoming SlideShare
Loading in...5
×

Introduction to Impala ~Hadoop用のSQLエンジン~ #hcj13w

4,171

Published on

Hadoop Conference Japan 2013 Winter で発表した、Impala の概要についての資料です。

Transcript of "Introduction to Impala ~Hadoop用のSQLエンジン~ #hcj13w"

  1. 1. Introduction to Impala~Hadoop用のSQLエンジン~Cloudera株式会社 カスタマーオペレーションズエンジニア小林大輔2013 1月21日
  2. 2. • 小林 大輔 (@daisukebe_)• Cloudera株式会社• カスタマーオペレーションズエンジニアとして テクニカルサポート業務を担当• email: daisuke@cloudera.com
  3. 3. Agenda• Impala• MapReduce, Hive, そしてImpalaへ• Impalaのアーキテクチャ• ImpalaとHiveの比較(デモあり)
  4. 4. Agenda• Impala• MapReduce, Hive, そしてImpalaへ• Impalaのアーキテクチャ• ImpalaとHiveの比較(デモあり)
  5. 5. Impalaとは• Clouderaが開発した、低レイテンシ・分析特化型クエリ 実行基盤• Apacheライセンス(オープンソース)• Google Dremel, Google F1などにインスパイアされて開発 された • 開発チームのMarcel Kornackerは、Google F1の元開発エンジニア• データサイエンティストが使うことを想定して いる • あれこれと試行錯誤するときに、すぐに結果がほしいケース
  6. 6. Impalaとは(技術的な観点から)• Hadoop内部で直接実行されるSQLクエリエンジ ン • Hadoopで広く使われているファイルフォーマットを読み込み • HDFS/HBaseとやり取り • Hadoopと同じノードで実行• 高パフォーマンス: • Javaの代わりにC++で開発 • ランタイムコードの生成(LLVM) • 新しい実行エンジンは、MapReduceに依存しない
  7. 7. Agenda• Impala• MapReduce, Hive, そしてImpalaへ• Impalaのアーキテクチャ• ImpalaとHiveの比較(デモあり)
  8. 8. MapReduce• 分散バッチ処理システム• MapReduceが提供するもの • 処理の並列化 • 耐障害性 • ジョブ監視のための基盤 • 開発者のための抽象化されたインタフェース(map + reduce)
  9. 9. MapReduce (1)• 分散処理が簡単になったとはいえ、それでも処理の実装 はかなり大変• Java で書かなければいけない• 現実には複数のMapReduceを組み合わせて一つの処理を 実現するため、設計が難しい MapReduceを基盤としたスクリプト言語・ 上位アプリケーション開発のモチーベーション となった
  10. 10. MapReduce Hive Oozie Pig Mahout MapReduce
  11. 11. Apache Hive• SQLライクなMapReduce用クエリ言語• メタデータを保持することで、テーブルスキーマや個々 のデータに対するアクセス権なども設定可能• ユーザー数が多く、多数のBI/DWHベンダーがHiveからの アクセスをサポートするようになった
  12. 12. HiveのアーキテクチャHiveQL とインタフェース メタデータとスケジューラ SQL App Hive Metastore YARN MRv1 HDFS NN Compiler Query Exec EngineMapReduce Slave MapReduce Slave MapReduce Slave(Container or TT) (Container or TT) (Container or TT)HDFS DN HBase HDFS DN HBase HDFS DN HBase
  13. 13. HiveのアーキテクチャHiveQL とインタフェース メタデータとスケジューラ SQL App Hive Metastore YARN MRv1 HDFS NN Compiler Query Exec Engine クエリを解析し、 メタストアにアクセスして必要な情報を集め、 MapReduce ジョブとして実行計画を作成するMapReduce Slave MapReduce Slave MapReduce Slave(Container or TT) (Container or TT) (Container or TT)HDFS DN HBase HDFS DN HBase HDFS DN HBase
  14. 14. HiveのアーキテクチャHiveQL とインタフェース メタデータとスケジューラ 通常のMapReduceフレームワークを SQL App Hive 用いてジョブを実行していく Metastore YARN MRv1 HDFS NN Compiler Query Exec EngineMapReduce Slave MapReduce Slave MapReduce Slave(Container or TT) (Container or TT) (Container or TT)HDFS DN HBase HDFS DN HBase HDFS DN HBase
  15. 15. MapReduce (2)• 高レイテンシ • 小さいジョブを実行しても数十秒かかる • 数十分単位で処理時間がかかることもよくある• すぐに結果がほしいユーザーのニーズに合わない MapReduceに依存しない、低レイテンシ処理の ための基盤を開発するモチベーションとなった
  16. 16. Agenda• Impala• MapReduce, Hive, そしてImpalaへ• Impalaのアーキテクチャ• ImpalaとHiveの比較(デモあり)
  17. 17. ImpalaのアーキテクチャHiveQL とインタフェース メタデータとスケジューラ SQL App Hive メタスト HDFS NN Statestore ODBC ア Query Planner Query Planner Query Planner Query Coordinator Query Coordinator Query Coordinator Query Executor Query Executor Query Executor HDFS DN HBase HDFS DN HBase HDFS DN HBase ローカルダイレクト読み込み
  18. 18. ImpalaのアーキテクチャHiveQL とインタフェース メタデータとスケジューラ SQL App Hive メタスト HDFS NN Statestore ODBC ア Query Planner Query Planner Query Planner Query Coordinator Query Coordinator Query Coordinator Query Executor Query Executor Query Executor HDFS DN HBase HDFS DN HBase HDFS DN HBase ローカルダイレクト読み込み
  19. 19. ImpalaのアーキテクチャHiveQL とインタフェース メタデータとスケジューラ SQL App Hive メタスト HDFS NN Statestore ODBC ア Query Planner Query Planner Query Planner Query Coordinator Query Coordinator Query Coordinator Query Executor Query Executor Query Executor HDFS DN HBase HDFS DN HBase HDFS DN HBase ローカルダイレクト読み込み
  20. 20. Impalaのアーキテクチャ: クエリ実行ODBC/BeeswaxのThrift API経由でSQLリクエストを受信 SQL App Hive と同じクエリをそのまま投げる Hive メタスト (一部制限あり)Statestore HDFS NN ODBC ア SQLリクエスト Query Planner Query Planner Query Planner Query Coordinator Query Coordinator Query Coordinator Query Executor Query Executor Query Executor HDFS DN HBase HDFS DN HBase HDFS DN HBase
  21. 21. ImpalaのアーキテクチャHiveQL とインタフェース メタデータとスケジューラ SQL App Hive メタスト HDFS NN Statestore ODBC ア メタデータを取得して 実行計画を作成する Query Planner Query Planner Query Planner Query Coordinator Query Coordinator Query Coordinator Query Executor Query Executor Query Executor HDFS DN HBase HDFS DN HBase HDFS DN HBase ローカルダイレクト読み込み
  22. 22. Impalaのアーキテクチャ● 例: Join(結合)とAggregation(集計)のクエリ SELECT state, SUM(revenue) FROM HdfsTbl h JOIN HbaseTbl b ON (...) GROUP BY 1 ORDER BY 2 desc LIMIT 10 TopN Agg TopN Agg Hash Agg Join Hash Join Hdfs Hbase Exch Exch Scan ScanHdfs Hbase at coordinator at DataNodes at region serversScan Scan
  23. 23. Impalaのアーキテクチャ:クエリの実行コーディネーターはリモートのImpalaデーモンと協調し、 各フラグメントの実行を開始 SQL App Hive メタスト HDFS NN Statestore ODBC 他のノードと協調して分散処理を行う ア Query Planner Query Planner Query Planner Query Coordinator Query Coordinator Query Coordinator Query Executor Query Executor Query Executor HDFS DN HBase HDFS DN HBase HDFS DN HBase
  24. 24. Impalaのアーキテクチャ:クエリ実行 SQL App Hive メタスト HDFS NN Statestore ODBC ア ローカルのデータを直接読みこんで クエリを実行 Query Planner Query Planner Query Planner Query Coordinator Query Coordinator Query Coordinator Query Executor Query Executor Query Executor HDFS DN HBase HDFS DN HBase HDFS DN HBase
  25. 25. Impalaのアーキテクチャ:クエリ実行Impalaデーモン間に中間結果が渡され、クエリ結果はクライアントへ 返される SQL App Hive メタスト 結果は最初のノードに集約 HDFS NN Statestore ODBC ア インメモリに置いたまま転送 クエリ結果 Query Planner Query Planner Query Planner Query Coordinator Query Coordinator Query Coordinator Query Executor Query Executor Query Executor HDFS DN HBase HDFS DN HBase HDFS DN HBase
  26. 26. Impalaのアーキテクチャメタデータの処理:• Hiveのメタストアを利用• メタデータのキャッシュ: 一度Impalaを起動すると、メタストアは 再度同期されない(再起動が必要)• ベータ版: Impalaデーモンは、起動時にメタストアのメタデータを 読み込む• GA: statestoreを通じてメタデータを配布 注:GAで搭載予定の機能は、現時点(v.0.4)では未サポートです
  27. 27. Impalaのアーキテクチャ実行エンジン• C++で開発 • LLVMによるコード生成 • すべての式をインライン化することで、高速化を図 る
  28. 28. ImpalaのアーキテクチャStatestore• 中央のステートリポジトリ • ネームサービス(メンバーシップ) • GA: メタデータ • GA:ほかの関連スケジュールまたは診断ステート• ソフトステート • StatestoreがなくてもImpalaサービスは古い情報を使用しながら 動作を継続 • 定期的にImpalaデーモンをプッシュ • ポーリングの失敗が続く場合、クラスタビューからImpalaデー モンが排除されたとみなす● サービス/サブスクリプション登録にThrift APIを利用 注:GAで搭載予定の機能は、現時点(v.0.4)では未サポートです
  29. 29. ユーザー視点でのImpala: SQL• SQL サポート: • SQLのHiveバージョンにならって開発 • 現時点では一部のDMLのサポートのみ(SELECT, INSERT) • GA: DDLのサポート (CREATE, ALTER) ベータ版ではHiveを使用• 機能制限: • カスタムUDF、ファイルフォーマット、SerDes不可 • ハッシュJOINのみ; テーブルJOINはメモリ内に収める必要がある: • ベータ版: ブロードキャストされたハッシュJOINだけ • GA:全(実行)ノードのメモリを集計 • ベータ版: JOINの順番 = FROM節に記述した順番 • GA:基本的なコストベースのオプティマイザ
  30. 30. Agenda• Impala• Hadoop, Hive, そしてImpalaへ• Impalaのアーキテクチャ• ImpalaとHiveの比較(デモあり)
  31. 31. デモ: Hive vs Impala • Cloudera Demo VM • 新ベンチマークTPC-DS データセット~500MB • クエリの内容: 複数データの結合(joins) 集計(aggregate)、並べ替え(order by) • フォーマット: 非圧縮テキスト • VMダウンロードのリンク: https://ccp.cloudera.com/display/SUPPORT/Cloudera%27s +Impala+Demo+VM
  32. 32. ImpalaとHiveの比較• Hive: MapReduce • 高レイテンシ • MapReduceのオンディスクチェックポイントに • MapReduceによる耐障害性モデル • 柔軟なファイルフォーマットとUDF • 実行時の高オーバーヘッド• Impala: • 耐障害性なし • 低レイテンシ
  33. 33. ImpalaとHiveの比較• HiveよりImpalaのパフォーマンスが優れている点: • Impalaは完全なディスクスループットを取得 (~100MB/sec/disk); I/Oバウンドのワークロードの3〜4倍速い • Hive内で複数のmap-reduceフェーズを必要とする クエリでは処理スピードのアップを実感 • メモリ内のデータに対して実行するクエリに関しては、 よりスピードアップを実感(100倍のケースもある)
  34. 34. GAで実装予定の機能の紹介• JDBCドライバ対応• ファイルフォーマットとして、Trevniの採用• DDL対応• SQLパフォーマンスの最適化 http://blog.cloudera.com/blog/2012/12/whats-next-for- cloudera-impala/
  35. 35. GA後、実装予定の機能紹介• UDFによる拡張• コストベース・オプティマイザの搭載• ディスクを使用した外部結合 http://blog.cloudera.com/blog/2012/12/whats-next-for- cloudera-impala/
  36. 36. • Impalaの概要、開発のモチベーション、アーキテクチャ について紹介しました• Impalaは、データサイエンティストのためのツールです• バッチ処理や、業務処理には向きません• GA、GA後も、多くの改良を進めていきます
  37. 37. Impalaを試してみる!• ベータ版は2012年10月24日から入手可能• 2013年Q1にはGA版が公開される予定• や impala-user@cloudera.org• https://github.com/cloudera/impala
  38. 38. ご清聴ありがとうございました。 CONFIDENTIAL - RESTRICTED
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×