Apache Drillは、大規模データセットの対話型分析を支援するオープンソースの
ソフトウェアフレームワークです。GoogleのDremelシステムを基に開発され、Google BigQueryのオープンソース版とも言えます。Drillは、数テラバイトから数兆レコードのデータを数秒で処理できるよう設計されており、10,000台以上のサーバーにスケールアップできます。Apacheのトップレベルプロジェクトの一つとして、活発に開発が進められています。
幅広いデータソースへの対応
Drillは、多様なNoSQLデータベースやファイルシステムをサポートしています。HBase、MongoDB、MapR-DBといったNoSQLデータベースに加え、HDFS、MapR-FS、Amazon S3、Azure Blob Storage、Google Cloud Storageなどのクラウドストレージ、さらにはSwift、NAS、ローカルファイルシステムにも対応しています。これにより、複数のデータストアに分散したデータを、単一のクエリで結合することが可能です。例えば、MongoDBに格納されたユーザープロファイルと、Hadoop上のイベントログを組み合わせて分析するといった使い方ができます。
データ局所性を意識した最適化
Drillのデータストアを意識したオプティマイザは、データストア内部の処理能力を最大限に活用するために、クエリプランを自動的に再構成します。また、Drillとデータストアが同じノード上にある場合、データ局所性を活用することで、処理速度を向上させることができます。
柔軟な機能拡張
Apache Drill 1.9では、動的なユーザー定義関数が導入されました。これにより、ユーザーは独自の処理を実装し、Drillの機能を拡張できます。さらに、Apache Drill 1.11では、暗号関連関数とPCAPファイル形式への対応が追加され、セキュリティやネットワーク分析の分野でも活用できるようになりました。
主な特徴
スキーマレスなドキュメントモデル: MongoDBやElasticsearchと同様に、事前にスキーマを定義する必要がなく、ドキュメントを柔軟に扱うことができます。
業界標準API: ANSI SQL、ODBC/JDBC、RESTful APIをサポートしており、既存のツールやアプリケーションとの連携が容易です。
高いユーザビリティ: ユーザーフレンドリーな設計で、初心者でも容易に利用開始できます。
プラガブルアーキテクチャ: 様々なデータストアに接続できるプラグインアーキテクチャを採用しており、拡張性が高いです。
サポートされるデータストア
Drillは、主に
Apache Hadoopテキストファイルや、NoSQL、クラウドストレージなどの非リレーショナルデータストアに重点を置いています。以下のデータストアがサポートされています。
Hadoopディストリビューション: Apache Hadoop、MapR、CDH、Amazon EMRを含むすべてのHadoopディストリビューション(HDFS API 2.3以降)をサポート。
NoSQL: MongoDB、
Apache HBaseをサポート。
クラウドストレージ: Amazon S3、Google Cloud Storage、Azure Blob Storage、Swiftをサポート。
データ形式: Apache Avro、Apache Parquet、などの複数のデータ形式に対応。
RDBMS: JDBCを利用したRDBMSストレージプラグインをサポート。
新しいデータストアのサポートは、ストレージプラグインを開発することで簡単に追加できます。Drillのスキーマレスなデータモデルにより、非リレーショナルデータストアをオンザフライで検索できるのが特徴です。
関連技術
クラウドコンピューティング
ビッグデータ
データ指向コンピューティング
参考文献
Drillの開発に影響を与えた論文として、以下のようなものがあります。
2005年: "From Databases to Dataspaces: A New Abstraction for Information Management" では、あらゆるデータ形式を受け入れ、APIを通じてデータアクセスを提供し、データに対する理解に基づいて進化するストレージシステムの必要性が示されています。
2010年: "Dremel: Interactive Analysis of Web-Scale Datasets" は、Drillの基礎となったDremelシステムの論文です。
外部リンク
Apache Drill 公式ウェブサイト
Apache Drill: Tracking its history as an open source community
SQL and Hadoop: It's complicated
Crunching Big Data with Google BigQuery + Introducing Apache Drill