自己紹介• 佐々木 海(@Lewuathe)
• Hadoop, Stormなどの開発、運用
• Spark MLLibの開発も手伝ってます
• Big DataとDeep Learningをつなげるのが夢
Apache Drill• MapRが中心となって開発している分散SQLエンジン
• GoogleのDremel論文がもとになっている
• 同種のソフトウェアとしては以下が有名
• Impala (http://impala.io/)
• Phoenix (http://phoenix.apache.org/)
• Presto (https://prestodb.io/)
Dremel• Googleの社内で利用されているアドホッククエリのためのリアルタイム分析プラットフォーム
• BigQueryのバックエンド
• 論文は公開されている
• “Dremel: Interactive Analysis of Web-Scale Datasets"
Columnar Storage Format
http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/36632.pdf
Columnar Storage Format
http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/36632.pdf
Columnar Storage Format
http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/36632.pdf
instantiate
Columnar Storage Format
http://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/36632.pdf
CSF
r: Repetition Level d: Definition Lebels
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
ドキュメントを読んでみようAgility 構築利用が容易。ITチームの力を必要としない
Flexibility 半構造化データ、ネストされたデータに対応
Familiarity ANSI SQLのスキルセットが使える。JDBC/ODBC経由での既存のBIツールも利用可能。
Agility
Embedded Mode serviceがコマンドライン動作時に起動。試しに簡単に使うことができる。
Distributed Mode Productionでの動作モード。クラスタ上にDrillbitサービスを起動する。ZooKeeperサーバも必要。
AgilityDistributed Mode用のCookbookを用意
https://supermarket.chef.io/cookbooks/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操作
ソースを読んでみよう• SQLLine
RDBMSと接続するためのコンソールユーティリティ
• OptiqJDBCサーバ、SQLパーサなどを含むフレームワーク"
• Drillbit各サーバに配置されるDrillクラスタを構成するノードサービスクエリプランの構築、実行などを担う
SQLLine
1. クエリを発行
Optiq
DrillClient
Drillbit Drillbit Drillbit Drillbit Drillbit
2. JDBC接続でパース
3. Logical Planを渡す
SQLLine
1. クエリを発行
Optiq
DrillClient
Drillbit Drillbit Drillbit Drillbit Drillbit
2. JDBC接続でパース
3. Logical Planを渡す
4. ProtocolBufferでPlanを送信
SQLLine
1. クエリを発行
Optiq
DrillClient
Drillbit Drillbit Drillbit Drillbit Drillbit
Foreman
2. JDBC接続でパース
3. Logical Planを渡す
4. ProtocolBufferでPlanを送信
5. クエリ実行を管理するForemanが起動
SQLLine
1. クエリを発行
Optiq
DrillClient
Drillbit Drillbit Drillbit Drillbit Drillbit
Foreman
2. JDBC接続でパース
3. Logical Planを渡す
4. ProtocolBufferでPlanを送信
5. クエリ実行を管理するForemanが起動
6. Planのfragmentをばらまく
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