Enterprise Data Warehouse

爆速データウェアハウスなApache Druidを試す

こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。

今回はApache Druidについてです。

Apache Druidとは

Apache Druidはカラム型(列指向)の分散型データストアで、オープソースで開発が進められてます。
データのインジェストはバッチとストリーミング両方に対応しており、垂直方向へのスケールに強く、また、新しくインジェストしたデータにはリアルタイムで検索インデックスが作成されるという特徴があります。
SQLインターフェースを備えたリアルタイムデータウェアハウスと言う感じで、とにかくパフォーマンス命で低レイテンシを重視してます。
クエリ実行におけるパフォーマンスはHiveの260倍、BigQueryの10倍出るらしい。。

TL;DR

Apache Druidは爆速データウェアハウスです。

そんなApache Druidを早速GCP上で動かして見ました。

さっそくQuickStart

Apache DruidのQuickstartを実際に試しました。
Quickstart · Apache Druid

まずはVMを用意します。
マシンタイプは n1-standard-1 (1 vCPU, 3.75 GB memory) で、OSはUbuntu 18.04にしました。
これはApache Druidの必要最低スペック(nano-quickstart用)です。

DruidはJava 8が必要なので今回はOpen JDK 8をインストールします。

Open JDK 8をインストール

Ubuntuでインストールするには、下記のコマンドを実行します。

sudo apt install openjdk-8-jdk -y

インストール後、/etc/environment に環境変数JAVA_HOMEをセットします。

JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"

それからsourceコマンドでJAVA_HOMEを反映。

source /etc/environment

Apache Druidをインストールして起動

Apache Druidを下記のミラーサイトからダウンロードします。
Apache Download Mirrors

ダウンロード後、tar.gzを展開します。
私は/usr/localにコピーしました。

tar -zxf apache-druid-0.17.0-bin.tar.gz
sudo cp -r apache-druid-0.17.0 /usr/local/
cd /usr/local/apache-druid-0.17.0/

そしてDruidを起動します。
n1-standard-1マシンを選んだので、nano-quickstartを起動します。

export DRUID_SKIP_JAVA_CHECK=1
nohup ./bin/start-nano-quickstart &

これでDruidがtcp 8888番ポートで起動するので、ブラウザでアクセスします。
なお、VPC FirewallでVMインスタンスのtcp 8888番ポートとの通信を許可する必要があります。
IP制限も適宜実施してください。

Apache Druid トップページ

サンプルデータをロード

次はサンプルデータをロードします。
画面上部の[Load data]をクリックするとこういう画面が出ます。

Druidにデータをロード

この中の[Local disk]を選んで[Connect data] に進みます。

次の画面で下記を入力します:

  • Base directory: quickstart/tutorial/
  • File filter: wikiticker-2015-09-12-sampled.json.gz

そして[Appl]を押すと下記のようにデータをプレビュー出来ます。

データをプレビュー

で、ここから先はデフォルトのまま3ステップ飛ばすので、

  • Next: Parse time
  • Next: Transform
  • Next: Filter

の順番にボタンを押して進みます。

すると[Configure schema]の画面になるので、ここでは[Rollup]のチェックを外します。

Configure schemaでRollupをオフ

続いて[Next: Partition]に進みます。
ここでは、[Segment granularity] を [DAY] にします。

Segment granurality: DAY

続いて[Next: Tune]に進みます。
[Datasource name]にわかりやすい名前をつけます。
ここでは[wikipedia]という名前にしました。

パブリッシュ設定

それから[Edit spec]に進み、[Submit]を押すとデータロードが始まります。

Submitでアップロード開始

アップロードが終わると[Datasources]に表示されます。

データソース一覧

SQLを実行

それではSQLでクエリを実行します。
[Query]を開いて、下記のSQLを記入して[Run]を押すと実行します。

select * from wikipedia

SQLを実行

結果がすぐに返って来ます。

クエリの結果

まとめ

今回はApache Druidのnano-quickstartを、n1-standard-1タイプのVMを1台使って動かして見ました。
さらにパフォーマンスを求める場合は、ハイメモリマシンを複数台使ったクラスタを構成する事で、より高速なクエリを実行できる事が期待されます。

今後弊社ではApache Druidを使った分析基盤構築を提供して行く予定です。
お問い合わせはこちらからどうぞ。

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Google BigQuery

    GoogleNext 2019レポート:3日目

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  2. Adobe Analytics

    Adobe AnaltyicsとGoogle Analytics の「生Webビーコン」をBigQu…

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  3. Application Integration

    Google Cloud iPaaS 「Application Integration」を使ってみた…

    こんにちは、エクスチュアの黒岩です。今回の記事では、Goog…

  4. Google BigQuery

    Big QueryでWindow関数を用いて、累積和を計算する

    こんにちは。エクスチュアでインターンをさせて頂いている中野です。…

  5. Google BigQuery

    GCPのBQMLを使ってKaggleコンペに挑んでみた(その1)

    こんにちは。エクスチュアでインターンをさせて頂いている中野智基です。…

  6. Google Cloud Platform

    Vertex AI Embeddings for Text によるテキストエンベディングをやってみた…

    こんにちは、石原と申します。自然言語処理(NLP)は近年のA…

カテゴリ

最近の記事

  1. 進化学に倣う最適化手法「遺伝的アルゴリズム」
  2. dbt_expectationsでデータ品質を向上させよう
  3. BigQueryとSnowflakeのLLM関数を比較してみ…
  4. dbtCloud使ってみた
  5. ChainlitでのOAuth認証にスコープを追加する方法
  1. Google Analytics

    Google Tag Manager上でGoogle Analyticsのcli…
  2. Google Cloud Platform

    【GCP】Cloud Workflowsでデータパイプラインの構築を試してみた②…
  3. Amazon Web Services

    Amazon Redshift ビルド168まとめ
  4. IT用語集

    クロスデバイス(Cross Device)って何?
  5. GA 360 Suite

    Google Analytics 360: BigQueryを使ってアトリビュー…
PAGE TOP