67
® © 2014 MapR Technologies ® © 2014 MapR Technologies 2014 7 8

Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

Embed Size (px)

DESCRIPTION

MapR Technologies CTO の M.C. Srivas による、Apache Drill概要。SQL-on-Hadoopに求められるフレキシビリティと性能を、どのようなアーキテクチャで実現しているかを解説。2014年7月8日に開催された Hadoop Conference Japan 2014 での説明資料です。

Citation preview

Page 1: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

®

© 2014 MapR Technologies

2014  年  7  月  8  日  

Page 2: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

MapR エンタープライズ Hadoop

トップランク   500 以上の顧客  クラウドリーダー  

Page 3: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Hadoop ディストリビューション

Open Source Open Source

ディストリビューション A   ディストリビューション C  

運用

管理  

Open Source

運用

管理  

アーキテクチャのイノベーション  

Page 4: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

MapR Distribution for Apache Hadoop

MapR Data Platform (ランダム Read/Write)

データハブ エンタープライズ グレード 業務オペレーション

MapR-FS (POSIX)

MapR-DB (ハイパフォーマンス NoSQL)

セキュリティ

YARN

Pig

Cascading

Spark

バッチ

Spark Streaming

Storm*

ストリーミング

HBase

Solr

NoSQL ・検索

Juju

プロビジョニ ング・コーディ

ネーション

Savannah*

Mahout

MLLib

機械学習 ・グラフ

GraphX

MapReduce v1 & v2

APACHE HADOOP および OSS エコシステム

実行エンジン データガバナンス・オペレーション

ワークフロー ・データ

ガバナンス Tez*

Accumulo*

Hive

Impala

Shark

Drill*

SQL

Sentry* Oozie ZooKeeper Sqoop

Knox* Whirr Falcon* Flume

データ 統合・

アクセス

HttpFS

Hue

NFS   HDFS  API   HBase  API   JSON  API  

Map

R C

ontr

ol S

yste

m (運

用管

理・監

視)

* ディストリビューションに統合/認証予定

CLI  

GUI  

REST  API  

Page 5: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

MapR Distribution for Apache Hadoop

MapR Data Platform (ランダム Read/Write)

データハブ エンタープライズ グレード 業務オペレーション

MapR-FS (POSIX)

MapR-DB (ハイパフォーマンス NoSQL)

セキュリティ

YARN

Pig

Cascading

Spark

バッチ

Spark Streaming

Storm*

ストリーミング

HBase

Solr

NoSQL ・検索

Juju

プロビジョニ ング・コーディ

ネーション

Savannah*

Mahout

MLLib

機械学習 ・グラフ

GraphX

MapReduce v1 & v2

APACHE HADOOP および OSS エコシステム

実行エンジン データガバナンス・オペレーション

ワークフロー ・データ

ガバナンス Tez*

Accumulo*

Hive

Impala

Shark

Drill*

SQL

Sentry* Oozie ZooKeeper Sqoop

Knox* Whirr Falcon* Flume

データ 統合・

アクセス

HttpFS

Hue

NFS   HDFS  API   HBase  API   JSON  API  

Map

R C

ontr

ol S

yste

m (運

用管

理・監

視)

CLI  

GUI  

REST  API  

ApacheDrill

* ディストリビューションに統合/認証予定

Page 6: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Page 7: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Hadoop は EDW の強化版—なぜか?

Page 8: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Page 9: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Page 10: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

複数のスキーマの統合は非常に困難  なぜか?    使い方があらかじめ決められている  

Page 11: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

縦割りが原因で分析は非常に困難

•  一意の{顧客,  取引}の組み合わせをデータセットの中からどのように特定するか?    

•  一部のデータが見えない場合、異常挙動がないことをどのように保証できるのか?  

Page 12: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies 12

何が価値になるかを事前に知ることはできない

Page 13: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies 13

なぜ Hadoop か?

Page 14: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

ビッグデータのための SQL を再考してみる

これまで通り  

• 標準  ANSI  SQL  • 普遍的な仕様  

• よく知られている  • BIや分析については切り替え不要  

• 単一テクノロジー  • 複数のテクノロジーを管理するのは大変  

• エンタープライズ向け  • システム・オブ・レコード、高可用性、災害

対策、セキュリティ、マルチテナント、…  

新しく創出  

• データモデルの柔軟性  • スキーマの急速な進化を許容  • 半構造化データ型をサポート  

• アジリティ  • 開発者とDB管理者が同一の場合、セルフサービ

スを可能に  

• スケーラビリティ  • スキーマ、プロセス、運用管理などあらゆる観点で  

Page 15: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

SQL はすっかり浸透

 

Page 16: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Hadoop の位置づけ

 

Page 17: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

YOU  CAN’T  HANDLE  REAL  SQL  『ア・フュー・グッドメン(米/1992)』より  

Page 18: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

SQL

   select    *    from    A      where    exists  (                select  1  from  B  where  B.b  <  100  );  

 •  Apache  HIVE  は上記を処理できないことをご存知ですか?  

– 例えば  Hive,  Impala,  Spark/Shark  

Page 19: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

自己表現型のデータ

select    cf.month,    cf.year        from      hbase.table1;  

 •  通常の  SQL  は上記を処理できないことをご存知ですか?  •  HIVE  や Impala,  Shark  のようなものでもできないですよね?  •  理由はメタストア定義がないから  

Page 20: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

自己表現型のデータが一般的になってきている

中央管理されたスキーマ  -­‐  静的 -­‐  DB  管理者による管理 -­‐  中央管理のレポジトリ 入念なデータの準備のために長い時間が必要 (ETL,  スキーマの作成/変更,  等)    –  6〜18  ヶ月

自己表現型もしくはスキーマレスデータ  -­‐  動的/更新されていく  -­‐  アプリケーションによる管理  -­‐  データに埋め込まれる    スキーマをなくすことで,  大容量・多用途・更新の速いデータにより適している

Apache  Drill  

Page 21: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Apache Drill クイックツアー

Page 22: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

データソースはクエリの中で指定

!select timestamp, message!!from dfs1.logs.`AppServerLogs/2014/Jan/p001.parquet` !!where errorLevel > 2  

  Apache  Drillにおけるクラスタ  -­‐  DFS  -­‐  HBase  -­‐  Hive  メタストア  

ワークスペース  -­‐  主にサブディ

レクトリ  -­‐  HIVE  データ

ベース  

テーブル  -­‐  パス名  -­‐  Hbase  テーブル  -­‐  Hive  テーブル  

Page 23: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

データソースを直接組み合わせる

•  JSON  •  CSV  •  ORC  (つまりすべてのHive型)  

•  Parquet  •  HBase  テーブル  •  …  を組み合わせ可能  

Select    USERS.name,    USERS.emails.work    from        dfs.logs.`/data/logs`    LOGS,      dfs.users.`/profiles.json`    USERS,  where        LOGS.uid  =  USERS.uid      and        errorLevel  >  5  order  by    count(*);    

Page 24: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

ディレクトリツリー全体も処理可能 // ファイルが対象!

select errorLevel, count(*) from dfs.logs.`/AppServerLogs/2014/Jan/part0001.parquet` group by errorLevel;!!

// データコレクション全体が対象: すべての年、すべての月!

select errorLevel, count(*) from dfs.logs.`/AppServerLogs` !group by errorLevel!

where $dir0 > 2012!, $dir1!

dir0!

dir1!

Page 25: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

JSON に対するクエリ {    name:  classic          fillings:  [                {  name:  sugar  cal:    400  }]}    {  name:  choco        fillings:  [              {  name:  sugar    cal:  400  }              {  name:  chocolate  cal:  300  }]}    {    name:  bostoncreme          fillings:    [              {  name:    sugar    cal:  400  }              {  name:    cream    cal:  1000  }              {  name:    jelly    cal:  600  }]}      

donuts.json  

Page 26: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Drill 内部のカーソル

DrillClient drill = new DrillClient().connect( …); ResultReader r = drill.runSqlQuery( "select * from `donuts.json`"); while( r.next()) { String donutName = r.reader( “name").readString(); ListReader fillings = r.reader( "fillings"); while( fillings.next()) { int calories = fillings.reader( "cal").readInteger(); if (calories > 400) print( donutName, calories, fillings.reader( "name").readString()); } }

{    name:  classic        fillings:  [                {  name:    sugar  cal:    400  }]}    {  name:  choco      fillings:  [              {  name:  sugar    cal:  400  }              {  name:  chocolate  cal:  300  }]}    {    name:  bostoncreme        fillings:    [              {  name:    sugar    cal:  400  }              {  name:    cream    cal:  1000  }              {  name:    jelly    cal:  600  }]}      

Page 27: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

ネストデータに対する直接クエリ

// JSON, parquet, その他のネストレコードの マップのフラット化!!select name, flatten(fillings) as f! from dfs.users.`/donuts.json`! where f.cal < 300;!!// 300カロリー未満の中身をリスト!

{    name:  classic        fillings:  [                {  name:    sugar  cal:    400  }]}    {  name:  choco      fillings:  [              {  name:  sugar    cal:  400  }              {  name:  chocolate  cal:  300  }]}    {    name:  bostoncreme        fillings:    [              {  name:    sugar    cal:  400  }              {  name:    cream    cal:  1000  }              {  name:    jelly    cal:  600  }]}      

Page 28: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

SQL または Fluent API を使った複雑なデータ処理

//  SQL  Result  r  =  drill.sql(  "select  name,  flatten(fillings)  from            `donuts.json`  where  fillings.cal  <  300`);    //  or  Fluent  API  Result  r  =  drill.table(“donuts.json”)      .lt(“fillings.cal”,  300).all();    while(  r.next())  {      String  name  =  r.get(  “name").string();      List  fillings  =  r.get(  “fillings”).list();      while(fillings.next())  {          print(name,  calories,  fillings.get(“name”).string());      }  }  

{    name:  classic        fillings:  [                {  name:    sugar  cal:    400  }]}    {  name:  choco      fillings:  [              {  name:  sugar    cal:  400  }              {  name:  plain:  280  }]}    {    name:  bostoncreme        fillings:    [              {  name:    sugar    cal:  400  }              {  name:    cream    cal:  1000  }              {  name:    jelly    cal:  600  }]}      

Page 29: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

埋め込みデータに対するクエリ // hbaseテーブルdonutsの、カラムファミリcf1内の、カラムdonut-json内部に埋め込まれたJSON値!!

select d.name, count( d.fillings),!! from (!

select convert_from( cf1.donut-json, json) as d ! ! from hbase.user.`donuts` );!!

Page 30: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

JSON レコード内部へのクエリ // 各JSONレコード自体をひとつのデータベースとして扱える!// 例: 少なくとも1つの中身が300カロリーを超えるすべてのドーナツを得る !

!select d.name, count( d.fillings),! max(d.fillings.cal) within record as mincal!!from ( select convert_from( cf1.donut-json,

json) as d ! ! from hbase.user.`donuts` )! where mincal > 300; !!

Page 31: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

a

•  クエリ処理の途中でスキーマが変わる可能性がある  •  スキーマ変更イベントによりオペレータの再構成ができるよ

うになっている

– 柔軟性のためのオーバーヘッドを 小化  – 実際のデータ特性に基づいてより高度な実行時 適化を行える  

Page 32: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

中央管理ではないメタデータ

// 顧客毎のツイート数をカウント。顧客マスタはHive、ツイートデータはHBaseに存在。hbaseデータはメタデータ情報を持たないことに注目。!!

Select!c.customerName, hb.tweets.count!from !hive.CustomersDB.`Customers` c!join hbase.user.`SocialData` hb!on !c.customerId = convert_from( hb.rowkey, UTF-8);!

Page 33: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

内部のしくみ

Page 34: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

基本的な処理の流れ

Zookeeper  

DFS/HBase   DFS/HBase   DFS/HBase  

Drillbit  

分散キャッシュ  

Drillbit  

分散キャッシュ  

Drillbit  

分散キャッシュ  

クエリ   1.  クエリがいずれかの  Drillbit  に到着  (JDBC,  ODBC,  CLI,  protobuf)  2.  Drillbit  はクエリ 適化&ローカリティに基づき実行プランを生成

3.  処理の Fragment  が各ノードで実行される

4.  データが 初のノードに返される

c   c   c  

Page 35: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

クエリプランニングのステージ

パーサ Logical プランナ

Physical プランナ

クエリ Foreman

プランのFragment がDrill Bit に送られる

SQL  クエリ  

ヒューリスティック  およびコストベース  

コストベース  

Page 36: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

クエリの実行

SQL  パーサ  

オプティマイザ  

スケジューラ  

Pig  パーサ  

Physical  プ

ラン  

Mongo    

Cassandra  HiveQL  パーサ  

RPC  エンドポイント  

分散キャッシュ  

スト

レー

ジエ

ンジ

ンイ

ンタ

ーフ

ェー

Operators  オペレータ  

Foreman  

Logical  プ

ラン  

HDFS  

HBase  

JDBC  エンドポイント   ODBC  エンドポイント  

Page 37: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

クエリエンジンの特徴は…

•  カラム型/ベクトル化    •  楽観的/パイプライン化  •  ランタイムコンパイル  •  遅延バインディング  •  拡張が容易  

Page 38: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

カラム表現

A   B   C   D   E  

A  

B  

C  

D  

ディスク上  

E  

Page 39: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

カラムナエンコーディング

•  カラム内の値を隣り合わせで格納  – 高い圧縮効率  – レンジマップ:   小値と 大値を保管し、存

在しなければスキップ  

•  クエリで対象になっているカラムのみを取得  

•  デコードすることなく集約可能  

A  

B  

C  

D  

ディスク上  

E  

Page 40: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

ランレングスエンコーディング & 合計の計算

•  データセットは次のようにエンコード  <値>  <繰り返しの数>:  –  2,  4    (2  が  4回)  –  8,  10    (8  が  10回)  

•  ゴール:    レコードの合計を求める  •  単純な処理:  

– 展開:  2,  2,  2,  2,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8  – 加算:  2  +  2  +  2  +  2  +  8  +  8  +  8  +  8  +  8  +  8  +  8  +  8  +  8  +  8  

•  適化された処理:      2  *  4  +  8  *  10  – より少ないメモリ、より少ない計算  

Page 41: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

ビットパックディクショナリソート •  データセットはディクショナリとビット位置を使ってエンコードされる:  

–  ディクショナリ:  [Rupert,  Bill,  Larry]    {0,  1,  2}  –  値:  [1,0,1,2,1,2,1,0]  

•  単純な処理    –  展開して格納:  Bill,  Rupert,  Bill,  Larry,  Bill,  Larry,  Bill,  Rupert  –  ソート:  〜24回の可変長文字列の比較  

•  適化された処理  –  ディクショナリのソート:  {Bill:  1,  Larry:  2,  Rupert:  0}  –  ビットパック値のソート  –  処理:   大3回の文字列比較,  〜24回の固定長ディクショナリビットの比較  

Page 42: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Drill の 4値セマンティクス

•  SQL  の  3値セマンティクス  – True  – False  – Unknown  

•  Drill  は第4の値を追加  – Repeated  

Page 43: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

値のバッチ

•  Value  Vector  – 同じスキーマを持つ値のリスト  – それぞれの値に4値セマンティクスがつく  

•  バッチ (Batch)  単位で送信される  –   Batch  あたり 大  256KB  –   Batch  あたり 大  64K  行  

•  1つのリクエストに複数の応答があることを想定して  RPC  が設計されている  

Page 44: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

固定長 Value Vector

Page 45: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Null 許容値

Page 46: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

反復値

Page 47: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

可変長

Page 48: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

反復 Map

Page 49: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

ベクトル化

•  Drill  は複数のレコードを同時に処理する  –  ワードサイズの操作  –  SIMD  インストラクション  

•  GCC,  LLVM,  JVM  はみな、さまざまな 適化を自動的に行っている  –  アルゴリズムのコーディングによりさらなる 適化も  

•  Logical  ベクトル化  –  ビットマップの利用による非常に高速な  null  チェック  –  CPU  パイプラインを高速化するため分岐を回避  

Page 50: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

ランタイムコンパイラはより高速

•  JIT  はスマートだがランタイムコンパイルはより高速  

•  Janino:  Java  ベースの Java  コンパイラ  

From  hsp://bit.ly/16Xk32x  

Page 51: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Drill コンパイラ

ロードされた  クラス  

2つのクラスの  バイトコードを  

マージ  

Janino  が  ランタイムバイト  

コードをコンパイル  

CodeModel  がコードを生成  

事前コンパイル  されたバイトコード  

テンプレート  

Page 52: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

楽観的

0  20  40  60  80  

100  120  140  160  

スピード  vs.  チェックポイント処理  

チェックポイント不要  

頻繁なチェックポイント  Apache  Drill  

Page 53: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

楽観的実行

•  復旧のコーディングは容易  – 実行中のインスタンスは失敗したクエリの中間ステートを破棄する  

•  パイプライン化が可能  – Batch  がある程度大きくなればすぐに結果を送信  – バリアのないクエリの分解が必要  

Page 54: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

パイプライン化

•  Record  Batch  はノード間でパイプライン化される  –  通常は  〜256kB  

•  Drill  の処理単位  –  オペレータは  Batch  に対して処理する  

•  Batch  境界でオペレータの再構成が発生  

DrillBit  

DrillBit   DrillBit  

Page 55: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Record Batch のパイプライン化

SQL  パーサ  

オプティマイザ  

スケジューラ  

Pig  パーサ  

Physical  プ

ラン  

Mongo    

Cassandra  HiveQL  パーサ  

RPC  エンドポイント  

分散キャッシュ  

スト

レー

ジエ

ンジ

ンイ

ンタ

ーフ

ェー

Operators  オペレータ  

Foreman  

Logical  プ

ラン  

HDFS  

HBase  

JDBC  エンドポイント   ODBC  エンドポイント  

Page 56: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

 ディスク  

パイプライン化

•  ランダムアクセス:  コピーや再構成なしでソート  •  シリアライズ/デシリアライズを避ける  •  オフヒープ  (メモリが大きい場合のGC問題を回避)  

•  Full  specificauon  +  オフヒープ  +  Batch  – C/C++  オペレータが有効に (早い!)  

•  ディスクへの Read/Write  – データがメモリより大きい場合  

Drill  Bit  

メモリに  収まらない場合  ディスクを利用  

Page 57: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

コストベース 適化 •  拡張が容易なフレームワーク  Opuq  を利用  

•  プラガブルなルールとコストモデル    

•  分散実行プラン生成のルール  •  Exchange  オペレータを Physical  プランに挿入  •  Opuq  が並列クエリプランの探索を強化  

•  プラガブルコストモデル  –  CPU,  IO,  メモリ,  ネットワークコスト  (データ局所性)  –  ストレージエンジンの機能  (HDFS  vs  HIVE  vs  HBase)    

クエリ オプティマイザ

プラガブル  ルール  

プラガブル  コストモデル  

Page 58: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

分散実行プランのコスト

•  オペレータは distribu5on  プロパティを持つ  •  Hash,  Broadcast,  Singleton,  …      

•  Exchange  オペレータが分散を実施  •  Hash:  HashToRandomExchange  •  Broadcast:    BroadcastExchange  •  Singleton:    UnionExchange,  SingleMergeExchange  

•  すべてを数値化しコストを計算して 適な  プランを決定  •  マージジョイン vs  ハッシュジョイン  •  パーティションベースジョイン vs  

ブロードキャストベースジョイン  •  ストリーミング集約 vs  ハッシュ集約  

•  集約を  1  段階で行うか 2  段階で行うか  •  部分的にローカル集約 +   終的な集約  

HashToRandomExchange  

ソート  

ストリーミングの集約  

データ データ データ

Page 59: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Apache Drill

自己記述型データもしくは中央管理型メタデータを利用した分析  

    SQL/BI  ツールおよび  

Apache  Hive  への投資を再利用  

半構造化データ・  ネストデータの分析  

…  1  から作り上げたアーキテクチャにより、  低レイテンシクエリのスケーラブルな処理を実現  

フレキシブルな  スキーマ管理  

ネストデータに対する 効率の良い分析

既存資産との  プラグアンドプレイ  

Page 60: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Apache Drill ロードマップ

• 低レイテンシ SQL • スキーマレスデータの処理 • ファイル & HBase/M7サポート • Hive 連携 • ODBC/JDBC を経由した BI および SQL ツールサポート

データ検索/アドホッククエリ

1.0

• HBase クエリ性能向上 • ネストデータ機能 • 高度な SQL 機能

高度な分析および オペレーショナルデータ

1.1 • さらなる低レイテンシクエリ • 単一行 insert/update/delete

• ワークロード管理

オペレーショナル SQL

2.0

Page 61: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Drill  1.0   Hive  0.13  +  Tez   Impala  1.x   Shark  1.0  

レイテンシ   Low   Medium   Low   Medium  

ファイル   Yes  (すべての  Hive  ファイル形式に加え  JSON,  Text,  …)  

Yes  (すべての Hive  ファイル形式)  

Yes  (Parquet,  Sequence,  …)  

Yes  (すべての  Hive  ファイル形式)  

HBase/M7   Yes   Yes,  性能の問題   Yes,  一部に問題   Yes,  性能の問題  

スキーマ   Hive  or  スキーマレス   Hive   Hive   Hive  

SQL  サポート   ANSI  SQL  2003   HiveQL   HiveQL  (サブセット)   HiveQL  

クライアントサポート  

ODBC/JDBC   ODBC/JDBC   ODBC/JDBC   ODBC/JDBC  

Hive  互換性   High   High   Low   High  

大きなデータセット   Yes   Yes   Limited   Limited  

ネストデータ   Yes   Limited   No   Limited  

同時実行   High   Limited   Medium   Limited  

インタラクティブ SQL-on-Hadoop の選択肢

Page 62: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

バイアスのないオープンソース (Linux を例に) •  オープンソースディストリビューションは選択肢の提供が鍵  

– Linux  は MySQL,  PostgreSQL,  SQLite  のすべてを含む  – Linux  は Apache  hspd,  nginx,  Lighspd  のすべてを含む  

•  MapR  はバイアスのない選択肢を提供する唯一の Hadoop  

 

MapR  DistribuYon  for  Hadoop   ディストリビューションA   ディストリビューションB  

Spark   Spark  および  Shark    

Spark  のみ   なし  

インタラクティブ SQL  

Shark,  Impala,  Drill,  Hive/Tez   単一の選択肢  (Impala)  

単一の選択肢  (Hive/Tez)  

バージョン   Hive  0.10,  0.11,  0.12  Pig  0.11,  012  HBase  0.94,  0.98  

単一のバージョン   単一のバージョン  

Page 63: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

MapR Distribution for Apache Hadoop

MapR Data Platform (ランダム Read/Write)

データハブ エンタープライズ グレード 業務オペレーション

MapR-FS (POSIX)

MapR-DB (ハイパフォーマンス NoSQL)

セキュリティ

YARN

Pig

Cascading

Spark

バッチ

Spark Streaming

Storm*

ストリーミング

HBase

Solr

NoSQL ・検索

Juju

プロビジョニ ング・コーディ

ネーション

Savannah*

Mahout

MLLib

機械学習 ・グラフ

GraphX

MapReduce v1 & v2

APACHE HADOOP および OSS エコシステム

実行エンジン データガバナンス・オペレーション

ワークフロー ・データ

ガバナンス Tez*

Accumulo*

Hive

Impala

Shark

Drill*

SQL

Sentry* Oozie ZooKeeper Sqoop

Knox* Whirr Falcon* Flume

データ 統合・

アクセス

HttpFS

Hue

NFS   HDFS  API   HBase  API   JSON  API  

Map

R C

ontr

ol S

yste

m (運

用管

理・監

視)

CLI  

GUI  

REST  API  

* ディストリビューションに統合/認証予定

Page 64: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

MapR の Drill 開発チーム

•  ワールドクラスの SQL  チーム、〜20  名  •  商用データベース開発の経験、のべ  150  年以上  

•  Oracle,  DB2,  ParAccel,  Teradata,  SQLServer,  Veruca  •  Apache  Hive  におけるいくつかの困難な問題を解決  

Page 65: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

アクティブな Drill コミュニティ

•  大きなコミュニティ、急速に拡大中  – コントリビュータ  35〜40名、コミッタ  16名  – Microsoz,  Linked-­‐in,  Oracle,  Facebook,  Visa,  Lucidworks,  Concurrent,  多数の大学  

•  2014  年の活動  – 20  回を超える Meet-­‐Up、さらに多数を予定  – Hackathon  2回、40  を超える参加者  

•  皆さんの参加、学習、貢献をお待ちしています  (Have  fun!)  

Page 66: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

Apache Drill リソース

•  Drill  を始めるのはかんたん  –   tarball  をダウンロードして、ローカルファイルに対し SQL  クエリを

投げるだけ  

•  メーリングリスト  –  drill-­‐[email protected]  –  drill-­‐[email protected]  

•  ドキュメント:    hsps://cwiki.apache.org/confluence/display/DRILL/Apache+Drill+Wiki    •  GitHub  でフォーク:      hsp://github.com/apache/incubator-­‐drill/  •  JIRA  の作成:      hsps://issues.apache.org/jira/browse/DRILL  

Page 67: Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility or Performance - 2014/07/08 Hadoop Conference Japan 2014

®© 2014 MapR Technologies

ありがとうございました!  

M.  C.  Srivas  [email protected]  

ちなみに人材募集中です…