Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
®
© 2014 MapR Technologies
®
© 2014 MapR Technologies
2014	
  年	
  7	
  月	
  8	
  日	
  
®
© 2014 MapR Technologies
MapR エンタープライズ Hadoop
トップランク	
   500 以上の顧客	
  クラウドリーダー	
  
®
© 2014 MapR Technologies
Hadoop ディストリビューション
Open Source Open Source
ディストリビューション A	
   ディストリビューション C	
  
運用管理	
  
Open So...
®
© 2014 MapR Technologies
MapR Distribution for Apache Hadoop
MapR Data Platform
(ランダム Read/Write)
データハブ
エンタープライズ
グレード
業務...
®
© 2014 MapR Technologies
MapR Distribution for Apache Hadoop
MapR Data Platform
(ランダム Read/Write)
データハブ
エンタープライズ
グレード
業務...
®
© 2014 MapR Technologies
®
© 2014 MapR Technologies
Hadoop は EDW の強化版—なぜか?
®
© 2014 MapR Technologies
®
© 2014 MapR Technologies
®
© 2014 MapR Technologies
複数のスキーマの統合は非常に困難	
  
なぜか?	
  	
  使い方があらかじめ決められている	
  
®
© 2014 MapR Technologies
縦割りが原因で分析は非常に困難
•  一意の{顧客,	
  取引}
の組み合わせをデー
タセットの中からどの
ように特定するか?	
  
	
  
•  一部のデータが見え
ない場合、異常挙...
®
© 2014 MapR Technologies 12
何が価値になるかを事前に知ることはできない
®
© 2014 MapR Technologies 13
なぜ Hadoop か?
®
© 2014 MapR Technologies
ビッグデータのための SQL を再考してみる
これまで通り	
  
• 標準	
  ANSI	
  SQL	
  
• 普遍的な仕様	
  
• よく知られている	
  
• BIや分析につ...
®
© 2014 MapR Technologies
SQL はすっかり浸透
	
  
®
© 2014 MapR Technologies
Hadoop の位置づけ
	
  
®
© 2014 MapR Technologies
YOU	
  CAN’T	
  HANDLE	
  REAL	
  SQL	
  
『ア・フュー・グッドメン(米/1992)』より	
  
®
© 2014 MapR Technologies
SQL
	
  	
  select	
  	
  *	
  	
  from	
  	
  A	
  
	
  	
  where	
  	
  exists	
  (	
  
	
  	...
®
© 2014 MapR Technologies
自己表現型のデータ
select	
  	
  cf.month,	
  	
  cf.year	
  
	
  	
  	
  from	
  	
  	
  hbase.table1;	...
®
© 2014 MapR Technologies
自己表現型のデータが一般的になってきている
中央管理されたスキーマ	
  
-­‐	
  静的	
-­‐	
  DB	
  管理者による管理	
-­‐	
  中央管理のレポジトリ	
	
入念...
®
© 2014 MapR Technologies
Apache Drill クイックツアー
®
© 2014 MapR Technologies
データソースはクエリの中で指定
!select timestamp, message!
!from dfs1.logs.`AppServerLogs/2014/
Jan/p001.parqu...
®
© 2014 MapR Technologies
データソースを直接組み合わせる
•  JSON	
  
•  CSV	
  
•  ORC	
  
(つまりすべてのHive型)	
  
•  Parquet	
  
•  HBase	
 ...
®
© 2014 MapR Technologies
ディレクトリツリー全体も処理可能
// ファイルが対象!
select errorLevel, count(*)

from dfs.logs.`/AppServerLogs/2014/Ja...
®
© 2014 MapR Technologies
JSON に対するクエリ
{	
  	
  name:	
  classic	
  
	
  	
  	
  	
  fillings:	
  [	
  	
  
	
  	
  	
  	
...
®
© 2014 MapR Technologies
Drill 内部のカーソル
DrillClient drill = new DrillClient().connect( …);
ResultReader r = drill.runSqlQ...
®
© 2014 MapR Technologies
ネストデータに対する直接クエリ
// JSON, parquet, その他のネストレコードの

マップのフラット化!
!
select name, flatten(fillings) as ...
®
© 2014 MapR Technologies
SQL または Fluent API を使った複雑なデータ処理
//	
  SQL	
  
Result	
  r	
  =	
  drill.sql(	
  "select	
  name...
®
© 2014 MapR Technologies
埋め込みデータに対するクエリ
// hbaseテーブルdonutsの、カラムファミリcf1内の、カラムdonut-json
内部に埋め込まれたJSON値!
!
select d.name, ...
®
© 2014 MapR Technologies
JSON レコード内部へのクエリ
// 各JSONレコード自体をひとつのデータベースとして扱える!
// 例: 少なくとも1つの中身が300カロリーを超えるすべてのドーナツを得る

!
!s...
®
© 2014 MapR Technologies
a
•  クエリ処理の途中でスキーマが変わる可能性がある	
  
•  スキーマ変更イベントによりオペレータの再構成ができるよ
うになっている	
– 柔軟性のためのオーバーヘッドを最小化	
...
®
© 2014 MapR Technologies
中央管理ではないメタデータ
// 顧客毎のツイート数をカウント。顧客マスタはHive、ツイートデータはHBaseに存在。
hbaseデータはメタデータ情報を持たないことに注目。!
!
Sel...
®
© 2014 MapR Technologies
内部のしくみ
®
© 2014 MapR Technologies
基本的な処理の流れ
Zookeeper	
  
DFS/HBase	
   DFS/HBase	
   DFS/HBase	
  
Drillbit	
  
分散キャッシュ	
  
Dril...
®
© 2014 MapR Technologies
クエリプランニングのステージ
パーサ
Logical
プランナ
Physical
プランナ
クエリ
Foreman
プランの
Fragment が
Drill Bit に送
られる
SQL	...
®
© 2014 MapR Technologies
クエリの実行
SQL	
  パーサ	
  
オプティマイザ	
  
スケジューラ	
  
Pig	
  パーサ	
  
Physical	
  プラン	
  
Mongo	
  	
  
C...
®
© 2014 MapR Technologies
クエリエンジンの特徴は…
•  カラム型/ベクトル化	
  	
  
•  楽観的/パイプライン化	
  
•  ランタイムコンパイル	
  
•  遅延バインディング	
  
•  拡張が...
®
© 2014 MapR Technologies
カラム表現
A	
   B	
   C	
   D	
   E	
  
A	
  
B	
  
C	
  
D	
  
ディスク上	
  
E	
  
®
© 2014 MapR Technologies
カラムナエンコーディング
•  カラム内の値を隣り合わせで格納	
  
– 高い圧縮効率	
  
– レンジマップ:	
  最小値と最大値を保管し、存
在しなければスキップ	
  
•  ク...
®
© 2014 MapR Technologies
ランレングスエンコーディング & 合計の計算
•  データセットは次のようにエンコード	
  <値>	
  <繰り返しの数>:	
  
–  2,	
  4	
  	
  (2	
  が	
...
®
© 2014 MapR Technologies
ビットパックディクショナリソート
•  データセットはディクショナリとビット位置を使ってエンコードされる:	
  
–  ディクショナリ:	
  [Rupert,	
  Bill,	
  L...
®
© 2014 MapR Technologies
Drill の 4値セマンティクス
•  SQL	
  の	
  3値セマンティクス	
  
– True	
  
– False	
  
– Unknown	
  
•  Drill	
 ...
®
© 2014 MapR Technologies
値のバッチ
•  Value	
  Vector	
  
– 同じスキーマを持つ値のリスト	
  
– それぞれの値に4値セマンティクスがつく	
  
•  バッチ (Batch)	
  単...
®
© 2014 MapR Technologies
固定長 Value Vector
®
© 2014 MapR Technologies
Null 許容値
®
© 2014 MapR Technologies
反復値
®
© 2014 MapR Technologies
可変長
®
© 2014 MapR Technologies
反復 Map
®
© 2014 MapR Technologies
ベクトル化
•  Drill	
  は複数のレコードを同時に処理する	
  
–  ワードサイズの操作	
  
–  SIMD	
  インストラクション	
  
•  GCC,	
  LLV...
®
© 2014 MapR Technologies
ランタイムコンパイラはより高速
•  JIT	
  はスマートだ
がランタイムコン
パイルはより高速	
  
•  Janino:	
  Java	
  ベース
の Java	
  コンパイ...
®
© 2014 MapR Technologies
Drill コンパイラ
ロードされた	
  
クラス	
  
2つのクラスの	
  
バイトコードを	
  
マージ	
  
Janino	
  が	
  
ランタイムバイト	
  
コード...
®
© 2014 MapR Technologies
楽観的
0	
  
20	
  
40	
  
60	
  
80	
  
100	
  
120	
  
140	
  
160	
  
スピード	
  vs.	
  チェックポイント処理...
®
© 2014 MapR Technologies
楽観的実行
•  復旧のコーディングは容易	
  
– 実行中のインスタンスは失敗したクエリの中間ステートを破棄する	
  
•  パイプライン化が可能	
  
– Batch	
  がある...
®
© 2014 MapR Technologies
パイプライン化
•  Record	
  Batch	
  はノード間でパイプ
ライン化される	
  
–  通常は	
  〜256kB	
  
•  Drill	
  の処理単位	
  
...
®
© 2014 MapR Technologies
Record Batch のパイプライン化
SQL	
  パーサ	
  
オプティマイザ	
  
スケジューラ	
  
Pig	
  パーサ	
  
Physical	
  プラン	
  
...
®
© 2014 MapR Technologies
	
  
ディスク	
  
パイプライン化
•  ランダムアクセス:	
  コピーや再構成なしでソート	
  
•  シリアライズ/デシリアライズを避ける	
  
•  オフヒープ	
  
...
®
© 2014 MapR Technologies
コストベース最適化
•  拡張が容易なフレームワーク	
  Opuq	
  を利用	
  
•  プラガブルなルールとコストモデル	
  	
  
•  分散実行プラン生成のルール	
  
...
®
© 2014 MapR Technologies
分散実行プランのコスト
•  オペレータは distribu5on	
  プロパティを持つ	
  
•  Hash,	
  Broadcast,	
  Singleton,	
  …	
  ...
®
© 2014 MapR Technologies
Apache Drill
自己記述型データもし
くは中央管理型メタデ
ータを利用した分析	
  
	
  
	
   SQL/BI	
  ツールおよび	
  
Apache	
  Hive	...
®
© 2014 MapR Technologies
Apache Drill ロードマップ
• 低レイテンシ SQL
• スキーマレスデータの処理
• ファイル & HBase/M7サポート
• Hive 連携
• ODBC/JDBC を経由...
®
© 2014 MapR Technologies
Drill	
  1.0	
   Hive	
  0.13	
  +	
  Tez	
   Impala	
  1.x	
   Shark	
  1.0	
  
レイテンシ	
   Low	...
®
© 2014 MapR Technologies
バイアスのないオープンソース (Linux を例に)
•  オープンソースディストリビューションは選択肢の提供が鍵	
  
– Linux	
  は MySQL,	
  PostgreSQL...
®
© 2014 MapR Technologies
MapR Distribution for Apache Hadoop
MapR Data Platform
(ランダム Read/Write)
データハブ
エンタープライズ
グレード
業務...
®
© 2014 MapR Technologies
MapR の Drill 開発チーム
•  ワールドクラスの SQL	
  チーム、〜20	
  名	
  
•  商用データベース開発の経験、のべ	
  150	
  年以上	
  
• ...
®
© 2014 MapR Technologies
アクティブな Drill コミュニティ
•  大きなコミュニティ、急速に拡大中	
  
– コントリビュータ	
  35〜40名、コミッタ	
  16名	
  
– Microsoz,	
 ...
®
© 2014 MapR Technologies
Apache Drill リソース
•  Drill	
  を始めるのはかんたん	
  
– 	
  tarball	
  をダウンロードして、ローカルファイルに対し SQL	
  クエリを...
®
© 2014 MapR Technologies
ありがとうございました!	
  
M.	
  C.	
  Srivas	
  
srivas@mapr.com	
  
ちなみに人材募集中です…	
  	
  
Upcoming SlideShare
Loading in …5
×

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

2,954 views

Published on

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

Published in: Technology
  • Be the first to comment

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

  1. 1. ® © 2014 MapR Technologies ® © 2014 MapR Technologies 2014  年  7  月  8  日  
  2. 2. ® © 2014 MapR Technologies MapR エンタープライズ Hadoop トップランク   500 以上の顧客  クラウドリーダー  
  3. 3. ® © 2014 MapR Technologies Hadoop ディストリビューション Open Source Open Source ディストリビューション A   ディストリビューション C   運用管理   Open Source 運用管理   アーキテクチャのイノベーション  
  4. 4. ® © 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 ZooKeeperSqoop Knox* WhirrFalcon*Flume データ 統合・ アクセス HttpFS Hue NFS   HDFS  API   HBase  API   JSON  API   MapRControlSystem (運用管理・監視) * ディストリビューションに統合/認証予定 CLI  GUI  REST  API  
  5. 5. ® © 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 ZooKeeperSqoop Knox* WhirrFalcon*Flume データ 統合・ アクセス HttpFS Hue NFS   HDFS  API   HBase  API   JSON  API   MapRControlSystem (運用管理・監視) CLI  GUI  REST  API   Apache Drill * ディストリビューションに統合/認証予定
  6. 6. ® © 2014 MapR Technologies
  7. 7. ® © 2014 MapR Technologies Hadoop は EDW の強化版—なぜか?
  8. 8. ® © 2014 MapR Technologies
  9. 9. ® © 2014 MapR Technologies
  10. 10. ® © 2014 MapR Technologies 複数のスキーマの統合は非常に困難   なぜか?    使い方があらかじめ決められている  
  11. 11. ® © 2014 MapR Technologies 縦割りが原因で分析は非常に困難 •  一意の{顧客,  取引} の組み合わせをデー タセットの中からどの ように特定するか?     •  一部のデータが見え ない場合、異常挙動 がないことをどのよ うに保証できるのか?  
  12. 12. ® © 2014 MapR Technologies 12 何が価値になるかを事前に知ることはできない
  13. 13. ® © 2014 MapR Technologies 13 なぜ Hadoop か?
  14. 14. ® © 2014 MapR Technologies ビッグデータのための SQL を再考してみる これまで通り   • 標準  ANSI  SQL   • 普遍的な仕様   • よく知られている   • BIや分析については切り替え不要   • 単一テクノロジー   • 複数のテクノロジーを管理するのは大変   • エンタープライズ向け   • システム・オブ・レコード、高可用性、災害 対策、セキュリティ、マルチテナント、…   新しく創出   • データモデルの柔軟性   • スキーマの急速な進化を許容   • 半構造化データ型をサポート   • アジリティ   • 開発者とDB管理者が同一の場合、セルフサービ スを可能に   • スケーラビリティ   • スキーマ、プロセス、運用管理などあらゆる観点で  
  15. 15. ® © 2014 MapR Technologies SQL はすっかり浸透  
  16. 16. ® © 2014 MapR Technologies Hadoop の位置づけ  
  17. 17. ® © 2014 MapR Technologies YOU  CAN’T  HANDLE  REAL  SQL   『ア・フュー・グッドメン(米/1992)』より  
  18. 18. ® © 2014 MapR Technologies SQL    select    *    from    A      where    exists  (                select  1  from  B  where  B.b  <  100  );     •  Apache  HIVE  は上記を処理できないことをご存知ですか?   – 例えば  Hive,  Impala,  Spark/Shark  
  19. 19. ® © 2014 MapR Technologies 自己表現型のデータ select    cf.month,    cf.year        from      hbase.table1;     •  通常の  SQL  は上記を処理できないことをご存知ですか?   •  HIVE  や Impala,  Shark  のようなものでもできないですよね?   •  理由はメタストア定義がないから  
  20. 20. ® © 2014 MapR Technologies 自己表現型のデータが一般的になってきている 中央管理されたスキーマ   -­‐  静的 -­‐  DB  管理者による管理 -­‐  中央管理のレポジトリ 入念なデータの準備のために長い時間が必要 (ETL,  スキーマの作成/変更,  等)    –  6〜18  ヶ月 自己表現型もしくはスキーマレスデータ   -­‐  動的/更新されていく   -­‐  アプリケーションによる管理   -­‐  データに埋め込まれる     スキーマをなくすことで,  大容量・多用途・更新の 速いデータにより適している Apache  Drill  
  21. 21. ® © 2014 MapR Technologies Apache Drill クイックツアー
  22. 22. ® © 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  テーブル  
  23. 23. ® © 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(*);    
  24. 24. ® © 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! dir 0! dir 1!
  25. 25. ® © 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  
  26. 26. ® © 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  }]}      
  27. 27. ® © 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  }]}      
  28. 28. ® © 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  }]}      
  29. 29. ® © 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` );! !
  30. 30. ® © 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; ! !
  31. 31. ® © 2014 MapR Technologies a •  クエリ処理の途中でスキーマが変わる可能性がある   •  スキーマ変更イベントによりオペレータの再構成ができるよ うになっている – 柔軟性のためのオーバーヘッドを最小化   – 実際のデータ特性に基づいてより高度な実行時最適化を行える  
  32. 32. ® © 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);!
  33. 33. ® © 2014 MapR Technologies 内部のしくみ
  34. 34. ® © 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  
  35. 35. ® © 2014 MapR Technologies クエリプランニングのステージ パーサ Logical プランナ Physical プランナ クエリ Foreman プランの Fragment が Drill Bit に送 られる SQL   クエリ   ヒューリスティック   およびコストベース   コストベース  
  36. 36. ® © 2014 MapR Technologies クエリの実行 SQL  パーサ   オプティマイザ   スケジューラ   Pig  パーサ   Physical  プラン   Mongo     Cassandra   HiveQL  パーサ   RPC  エンドポイント   分散キャッシュ   ストレージエンジンインターフェース Operators  オペレータ   Foreman   Logical  プラン   HDFS   HBase   JDBC  エンドポイント   ODBC  エンドポイント  
  37. 37. ® © 2014 MapR Technologies クエリエンジンの特徴は… •  カラム型/ベクトル化     •  楽観的/パイプライン化   •  ランタイムコンパイル   •  遅延バインディング   •  拡張が容易  
  38. 38. ® © 2014 MapR Technologies カラム表現 A   B   C   D   E   A   B   C   D   ディスク上   E  
  39. 39. ® © 2014 MapR Technologies カラムナエンコーディング •  カラム内の値を隣り合わせで格納   – 高い圧縮効率   – レンジマップ:  最小値と最大値を保管し、存 在しなければスキップ   •  クエリで対象になっているカラムのみを取 得   •  デコードすることなく集約可能   A   B   C   D   ディスク上   E  
  40. 40. ® © 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   –  より少ないメモリ、より少ない計算  
  41. 41. ® © 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回の固定長ディクショナリビットの比較  
  42. 42. ® © 2014 MapR Technologies Drill の 4値セマンティクス •  SQL  の  3値セマンティクス   – True   – False   – Unknown   •  Drill  は第4の値を追加   – Repeated  
  43. 43. ® © 2014 MapR Technologies 値のバッチ •  Value  Vector   – 同じスキーマを持つ値のリスト   – それぞれの値に4値セマンティクスがつく   •  バッチ (Batch)  単位で送信される   –   Batch  あたり最大  256KB   –   Batch  あたり最大  64K  行   •  1つのリクエストに複数の応答があることを想定して   RPC  が設計されている  
  44. 44. ® © 2014 MapR Technologies 固定長 Value Vector
  45. 45. ® © 2014 MapR Technologies Null 許容値
  46. 46. ® © 2014 MapR Technologies 反復値
  47. 47. ® © 2014 MapR Technologies 可変長
  48. 48. ® © 2014 MapR Technologies 反復 Map
  49. 49. ® © 2014 MapR Technologies ベクトル化 •  Drill  は複数のレコードを同時に処理する   –  ワードサイズの操作   –  SIMD  インストラクション   •  GCC,  LLVM,  JVM  はみな、さまざまな最適化を自動的に行っている   –  アルゴリズムのコーディングによりさらなる最適化も   •  Logical  ベクトル化   –  ビットマップの利用による非常に高速な  null  チェック   –  CPU  パイプラインを高速化するため分岐を回避  
  50. 50. ® © 2014 MapR Technologies ランタイムコンパイラはより高速 •  JIT  はスマートだ がランタイムコン パイルはより高速   •  Janino:  Java  ベース の Java  コンパイラ   From  hsp://bit.ly/16Xk32x  
  51. 51. ® © 2014 MapR Technologies Drill コンパイラ ロードされた   クラス   2つのクラスの   バイトコードを   マージ   Janino  が   ランタイムバイト   コードをコンパイル   CodeModel   がコードを生成   事前コンパイル   されたバイトコード   テンプレート  
  52. 52. ® © 2014 MapR Technologies 楽観的 0   20   40   60   80   100   120   140   160   スピード  vs.  チェックポイント処理   チェックポイント不要   頻繁なチェックポイント  Apache  Drill  
  53. 53. ® © 2014 MapR Technologies 楽観的実行 •  復旧のコーディングは容易   – 実行中のインスタンスは失敗したクエリの中間ステートを破棄する   •  パイプライン化が可能   – Batch  がある程度大きくなればすぐに結果を送信   – バリアのないクエリの分解が必要  
  54. 54. ® © 2014 MapR Technologies パイプライン化 •  Record  Batch  はノード間でパイプ ライン化される   –  通常は  〜256kB   •  Drill  の処理単位   –  オペレータは  Batch  に対して処理する   •  Batch  境界でオペレータの再構 成が発生   DrillBit   DrillBit   DrillBit  
  55. 55. ® © 2014 MapR Technologies Record Batch のパイプライン化 SQL  パーサ   オプティマイザ   スケジューラ   Pig  パーサ   Physical  プラン   Mongo     Cassandra   HiveQL  パーサ   RPC  エンドポイント   分散キャッシュ   ストレージエンジンインターフェース Operators  オペレータ   Foreman   Logical  プラン   HDFS   HBase   JDBC  エンドポイント   ODBC  エンドポイント  
  56. 56. ® © 2014 MapR Technologies   ディスク   パイプライン化 •  ランダムアクセス:  コピーや再構成なしでソート   •  シリアライズ/デシリアライズを避ける   •  オフヒープ   (メモリが大きい場合のGC問題を回避)   •  Full  specificauon  +  オフヒープ  +  Batch   – C/C++  オペレータが有効に (早い!)   •  ディスクへの Read/Write   – データがメモリより大きい場合   Drill  Bit   メモリに   収まらない場合   ディスクを利用  
  57. 57. ® © 2014 MapR Technologies コストベース最適化 •  拡張が容易なフレームワーク  Opuq  を利用   •  プラガブルなルールとコストモデル     •  分散実行プラン生成のルール   •  Exchange  オペレータを Physical  プランに挿入   •  Opuq  が並列クエリプランの探索を強化   •  プラガブルコストモデル   –  CPU,  IO,  メモリ,  ネットワークコスト  (データ局所性)   –  ストレージエンジンの機能  (HDFS  vs  HIVE  vs  HBase)     クエリ オプティマイザ プラガブル   ルール   プラガブル   コストモデル  
  58. 58. ® © 2014 MapR Technologies 分散実行プランのコスト •  オペレータは distribu5on  プロパティを持つ   •  Hash,  Broadcast,  Singleton,  …       •  Exchange  オペレータが分散を実施   •  Hash:  HashToRandomExchange   •  Broadcast:    BroadcastExchange   •  Singleton:    UnionExchange,  SingleMergeExchange   •  すべてを数値化しコストを計算して最適な   プランを決定   •  マージジョイン vs  ハッシュジョイン   •  パーティションベースジョイン vs   ブロードキャストベースジョイン   •  ストリーミング集約 vs  ハッシュ集約   •  集約を  1  段階で行うか 2  段階で行うか   •  部分的にローカル集約 +  最終的な集約   HashToRandomExchange   ソート   ストリーミングの集約   データ データ データ
  59. 59. ® © 2014 MapR Technologies Apache Drill 自己記述型データもし くは中央管理型メタデ ータを利用した分析       SQL/BI  ツールおよび   Apache  Hive  への投資を 再利用   半構造化データ・   ネストデータの分析   …  1  から作り上げたアーキテクチャにより、   低レイテンシクエリのスケーラブルな処理を実現   フレキシブルな   スキーマ管理   ネストデータに対する 効率の良い分析 既存資産との   プラグアンドプレイ  
  60. 60. ® © 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
  61. 61. ® © 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 の選択肢
  62. 62. ® © 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   単一のバージョン   単一のバージョン  
  63. 63. ® © 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 ZooKeeperSqoop Knox* WhirrFalcon*Flume データ 統合・ アクセス HttpFS Hue NFS   HDFS  API   HBase  API   JSON  API   MapRControlSystem (運用管理・監視) CLI  GUI  REST  API   * ディストリビューションに統合/認証予定
  64. 64. ® © 2014 MapR Technologies MapR の Drill 開発チーム •  ワールドクラスの SQL  チーム、〜20  名   •  商用データベース開発の経験、のべ  150  年以上   •  Oracle,  DB2,  ParAccel,  Teradata,  SQLServer,  Veruca   •  Apache  Hive  におけるいくつかの困難な問題を解決  
  65. 65. ® © 2014 MapR Technologies アクティブな Drill コミュニティ •  大きなコミュニティ、急速に拡大中   – コントリビュータ  35〜40名、コミッタ  16名   – Microsoz,  Linked-­‐in,  Oracle,  Facebook,  Visa,  Lucidworks,   Concurrent,  多数の大学   •  2014  年の活動   – 20  回を超える Meet-­‐Up、さらに多数を予定   – Hackathon  2回、40  を超える参加者   •  皆さんの参加、学習、貢献をお待ちしています  (Have  fun!)  
  66. 66. ® © 2014 MapR Technologies Apache Drill リソース •  Drill  を始めるのはかんたん   –   tarball  をダウンロードして、ローカルファイルに対し SQL  クエリを 投げるだけ   •  メーリングリスト   –  drill-­‐user@incubator.apache.org   –  drill-­‐dev@incubator.apache.org   •  ドキュメント:    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  
  67. 67. ® © 2014 MapR Technologies ありがとうございました!   M.  C.  Srivas   srivas@mapr.com   ちなみに人材募集中です…    

×