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

Post on 12-Jun-2015

7.683 views 6 download

description

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

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

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

高速大規模分散基盤

2013/03/23  @shiumachi  

お前誰よ?  

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

Hive  本  

•  日本語版鋭意作成中  

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

Hive  本  

•  日本語版鋭意作成中  

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

(主に同僚が)  

Impala?  

Cloudera  Impala  

•  一言で言うと速いHive  

Cloudera  Impala  

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

Cloudera  Impala  

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

Cloudera  Impala  

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

Cloudera  Impala  

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

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

まさに  TokyoWebmining参加者  

のためのツール  

いきなりデモします  

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

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

Cloudera  Impala  

Cloudera  Impala  

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

Impala  のアーキテクチャ  

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

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

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

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  

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

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  と同じクエリをそのまま投げる  (一部制限あり)  

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  

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

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

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  

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

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  

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

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  

クエリ結果  

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

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  

クエリ  

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

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

ベータ版ではHiveを使用  

Impala:  SQL  •  機能制限:  

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

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

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

よくある質問  

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

?!

NO  

Hive  にあってImpalaにない機能  

Hive  にあってImpalaにない機能  

•  耐障害性  

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  

Hive  にあってImpalaにない機能  

•  耐障害性  •  Hive  UDF  •  Hive  SerDe  

Hive  にあってImpalaにない機能  

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

Hive  にあってImpalaにない機能  

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

Hive  にあってImpalaにない機能  

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

Hive  にあってImpalaにない機能  

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

Hive  にあってImpalaにない機能  

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

•  DDL  

Hive  にあってImpalaにない機能  

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

•  DDL  •  バケット  

Hive  にあってImpalaにない機能  

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

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

テーブルのJOIN  

Hive  にあってImpalaにない機能  

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

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

テーブルのJOIN  

Hive  にあってImpalaにない機能  

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

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

テーブルのJOIN  

Hive  にあってImpalaにない機能  

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

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

テーブルのJOIN  

Hive  にあってImpalaにない機能  

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

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

テーブルのJOIN  

Hive  にあってImpalaにない機能  

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

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

テーブルのJOIN  

Hive  にあってImpalaにない機能  

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

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

テーブルのJOIN  

Hive  にあってImpalaにない機能  

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

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

テーブルのJOIN  

Hive  にあってImpalaにない機能  

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

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

テーブルのJOIN  

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

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

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

50  

Impala  

Hadoop  

Hive  

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

Impala  ロードマップ  

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

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

おしまい