Hadoop関連のあらゆる技術が注目を集める現在、Hadoopのエコシステムの中から新しいプロジェクト/実装が生まれ続けているのは驚くべきことではない。Apache Drillは大規模なデータセットをインタラクティブに分析できる分散システムを開発するプロジェクトであり、GoogleのDremelから着想を得ている。Hadoop MapReduceのような既存のビッグデータバッチ処理フレームワークやS4やStormのようなストリームプロセスフレームワークの代替ではなく、大規模データのリアルタイムでインタラクティブな分析を実現する、今までなかった製品だ。
Dremelと同じようにDrillの実装は入れ子になっているツリー構造に似たデータの処理を基本にしている。Dremelでは、データは入れ子のスキーマベースデータモデルであるプロトコルバッファが基本になっている。Drillはこのデータモデルを拡張し、Apache Avroのようなスキーマベースの実装やJSONやBSONのようなスキーマレスの実装を追加している。さらに単一のデータ構造に加え、Drillはメモリに乗る小さなデータ構造との結合処理である“baby joins”もサポートする予定だ。
DremelはひとつのSQLライクな問い合わせ言語で入れ子構造のデータを扱うが、Drillは次のような複数の問い合わせ言語を使えるようにする計画だ。
· DrQL – Google BigQuery/Dremelと互換性がある入れ子データ向けの問い合わせ言語。この結果、BigQueryアプリケーションはDrillで利用できる。
· Mongo Query Language
高速の問い合わせ処理を実現するため、Drillは特別な分散拡張処理エンジン(たとえば、Dryadに似た)を採用する。このエンジンはデータの局所参照性、耐障害性、列ベース、行ベースの階層的な処理を実現する。
Drillの最初の目標は、システムの詳細な要件とアーキテクチャを明確にし、処理エンジンとDrQLを含む初期バージョンを開発することだ。
現時点では、初期の要件を特定するための重要な作業が終わり、システム全体を定義している。主要なコンポーネントを実装するのが次のステップだ。いくつかのコンポーネントはOpenDremelのパーサーのような他のプロジェクトの一部が元になっている。
InfoQは中心的な開発者であるTed Dunning氏にDrillについて話を聞いた。
InfoQ:あなたが興味を引かれたDrillについて教えてください。
Dunning:この新しいプロジェクトは今までオープンソース界隈では無視されていた計算モデルに関するコミュニティを構築するため機会になります。このコミュニティはこの種の計算に興味のある人々の共通認識を土台にして構築されるでしょう。このようなコミュニティは最終的に開発されるソフトウエアそのものよりも重要です。Apacheもコードよりコミュニティの方が重要だと述べています。Hadoopではインターフェースに関するコミュニティと共通認識が生まれたことで活気に満ちた市場が生まれました。私たちはDremelのような計算モデルでも同じことを実現したいと考えています。ひとつの企業のために開発を秘密裏に行い、成果だけを発表するだけではだめです。Hadoopが実現したのと同じやり方で共通認識とコミュニティを構築したいと思います。
InfoQ:主にどのような用途を想定していますか。
Dunning: map-reduceとリアルタイム分析を補完すると考えています。これらの計算はDrillの問い合わせを使ってアドホックな分析ができるフラットなテーブルを生成します。この用途によって強力なドリルダウン機能と適切な視覚化機能を持ち合わせたダッシュボードの開発が進むかもしれません。
また、ひとつのマシンでDrillを動かして列のないフォーマットのデータを処理するのもいいと思います。フラットのファイルの集約や単純な分析をしたいだけなら、AWKやPerlやPythonのようなスクリプト言語の代わりになるはずです。
InfoQ:Drillの実装の複雑な点や困難な点を教えてください。
Dunning: Drillの問い合わせ実行には3つの段階があります。まず、問い合わせを解析します。単純に構文解析をするだけではありません。意味の解析も必要です。そして、パーサーが生成した論理プランを物理プランに変換します。この変換は利用するワーカーの数、フォーマットとストレージファイル、処理エンジンの能力を考慮して実行されます。最後に物理プランを効率的に実行します。このとき物理プランの一部はある種のJITコンパイラを使ってネイティブコードに変換されることもあります。各段階を横断して考える場合、分散環境で各段階を協調しながら実行する方法が課題になります。
私の考えでは、パーサーの問題はほとんど解決しています。まだ、入れ子のデータを理解できませんが、Optiqと呼ばれる先進的なクエリオプティマイザを利用できます。この結果、処理エンジンがコードの大部分を占めており、グルーコードも多数含まれています。私自身は、最初はとても原始的な処理エンジンだが、これからより先進的なエンジンに進歩していくだろうと思っています。
InfoQ:現時点ではどのような企業がDrillに興味を持っていますか。
Dunning: 多くの企業が興味を持っており、現在も増えています。主要な商用Hadoopの開発会社の社員がメーリングリストやミートアップに参加していますし、Concurrent、Drawn to Scale、Big Data Craft、Hadaptというような企業も興味を持っています。Big Data Craftは第1回のDrill User Groupにイスラエルから参加しに来てくれ、OpenDremel(現在はDrillプロジェクトの一部になっている)の進み具合について発表してくれました。IntelやTwitterのような大企業も興味を持ってくれています。Bay Area Drill User Groupには現在、200人参加しており、開発者メーリングリストも同じくらいの購読者がいます。
あらゆる種類の企業から注目を集めています。
しかし、ひとつ注意したいのは、Apacheのプロジェクトは常に個人の参加者を受け入れてきたということです。誰がこのような個人の努力を利用し、支援するのかはApacheへの貢献とは関係ありません。Apacheのプロジェクトを所有し管理していることを誇示するのが好きな企業もありますが、Apache Drillはそのようなプロジェクトにはなりません。個人の参加を歓迎します。
InfoQ: 最初のバージョンが利用できるようになるのはいつごろでしょうか。
Dunning: コミュニティ次第です。Open Dremelを元にして短い期間でパーサーを作ることができました。プランナーやクエリオプティマイザもこれに続きます。いつ利用できるようになるかは、予想できません。このプロジェクトに参加したい人には、やれることがまだ貢献できることがたくさんあります。