Your SlideShare is downloading. ×
Cloudera Impala #pyfes 2012.11.24
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Cloudera Impala #pyfes 2012.11.24

4,515

Published on

#pyfes 2012.11 で発表した、Impala についての概要資料です。

#pyfes 2012.11 で発表した、Impala についての概要資料です。

Published in: Technology
0 Comments
26 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,515
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
91
Comments
0
Likes
26
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Cloudera Impala
低レイテンシクエリエンジン 2012/11/24   @shiumachi  
  • 2. アジェンダ  •  Impalaとは  •  Hadoop、Hive、そしてImpala  •  どれくらい速いの?  •  Impala  と  Hive  の違い  
  • 3. お前誰よ?  •  Sho  Shimauchi    (  @shiumachi  )  •  Cloudera  の問い合わせ担当  •  現在仕事中です(今ここでしゃべるために20 分だけ会議から抜けてきた)  
  • 4. Impala  •  Cloudera  が開発したオープンソースの低レイテ ンシ・分析特化型クエリ実行基盤  •  Google  Dremel,  Google  F1  などにインスパイアさ れて開発された   –  Impala  作者の  Marcel  Kornacker  は  Google  F1  の開 発エンジニア    •  データサイエンティストが使うことを想定している   –  あれこれと試行錯誤するときに、すぐに結果がほしい   –  分析用途:読み込みのみで書き込み処理は基本的に 不要  
  • 5. なぜImpalaが開発されたのか?  •  Hadoop  (MapReduce)  だと高レイテンシで、す ぐに結果が欲しくても処理に時間がかかる  •  Hive  のように手軽に使えるSQLのインタフェー スを持ち、かつ低レイテンシのエンジンが必 要になった   そもそもHadoop/MapReduce/Hive   って何?  
  • 6. Apache  MapReduce  とは?  •  バッチ処理を分散して行うシステム  •  Hadoop  のコアコンポーネントの一つ  •  フレームワークの中で処理の信頼性を担保して いるので、開発者はアプリケーションロジックの みに集中してコードを書ける  •  MR  が提供するもの   –  処理の並列化   –  耐障害性   –  ジョブ監視のための基盤   –  開発者のための抽象化されたインタフェース(map  +   reduce)  
  • 7. MapReduce(1)  Map処理  商品   価格   Mapper   りんご,  100  りんご   100   みかん,  200  みかん   200   ぶどう,  300  ぶどう   300   Mapper   入力データに対して計算処理し、<キー,  値>の形 式に変換する   ここでの処理は「何もせずそのまま出力」   HDFS上のデータ  複数のブロックに分割されていて Mapper   も、分割されたまま実行可能  
  • 8. MapReduce(1)  Map処理   他のMapperでも同様に実行   Mapper   りんご,  100   このMapperは同一サーバで複 数稼働しても構わない   みかん,  200   ぶどう,  300  商品   価格  りんご   200   Mapper   りんご,  200  なし   400   なし,  400  いちご   100   いちご,  100  商品   価格  りんご   300   Mapper   りんご,  300  みかん   400   みかん,  400  なし   100   なし,  100  
  • 9. MapReduce(2)  Shuffle処理  Mapper   りんご,  100   Reducer   みかん,  200   りんご,  [100,  200,  300]   ぶどう,  300   Map出力の中で同じキーを持つデーMapper   りんご,  200   タは一ヶ所のReducerにまとめる   この時点ではまとめるだけで計算は なし,  400   しない   いちご,  100   Reducer  Mapper   りんご,  300   みかん,  400   なし,  100  
  • 10. MapReduce(2)  Shuffle処理   他のデータも同様に処理  Mapper   りんご,  100   Reducerは複数でもいい   Reducer   Reducerを実行しないケースもある   みかん,  200   りんご,  [100,  200,  300]   ぶどう,  300   みかん,  [200,  300]   ぶどう,  [300]  Mapper   りんご,  200   なし,  400   いちご,  100   Reducer   なし,  [400,  100]  Mapper   りんご,  300   いちご,  [100]   みかん,  400   なし,  100  
  • 11. MapReduce(3)  Reduce処理   Reduce処理で、商品の平均を算出する   Reducer  りんご,  [100,  200,  300]   りんご,  200   みかん,  [200,  300]   みかん,  250   ぶどう,  [300]   ぶどう,  300   Reducer   なし,  [400,  100]   なし,  250   いちご,  [100]   いちご,  100  
  • 12. MapReduceの問題点(1)  •  分散処理が簡単になったとはいえ、それでも 処理の実装はかなり大変   –  Java  で書かなければいけない   –  現実には複数のMapReduceを組み合わせて一つ の処理を実現するため、設計が難しい   MapReduce  を基盤としたスクリプト言 語・上位アプリケーションの出現  
  • 13. MapReduce  を基盤としたツール群   Hive   Oozie   Pig   Mahout   MapReduce  
  • 14. Apache  Hive  とは  •  SQLライクなMapReduce用クエリ言語  •  RDBMSにメタデータを管理するため、テーブ ルスキーマやそれらに対するアクセス権など も設定可能  •  非常にユーザ数が多く、多数のBI/DWHベン ダがHiveからのアクセスをサポートするように なった  
  • 15. Hive実行の仕組み   クエリ:  SELECT  *  FROM  …     クエリをMapReduceのワークフローに分解する   (  =  コンパイルする)  メタストアDB   Hive   DBスキーマの情報はメタストアDBで管理する   MRジョブ1   MRジョブ3   MRジョブ2  
  • 16. Hiveのアーキテクチャ  HiveQL  とインタフェース   メタデータとスケジューラ   SQL  App   Hive   Metastore   YARN   MRv1   HDFS  NN   Compiler   Query  Exec  Engine   MapReduce  Slave   MapReduce  Slave   MapReduce  Slave   (Container  or  TT)   (Container  or  TT)   (Container  or  TT)  HDFS  DN   HBase   HDFS  DN   HBase   HDFS  DN   HBase  
  • 17. 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  
  • 18. Hiveのアーキテクチャ  HiveQL  とインタフェース   通常のMapReduceフレームワークを   メタデータとスケジューラ   用いてジョブを実行していく   SQL  App   Hive   Metastore   YARN   MRv1   HDFS  NN   Compiler   Query  Exec  Engine   MapReduce  Slave   MapReduce  Slave   MapReduce  Slave   (Container  or  TT)   (Container  or  TT)   (Container  or  TT)  HDFS  DN   HBase   HDFS  DN   HBase   HDFS  DN   HBase  
  • 19. Hive  アーキテクチャ詳細  
  • 20. MapReduceの問題点(2)  •  高レイテンシ   –  小さいジョブを実行しても数十秒かかる   –  十分単位で処理時間がかかることもザラ  •  すぐに結果がほしいユーザのニーズに合わ ない   MapReduce  を使わない低レイテンシ処 理のための基盤が必要になった  
  • 21. Impala(再掲)  •  Cloudera  が開発したオープンソースの低レイ テンシ・分析特化型クエリ実行基盤  •  データサイエンティストが使うことを想定して いる   –  あれこれと試行錯誤するときに、すぐに結果がほ しい   –  分析用途:読み込みのみで書き込み処理は基本 的に不要  
  • 22. Impalaのアーキテクチャ   HiveQL  とインタフェース   メタデータとスケジューラ   SQL  App   Hive   State   Metastore   YARN   HDFS  NN   Store   ODBC   Query  Planner   Query  Planner   Query  Planner  Query  Coordinator   Query  Coordinator   Query  Coordinator  Query  Exec  Engine   Query  Exec  Engine   Query  Exec  Engine  HDFS  DN   HBase   HDFS  DN   HBase   HDFS  DN   HBase   ローカルダイレクト読み込み  
  • 23. Impalaのアーキテクチャ   HiveQL  とインタフェース   メタデータとスケジューラ   SQL  App   Hive  と同じクエリをそのまま投げる   Hive   State   Metastore   YARN   HDFS  NN   Store   (一部制限あり)   ODBC   Query  Planner   Query  Planner   Query  Planner  Query  Coordinator   Query  Coordinator   Query  Coordinator  Query  Exec  Engine   Query  Exec  Engine   Query  Exec  Engine  HDFS  DN   HBase   HDFS  DN   HBase   HDFS  DN   HBase   ローカルダイレクト読み込み  
  • 24. Impalaのアーキテクチャ   HiveQL  とインタフェース   メタデータとスケジューラ   SQL  App   Hive   State   Metastore   YARN   HDFS  NN   Store   ODBC   メタデータを取得して   実行計画を作成する   Query  Planner   Query  Planner   Query  Planner  Query  Coordinator   Query  Coordinator   Query  Coordinator  Query  Exec  Engine   Query  Exec  Engine   Query  Exec  Engine  HDFS  DN   HBase   HDFS  DN   HBase   HDFS  DN   HBase   ローカルダイレクト読み込み  
  • 25. Impalaのアーキテクチャ   HiveQL  とインタフェース   メタデータとスケジューラ   SQL  App   Hive   State   Metastore   YARN   HDFS  NN   Store   ODBC   他のノードと協調して分散処理を行う   Query  Planner   Query  Planner   Query  Planner  Query  Coordinator   Query  Coordinator   Query  Coordinator  Query  Exec  Engine   Query  Exec  Engine   Query  Exec  Engine  HDFS  DN   HBase   HDFS  DN   HBase   HDFS  DN   HBase   ローカルダイレクト読み込み  
  • 26. Impalaのアーキテクチャ   HiveQL  とインタフェース   メタデータとスケジューラ   SQL  App   Hive   State   Metastore   YARN   HDFS  NN   Store   ODBC   Query  Planner   Query  Planner   Query  Planner   ローカルのデータを直で読んで  Query  Coordinator   クエリを実行   Query  Coordinator   Query  Coordinator  Query  Exec  Engine   Query  Exec  Engine   Query  Exec  Engine  HDFS  DN   HBase   HDFS  DN   HBase   HDFS  DN   HBase   ローカルダイレクト読み込み  
  • 27. Impalaのアーキテクチャ   HiveQL  とインタフェース   メタデータとスケジューラ   SQL  App   Hive   State   Metastore   YARN   HDFS  NN   Store   ODBC   結果は最初のノードに集約   インメモリに置いたまま転送   Query  Planner   Query  Planner   Query  Planner  Query  Coordinator   Query  Coordinator   Query  Coordinator  Query  Exec  Engine   Query  Exec  Engine   Query  Exec  Engine  HDFS  DN   HBase   HDFS  DN   HBase   HDFS  DN   HBase   ローカルダイレクト読み込み  
  • 28. 実際に Impala  はどれくらい速いのか?   (1)  37signals    処理内容   Impala   Hive   MySQL  5.2GB  HAProxyログ  -­‐  リクエスト数上位 3.1   65.4   146  のIPアドレス  5.2GB  HAProxyログ  -­‐  リクエスト時間上 3.3   65.2   164  位のIPアドレス  800MB  rails  ログ  -­‐  最も遅いアカウント   1.0   33.2   48.1  800MB  rails  ログ  -­‐  最もDBの実行時間 1.1   33.7   49.6  の長いパス  8GB  ページビューテーブル  -­‐  日次ペー 22.4   92.2   180  ジビューとユニークビジター   単位:  秒   URL:  hjp://37signals.com/svn/posts/3315-­‐how-­‐i-­‐came-­‐to-­‐love-­‐big-­‐data-­‐or-­‐at-­‐least-­‐acknowledge-­‐its-­‐existence  
  • 29. 実際に Impala  はどれくらい速いのか?   (2)    @sudabon  さんの評価  処理内容   Impala   Hive  非圧縮8.8GB(GZip  600MB)  +  RCFile   -­‐   60.574  SELECT  *  FROM  table_name  WHERE  column  =  ‘xxxx’;  非圧縮8.8GB(Snappy  1.5GB)  +  SequenceFile   14.679   -­‐  SELECT  *  FROM  table_name  WHERE  column  =  ‘xxxx’;   単位:  秒   URL:  hjp://www.slideshare.net/sudabon/cloudera-­‐impalahive-­‐14995751  
  • 30. 実際に Impala  はどれくらい速いのか?   (3)    @GedowFather  さんの評価(仮)  処理内容   Impala   Hive  17MB  45,000行 GROUP  BY  &  ORDER  BY   7   63  17MB  45,000行  COUNT   1   34  3.1GB  700万行  15ファイル  COUNT(distnct   27   50  xxx)  6GB  700万行  JOIN  20MB  5万行  GROUP  BY,   56   132  ORDER  BY  sum()   単位:  秒   URL:  hjp://togejer.com/li/408008  
  • 31. サポート済みの  Impala  の機能(0.2時点)  •  Cloudera  Manager  からインストール可能  •  Hue  から操作可能  •  ODBC  ドライバを使って操作可能(一部制限あ り)  •  データの選択、追加、挿入  •  複数ユーザからの同時アクセス  •  Kerberos  認証  •  パーティション  
  • 32. 未サポートの  Impala  の機能(0.2時点)  •  Trevni,  RCFile  のサポート  •  ストリームデータの処理  •  データの削除  •  データの変換  •  インデックス  •  YARN対応  •  全文検索  •  耐障害性  •  Hive  SerDe  •  Hive  UDF  •  テーブル・カラムレベルの認証  •  データ暗号化  •  ウィンドウ関数  •  JDBCドライバ  •  Avroサポート  •  Joinの最適化  
  • 33. よくある質問(1)  •  もうHiveいらないんじゃね?   –  違います。HiveはUDFが使える、MRを使うので耐 障害性がある、などなど多くの利点があります  
  • 34. Hive  と  Impala   Hive   Impala  クエリ言語   HiveQL   HiveQL  メタストア   Hiveメタストア   Hiveメタストア  ジョブ実行基盤   MapReduce   独自  レイテンシ   高   低  ワークロード   read/write   read  only    ジョブの耐障害性   ◯(MapReduce)   ☓(失敗したらやり直し)  UDF   ◯   ☓  用途   パイプラインETL   データサイエンティストによ る分析  
  • 35. よくある質問(2)  •  Impalaってどういう人が使うの?   –  現時点ではデータサイエンティストのためのツー ルです。つまり、データを色々いじって試行錯誤 する人のためのツール   –  Impalaで色々試して、よさげなクエリがあったら Hiveで定期ジョブとして実行、というのがパターン  
  • 36. よくある質問(3)  •  impalad  が落ちたらどうなるの?   –  クエリが全部こけます   –  どうせ実行に数秒から数十秒しかかからないの で流し直してください  •  JOINのサイズ制限はあるの?   –  現バージョンでは、一番左のテーブル以外は実 行したノードのメモリに収まる必要がある   –  GA時には全ノードのメモリ総量を使えるようにす る予定  
  • 37. 試してみたい、という方へ  •  Impala  デモVM(1.5GBぐらい)   –  hjps://ccp.cloudera.com/display/SUPPORT/ Clouderas+Impala+Demo+VM  •  ドキュメント   –  hjps://ccp.cloudera.com/display/ IMPALA10BETADOC/Cloudera+Impala+1.0+Beta +Documentaton  •  github  ソースコード   –  hjps://github.com/cloudera/impala  
  • 38. Impala  の情報源  •  Cloudera  の @kernel023  が日本語・英語の Impala情報をまとめていますのでそちらを見 てください   –  hjp://linux.wwing.net/WordPress/    
  • 39. おしまい  

×