Top Banner
Drillを読んでみよう Kai Sasaki(@Lewuathe)
28

Reading drill

Jul 17, 2015

Download

Software

Kai Sasaki
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Reading drill

Drillを読んでみようKai Sasaki(@Lewuathe)

Page 2: Reading drill

自己紹介• 佐々木 海(@Lewuathe)

• Hadoop, Stormなどの開発、運用

• Spark MLLibの開発も手伝ってます

• Big DataとDeep Learningをつなげるのが夢

Page 3: Reading drill

Apache Drill• MapRが中心となって開発している分散SQLエンジン

• GoogleのDremel論文がもとになっている

• 同種のソフトウェアとしては以下が有名

• Impala (http://impala.io/)

• Phoenix (http://phoenix.apache.org/)

• Presto (https://prestodb.io/)

Page 4: Reading drill

今日のお話• Drillの元論文を読んでみよう

• Drillのドキュメントを読んでみよう

• Drillのソースコードを読んでみよう

• まとめ

Page 5: Reading drill

Dremel• Googleの社内で利用されているアドホッククエリのためのリアルタイム分析プラットフォーム

• BigQueryのバックエンド

• 論文は公開されている

• “Dremel: Interactive Analysis of Web-Scale Datasets"

Page 6: Reading drill

Dremelの貢献

• ネストされたデータに対するColumnar Storage Format

• 木構造のNode群によるクエリ実行とAggregation

• 数千規模のノードでのスケール

Page 7: Reading drill

Columnar Storage Format

http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/36632.pdf

Page 8: Reading drill

Columnar Storage Format

http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/36632.pdf

Page 9: Reading drill

Columnar Storage Format

http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/36632.pdf

instantiate

Page 10: Reading drill

Columnar Storage Format

http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/36632.pdf

CSF

r: Repetition Level d: Definition Lebels

佐々木 海
佐々木 海
Definition Level
Page 11: Reading drill

Columnar Storage Format

http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/36632.pdf

CSF

r: Repetition Level d: Definition Lebels

Loss Less

佐々木 海
佐々木 海
Definition Level
Page 12: Reading drill

ドキュメントを読んでみようAgility 構築利用が容易。ITチームの力を必要としない

Flexibility 半構造化データ、ネストされたデータに対応

Familiarity ANSI SQLのスキルセットが使える。JDBC/ODBC経由での既存のBIツールも利用可能。

Page 13: Reading drill

Agility

Embedded Mode serviceがコマンドライン動作時に起動。試しに簡単に使うことができる。

Distributed Mode Productionでの動作モード。クラスタ上にDrillbitサービスを起動する。ZooKeeperサーバも必要。

Page 14: Reading drill

AgilityDistributed Mode用のCookbookを用意

https://supermarket.chef.io/cookbooks/drill

Page 15: Reading drill

Flexibility• Data Sourceへの接続はPluginから提供される

佐々木 海
Page 16: Reading drill

Flexibility• Data Sourceへの接続はPluginから提供される

Page 17: Reading drill

Familiarity��,'%&�'3+..�7-�.1&$.�� ����!�.10'10�/$+0�5(/2�� �#�10'10�!(/2#����������������������������������.10'10��/$+0�5(/2�� �#�10'10��!(/2#���������������������������������')4�#��.10'10"6($5*(3�,410#�.10'10��������������������������������')4�#��.10'10"6($5*(3��,410#�.10'10��������������������������������.10'10�0$/(���.10'10��0$/(���!��������������������������������8��10'10�!(/2�8��10'10��!(/2�8���������������������������������8������ ������8����� ������8����������������������������������316�4(.(&5('������4(&10'4�

異なるJSONファイルに対してのjoin操作

Page 18: Reading drill

ソースを読んでみよう• SQLLine

RDBMSと接続するためのコンソールユーティリティ

• OptiqJDBCサーバ、SQLパーサなどを含むフレームワーク"

• Drillbit各サーバに配置されるDrillクラスタを構成するノードサービスクエリプランの構築、実行などを担う

Page 19: Reading drill

SQLLine

1. クエリを発行

Optiq

DrillClient

Drillbit Drillbit Drillbit Drillbit Drillbit

Page 20: Reading drill

SQLLine

1. クエリを発行

Optiq

DrillClient

Drillbit Drillbit Drillbit Drillbit Drillbit

2. JDBC接続でパース

Page 21: Reading drill

SQLLine

1. クエリを発行

Optiq

DrillClient

Drillbit Drillbit Drillbit Drillbit Drillbit

2. JDBC接続でパース

3. Logical Planを渡す

Page 22: Reading drill

SQLLine

1. クエリを発行

Optiq

DrillClient

Drillbit Drillbit Drillbit Drillbit Drillbit

2. JDBC接続でパース

3. Logical Planを渡す

4. ProtocolBufferでPlanを送信

Page 23: Reading drill

SQLLine

1. クエリを発行

Optiq

DrillClient

Drillbit Drillbit Drillbit Drillbit Drillbit

Foreman

2. JDBC接続でパース

3. Logical Planを渡す

4. ProtocolBufferでPlanを送信

5. クエリ実行を管理するForemanが起動

Page 24: Reading drill

SQLLine

1. クエリを発行

Optiq

DrillClient

Drillbit Drillbit Drillbit Drillbit Drillbit

Foreman

2. JDBC接続でパース

3. Logical Planを渡す

4. ProtocolBufferでPlanを送信

5. クエリ実行を管理するForemanが起動

6. Planのfragmentをばらまく

Page 25: Reading drill

特徴• JDBC, ODBCが使えるどんなツールからもSQL を発行できる

• クエリの受付に関してSPOFがない

• Fragmentを分散できればできるほどスループットがあがる

Page 26: Reading drill

ContributionのアイデアSQL Functions Add, AVG, ConvertなどのSQL上で利用できる関数群exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl

New File FormatXML, Apache Avro, Thrift"

New Data Source Apache Solr, Elastic Search, MySQL, HTTP URL

New Query LanguagePig Latin, HiveQL

Page 27: Reading drill

まとめ• DrillはSelf-Drivenな分散SQLエンジン

• データソースとしての選択が柔軟に行える

• 一般的なSQLのスキルセットが使える

• 各コンポーネントが疎結合なため拡張性が高い

Page 28: Reading drill

ありがとうございました