エッジコンピューティングによって高性能化したエッジ機器にデータが格納されるようになると、クラウドサービスにデータを集めないでエッジ機器のデータを直接検索したいとニーズが生まれてきました。そして、IoT(Internet of Things) システムでは広域に分散されたエッジ機器のデータ群を高速に検索するために、マルチデータベースにアクセスできる分散SQLエンジンが求められています。そこで、分散SQLエンジンの Apache Drill についてまとめました。
動作環境やライセンスなど基本情報から、対応プログラム言語、可用性、拡張性など機能情報やセキュリティまで掘り下げて、以下のようにまとめました。
Apache Drill
Drill は構造化/セミ構造化/ネスト化データを含んだ大規模データセット向け低レイテンシ分散クエリエンジンです。Drill は Google の Dremel の刺激を受けて、数千ノードをスケールさせ、かつ BI/Analytics が要求するインタラクティブ可能な速度でペタバイト級データをクエリできるように設計されています。さらに、Drill は大規模データセット上のインタラクティブ・アドホック・クエリに有益です。また、Drill は集中型メタデータ・リポジトリを必要としません。
参照 : Architecture Introduction
基本情報
項目 | 内容 |
---|---|
URL | https://drill.apache.org/ |
データモデル | JSONデータモデル 参照 : Drillix: Combined Operational & Analytical SQL at Scale |
動作環境 |
CPU: メモリ: 4GB 以上 ストレージ : OS:Linux, Mac OS X, Windows (Oracle JDK version 8以上) 参照 : Drill in 10 Minutes |
実装言語 | Java |
ライセンス | Apache License, Version 2.0 https://github.com/apache/drill/blob/master/LICENSE |
主なバージョン |
1.16.0 (2019-05-02) : ANALYZE TABLEステートメントでParquetデータの統計計算、CREATE OR REPLACE SCHEMAコマンドでテキストファイルのスキーマを定義、REFRESH TABLE METADATAコマンドでカラム指定でのメタデータのキャッシュファイルを生成機能、SYSLOG 用プラグイン 1.15.0 (2018-12-31) : SQLLine のアップグレード、インデックスのサポート、カスタム・アクセス制御リスト(ACL)付き znodeによるセキュア機能、INFORMATION_SCHEMAファイルテーブル、システムテーブル・ファンクション 1.14.0 (2018-08-05) : Docker containerでDrillを動かすための機能、ストレージ・プラグインのコンフィグレーションのエクスポートとセーブ機能、イメージ・メタデータ・フォーマット・プラグインの追加、セッション単位の Hiveプロパティの設定オプション |
開発元 | Apache Software Foundation |
開発体制 | PMC(Project Management Committee) Chair 1名(Arina Ielchiieva氏)、PMC 24名、Committers 53名、Contoributors 125名 参照 : Apache Drill Committee |
活動状況 | 開発者用メーリングリストの投稿月間 平均約 600件、GitHubでソースコード・コミット月間約 20件 参照 : dev@drill.apache.org |
国内サポート体制 | 現時点で国内での保守サポートサービスを行っている企業、団体はありません。 |
その他 |
機能情報
項目 | 内容 |
---|---|
対応プログラム言語 | RESTful HTTP API、JDBC、ODBCを利用可能なプログラム言語であればアクセス可能です |
アクセス可能なDB | HBase、MongoDB、MapR-DB、Hive、HDFS、MapR-FS、Amazon S3、Azure Blob Storage、Google Cloud Storage、OpenStack Swift、NAS、JSONデータモデル、ローカルファイル(JSON形式/CSV形式)、ODBC/JDBC、PostgreSQL、 MySQL、Oracle、MS SQL Server、Apache Derby、Restful APIなどがアクセス可能です。 参照 : Query any non-relational datastore |
クエリ言語 | SQL |
マルチテナント | マルチテナント機能は存在しません |
インデックス | DrillはMapR-DBストレージプラグインだけインデックスを(Drill 1.5から)サポートします。インデックスベースのクエリプランを生成するためにデータソースのインデックスを利用することができます(primary か secondary)。 Drillはインデックスをカバーリング、ノンカバーリング、ファンクショナルのインデックスプランで利用することができる。 参照 : Querying Indexes Introduction |
トランザクション | トランザクション機能は存在しません |
ストアドプロシジャ | ユーザ定義関数を作成することが可能です。 参照 : Develop Custom Functions Introduction |
dockerコンテナ | dockerhubでDrillのDocker Containerイメージが公開されています。 https://hub.docker.com/r/harisekhon/apache-drill/ |
性能拡張 | Drillbitと呼ばれる Drilを構成する各サーバノードによって性能拡張を行います。各DrillBitは処理のコーディネーション、クエリプランニング、処理の実行などのすべての役割を全ノードが共通で持っています。 参照 : Architecture |
高可用性 | Drillbitに有効なフォールト・トレランスを持っていません |
運用 | バックアップや監視ツールは存在しません |
出来ないこと |
セキュリティ
項目 | 内容 |
---|---|
通信暗号化 | クライアントからのすべての通信は、SSL/TLS 1.2に対応しています。 |
DB格納領域の暗号化 | なし |
認証機能 | Kerberos認証、PAM認証、ダイジェスト認証が使用可能です |
権限管理 | 権限管理は可能です |
DB監査 | Auditロギングがあります |
参照 : Securing Drill Introduction
まとめ
Apache Drill は、分散型SQLクエリエンジンに特化しているため、一般的なDB機能はサポートしていません。特に高可用性、運用面は対策が必要だと考えます。マルチテナント機能がないことはマイナスポイントと考えます。
また、SQL on Hadoopのホントのところ~Impala v.s. Hive on Tez v.s. Drill~の18ページで報告されているように、クエリ実行成功数が極端に少なく検証が困難、実行成功したクエリでも最速となるケースが見られない、という現象を私達も確認しています。
これらの状況から、Apeche Drillは、IoTデータのビッグデータ検索には向いていないと考えます。
掲載内容は、(株)東芝 デジタルイノベーションテクノロジーセンター及びソフトウェア技術センターの見解です。コメント等は広くご意見を頂ければ幸いです。
また、記述について誤りがあったり、気になることがあれば、編集リクエストやコメントでフィードバックしていただけると助かります。