Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

52
Impala 徹底入門 データサイエンティストのための 高速大規模分散基盤 2013/03/23 @shiumachi

description

Tokyo Webmining #25 で発表したときの資料です。メインはデモの方です

Transcript of Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Page 1: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Impala 徹底入門 データサイエンティストのための

高速大規模分散基盤

2013/03/23  @shiumachi  

Page 2: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

お前誰よ?  

•  Sho  Shimauchi    (  @shiumachi  )  •  Cloudera  の問い合わせ担当  

Page 3: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  本  

•  日本語版鋭意作成中  

•  翻訳レビュー手伝ってます  

Page 4: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  本  

•  日本語版鋭意作成中  

•  翻訳レビュー手伝ってます  

(主に同僚が)  

Page 5: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Impala?  

Page 6: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
Page 7: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Cloudera  Impala  

•  一言で言うと速いHive  

Page 8: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Cloudera  Impala  

•  一言で言うと速いHive  •  どのくらい速いかというと、メチャクチャ速い  

Page 9: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Cloudera  Impala  

•  一言で言うと速いHive  •  どのくらい速いかというと、メチャクチャ速い  – 大体  x10〜30  

Page 10: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Cloudera  Impala  

•  一言で言うと速いHive  •  どのくらい速いかというと、メチャクチャ速い  – 大体  x10〜30  – 遅い時でも  x2〜3  

Page 11: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Cloudera  Impala  

•  一言で言うと速いHive  •  どのくらい速いかというと、メチャクチャ速い  – 大体  x10〜30  – 遅い時でも  x2〜3  

– 私が見たことある最速は x97    

Page 12: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

まさに  TokyoWebmining参加者  

のためのツール  

Page 13: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

いきなりデモします  

Page 14: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

デモ概要  •  基本単位 5000万行,  1GB  •  RCFile  +  snappy  圧縮すると 10.6MB  –  RCFIie:  列指向フォーマット  –  snappy:  高速性を重視した圧縮アルゴリズム  

•  今回は10単位 5億行,  10GB  (圧縮後 106MB)  •  クラスタ概要  – Amazon  EC2  上で構築  – 運用管理ソフト  Cloudera  Manager  で自動構築  – インスタンス  m1.large  (CPU  2コア,  メモリ7.5GB)  –  4ノード(マスタ込み)  

Page 15: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Cloudera  Impala  

Page 16: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Cloudera  Impala  

•  オープンソースの低レイテンシSQLエンジン  •  C++    •  MapReduceは使わない  •  HDFS  や HBase  上のデータを処理可能  

Page 17: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Impala  のアーキテクチャ  

•  impalad  – 各スレーブノードで稼働する、メインのサービス  

•  statestore  – 1台だけ稼働する、状態管理サービス  

•  impalad  の稼動しているサーバ名  •  メタデータ  

Page 18: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Impalaのアーキテクチャ  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

Hive  メタストア   HDFS  NN   Statestore  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

HiveQL  とインタフェース   メタデータ  

SQL  App  

ODBC  

Query  Planner  

ローカルダイレクト読み込み  

Page 19: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Impalaのアーキテクチャ:  クエリ実行  ODBC/BeeswaxのThri^  API経由でSQLリクエストを受信  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

SQL  App  

ODBC  

Hive  メタストア   HDFS  NN   Statestore  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

SQLリクエスト  

Hive  と同じクエリをそのまま投げる  (一部制限あり)  

Page 20: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Impalaのアーキテクチャ  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

Hive  メタストア   HDFS  NN   Statestore  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

HiveQL  とインタフェース   メタデータ  

SQL  App  

ODBC  

Query  Planner  

ローカルダイレクト読み込み  

メタデータを取得して  実行計画を作成する  

Page 21: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Impalaのアーキテクチャ:クエリの実行  コーディネーターはリモートのImpalaデーモンと協調し、

各フラグメントの実行を開始  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

SQL  App  

ODBC  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

Hive  メタストア   HDFS  NN   Statestore  

他のノードと協調して分散処理を行う  

Page 22: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Impalaのアーキテクチャ:クエリ実行  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

SQL  App  

ODBC  Hive  

メタストア   HDFS  NN   Statestore  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

ローカルのデータを直接読みこんで  クエリを実行  

Page 23: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Impalaのアーキテクチャ:クエリ実行  Impalaデーモン間に中間結果が渡され、クエリ結果はクライアントへ返される

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

SQL  App  

ODBC  Hive  

メタストア   HDFS  NN   Statestore  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

Query  Planner  

Query  Coordinator  

Query  Executor  

HDFS  DN   HBase  

クエリ結果  

結果は最初のノードに集約  インメモリに置いたまま転送  

Page 24: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Impalaのアーキテクチャ  例:  Join(結合)とAggrega`on(集計)のクエリ     SELECT  state,  SUM(revenue)     FROM  HdfsTbl  h  JOIN  HbaseTbl  b  ON  (...)     GROUP  BY  1  ORDER  BY  2  desc  LIMIT  10  

Hbase  Scan  

Hash  Join  

Hdfs  Scan   Exch  

TopN  

Agg  

Exch  

コーディネータ   データノード   リージョンサーバ  

Agg  TopN  

Agg  

Hash  Join  

Hdfs  Scan  

Hbase  Scan  

クエリ  

Page 25: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Impala:  SQL  •  SQL  サポート:  •  HiveQLがベース  •  現時点では一部のDMLのサポートのみ(SELECT,  INSERT)  

•  DML:  Data  Manipula`on  Language  •  GA:  DDLのサポート  (CREATE,  ALTER)  •  DDL:  Data  Defini`on  Language  

ベータ版ではHiveを使用  

Page 26: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Impala:  SQL  •  機能制限:  

•  カスタムUDF、ファイルフォーマット、SerDes不可  •  UDF:  User  Define  Func`on  ユーザ定義関数  •  SerDe:  シリアライザ・デシリアライザ。「さーでぃー」  •  ハッシュJOINのみ;  テーブルJOINはメモリ内に収める必要がある:  

•  ベータ版:  ブロードキャストされたハッシュJOINだけ  •  GA:全(実行)ノードのメモリを集計  

•  ベータ版:  JOINの順番  =  FROM節に記述した順番  •  GA:基本的なコストベースのオプティマイザ  

Page 27: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

よくある質問  

Page 28: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

もうHiveいらないんじゃね?  

?!

Page 29: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

NO  

Page 30: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

Page 31: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  

Page 32: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  

Page 33: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  

Page 34: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  

Page 35: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  •  データの変換  

Page 36: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  •  データの変換  •  インデックス  

Page 37: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  •  データの変換  •  インデックス  •  YARN対応  

Page 38: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  •  データの変換  •  インデックス  •  YARN対応  

•  DDL  

Page 39: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  •  データの変換  •  インデックス  •  YARN対応  

•  DDL  •  バケット  

Page 40: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  •  データの変換  •  インデックス  •  YARN対応  

•  DDL  •  バケット  •  メモリに載りきらない

テーブルのJOIN  

Page 41: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  •  データの変換  •  インデックス  •  YARN対応  

•  DDL  •  バケット  •  メモリに載りきらない

テーブルのJOIN  

Page 42: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  •  データの変換  •  インデックス  •  YARN対応  

•  DDL  •  バケット  •  メモリに載りきらない

テーブルのJOIN  

Page 43: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  •  データの変換  •  インデックス  •  YARN対応  

•  DDL  •  バケット  •  メモリに載りきらない

テーブルのJOIN  

Page 44: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  •  データの変換  •  インデックス  •  YARN対応  

•  DDL  •  バケット  •  メモリに載りきらない

テーブルのJOIN  

Page 45: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  •  データの変換  •  インデックス  •  YARN対応  

•  DDL  •  バケット  •  メモリに載りきらない

テーブルのJOIN  

Page 46: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  •  データの変換  •  インデックス  •  YARN対応  

•  DDL  •  バケット  •  メモリに載りきらない

テーブルのJOIN  

Page 47: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  •  データの変換  •  インデックス  •  YARN対応  

•  DDL  •  バケット  •  メモリに載りきらない

テーブルのJOIN  

Page 48: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  •  データの削除  •  データの変換  •  インデックス  •  YARN対応  

•  DDL  •  バケット  •  メモリに載りきらない

テーブルのJOIN  

Page 49: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

サポート済みの  Impala  の機能(0.6時点)  

•  Cloudera  Manager  からインストール可能  •  Hue  から操作可能  •  ODBC  ドライバを使って操作可能(一部制限あり)  •  JDBCドライバも対応(0.5)  •  データの選択、追加、挿入  •  複数ユーザからの同時アクセス  •  Kerberos  認証  •  パーティション  •  RCFileのサポート  (0.6)  

Page 50: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Impalaの賢い使い方  •  まずはImpalaで色々試す  •  使えそうなクエリを発見したら、Hiveで定期実行  

50  

Impala  

Hadoop  

Hive  

色々なクエリを試して  実験する   業務処理はHiveで  

Page 51: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

Impala  ロードマップ  

•  GA  はもうちょい  •  列指向フォーマット  Parquet  – hhp://parquet.github.com/  

•  JOINの改善  •  UDF  •  リソース管理  

Page 52: Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining

おしまい