トレジャーデータ(Treasure Data)ブログ

トレジャーデータ(Treasure Data)ブログです。

本サイトは移転しました。新サイトにリダイレクトします。

(2014年総集編3)アドホッククエリーの登場,大規模データセットに対しても高速なレスポンスを実現

はじめに

トレジャーデータはクラウドでデータマネージメントサービスを提供しています。

 

「Treasure Query Accelerator: アドホッククエリー」の登場は「クエリーを実行したその場で結果が返ってくる」という,一見当たり前のような,しかしバッチクエリーでは困難だったことを可能にしました。これによってTreasure Data Service(トレジャーデータサービス)の活用シーンが大きく広がりました。以下のテーブルはバッチ型とアドホック型の比較をしています。ここで重要なことは,双方お互いにメリット・デメリットがあるということで,必ずしもすべてのシーンでアドホック型への置き換えができないということです。

 バッチ型クエリー
(Hive)
アドホック型クエリー
(Presto)
言語 ・HiveQL (SQL Like) ・SQL-92準拠
ケース ・大規模な中間処理データの受け渡しが生じる並列処理に対して ・大規模なインプットでも,中間処理・結果データが小さくて済む並列処理に対して
計算モデル ・Map Reduce ・MPP
(Massively Parallel Processor)
業務領域 ・KPIダッシュボード
・定型レポーティング
・インタラクティブなデータ処理
・特定のユーザーの履歴抽出などのサポーティング業務
相性のよい
可視化ツール
・Metric Insights
・Tableau Server
・Chartio
・Tableau Desktop
トレジャー
料金プラン
・Basic Plan ・Premium Plan

以下で詳細を述べていきます。

1. 言語 

Treasure Data Serviceは,バッチ型とアドホック型の双方にSQLライクなクエリーを記述できるという統一性を有しています。つまり同じデータセットの同じ処理に対して,バッチかアドホックかを柔軟に切り替えることができるのです。

トレジャー管理コンソールからクエリーを実行する場合の使い分け方は,バッチ型(Hive)/ アドホック型(Presto)をボタンで切り替えるだけです。 

f:id:treasure-data:20141224111852p:plain

 2. ケース

バッチ処理は,データ同士の結合をする場合(中間生成データが巨大になる),巨大なデータセットに対する重い集計の際に頼もしい存在です。また,分散処理の途中でのエラーに対してもリトライを行ってくれますし,計算ノード間の中間データの受け渡しも安全に行ってくれます。そういう安定性は,デイリーで自動実行する定時ジョブへの安心感につながります。

バッチ処理のイメージ:たくさんのショベルカーのある巨大な砂場を想像してください。重めのクエリーが実行されると,複数のショベルカーのエンジンに火が入り,自分の持ち場の砂をどっさりとつかんでは次の砂場に運んでいきます。重厚なマシンなのでエンジンがかかる(イニシャルランニングタイム)までに時間がかかりますが,動き出してしまえばどんな砂場であっても安定して働いてくれます。

一方で,アドホッククエリーは,中間データと結果がサーバーのメモリに乗り切る程度の軽い処理に対して数秒のレスポンスを実現します。巨大なデータセットに対するアドホッククエリーの登場は,すぐに結果を見たいアドホックな分析処理や,そもそも結果が正しいかどうかを知るための試行錯誤など,現場から求められるアドホックな業務をこなすのに適しています。

f:id:treasure-data:20141224112614p:plain

また,TableauなどのBI(ビジネスインテリジェンス)ツールとトレジャーデータストレージをアドホッククエリーで接続することによって,BIツール上からドリルダウンやクロステーブル作成などのインタラクティブな操作が可能になります。これは非常にインパクトのあることで,SQLの知識がない分析者やディレクターでも,BIツールからマウスのクリック・ドラッグ操作だけでTreasure Data Serviceが扱えるようになります。

アドホッククエリーのイメージ:広大なサーキットを縦横無尽に走り回るミニ四駆を想像してください。重いものは載せられませんが,スイッチを入れればすぐに走り出す起動速度とデータサーキットを超高速に駆け抜ける爽快さは,分析者にとって最高の相棒となるでしょう。

3. 計算モデル

バッチクエリーがHiveに準じたMap Reduceを行うのに対し,アドホッククエリーはMPPモデルを採用しています。

f:id:treasure-data:20141224112850p:plain

これらの計算モデルを理解する必要はありませんが,アドホッククエリーはサーバー間の中間データの受け渡しをメモリ上で行うので,メモリに乗り切らない場合はエラーとなってしまうことに留意してください。

4. 相性のよい可視化ツール

バッチ型/アドホック型それぞれに最適な可視化ツールを紹介します。

A) バッチ型:Metric Insights, Tableau Server

Metric Insights:

トレジャーデータがOEM提供するMetric Insightsは,当社のオンラインゲームソリューションに採用されているバッチ処理と相性のよいツールです。

f:id:treasure-data:20141224113624p:plain

↑ Metric Insightsではおのおののウィジェットが独立しており,ウィジェット編集画面から,クエリー,実行インターバル,チャートタイプの3種を指定することで自動的にクエリーを実行し,ウィジェットに反映してくれます。

Tableau Server:

Treasure Data Serviceは集計結果のエクスポート先を多種用意していますが,その1つにTableau Server があります。Tableau ServerはTableau Desktopで作成したレポートをTableau Serverにパブリッシュすることで,タブレットなどのさまざまな端末からそのレポートを参照できるようになります。

f:id:treasure-data:20141224113944p:plain

定型レポートを一度Tableau Desktopで作成してしまえば,以後はTreasure Data Serviceが定時集計してTableau Serverに自動追記してくれます。いつでも新鮮なレポートが参照できることになります。

B) アドホック型:Tableau Desktop

Tableau Desktop:

Tableau Desktop はWindows および Mac のクライアントソフトウェアとして動作する可視化のバリエーションに富んだBIツールです。Treasure Data ServiceはこのようなBIツールに対する接続口(ODBC, JDBCドライバ)を用意することで,BIツールの画面上からTreasure Data Service上のデータ操作が可能になるというSQLレスな環境を実現できます。

f:id:treasure-data:20141224114145p:plain

5. プランについて

バッチクエリーはTreasure Data Serviceのスタンダードプランに含まれますが,アドホッククエリーはプレミアムプランのみに含まれる付加機能となります。料金に関するお問い合わせは support@treasure-data.com までお願いします。

 

Happy Holidays!!

f:id:treasure-data:20141225094649p:plain

いつもお世話になっております。
トレジャーデータです。いつもブログをご覧いただきありがとうございます。

早いもので、年末のご挨拶をさせて頂く時期となりました。
本年は格別のご愛顧を賜り、厚くお礼申し上げます。

明くる年も変わらぬお引き立てのほど、心よりお願い申し上げます。


トレジャーデータ株式会社
従業員一同

 

◆TREASURE DATA NEWS◆


スマホアプリ企画・開発者必見!「Treasure Collectors」 

スマホのネイティブアプリを展開している業界に向けたソリューションとして、
ユーザーログを収集し分析を容易に行える開発キット
「トレジャーデータコレクター」の提供を開始しました。
これによりスマホから直接トレジャーデータサービスに
ログデータを送信することが可能になりました。
iOS版, Android版, Unity版の3種類に対応しています。
 

お試しください!トレジャーデータサービス「14日間トライアル」
 
これまで有料プランでのみで利用可能だった
「Treasure Query Accelerator」の機能がサインアップ後、
14日間試せるようになりました。
この機会にトレジャーデータサービスに触れてみてください。
14日間トライアルはこちらから


【イベント】1/28(水)-29(木)「マーケティングテクノロジーフェア」に
登壇&ブース出展いたします
 
「トレジャーデータサービス」を活用して
データでビジネスをドライブしているお客様の事例をご紹介しなが
昨今の分析基盤のトレンドについてお伝えします。
当社のエバンジェリスト鈴木理恵子と、
スペシャルゲストとの対談形式でお送りいたします。
 
日時:2015/1/29(木) 15:00-15:45
場所:東京ビッグサイト 西4ホール
お申込みお待ちしております。
詳細&お申込みはこちらから
 

【イベント】1/21(水)  「BIG DATA 最新動向 〜IoTを中心に〜」

11月17日に開催し大変ご好評いただいた本セミナーの
第二回開催が決定いたしました。
IoTのプロジェクトを推進されている方、
これから推進する予定の方が対象のセミナーとなっております。
お申込みお待ちしております。

日時:2015/1/21(水) 13:30 -17:30(13:00開場)
場所:東京都目黒区下目黒1-8-1 アルコタワー19F
Amazon Web Serviceジャパン オフィス
詳細&お申込みはこちらから

(2014年総集編4)トレジャーデータのデータ収集ツールがより多彩に:IoTやモバイル端末にも対応

はじめに

トレジャーデータはクラウドでデータマネージメントサービスを提供しています。

 

Treasure Data Service(トレジャーデータサービス)は,クラウド上の無尽蔵なカラムナストレージとバッチ型/アドホック型の分散集計クエリーを,運用管理コストを気にすることなく活用できる「データ保管」が根幹となっていますが,その前後:「データ収集」と「データ分析」においてもあらゆるケースに対応できる柔軟な方法を兼ね備えています。

f:id:treasure-data:20141224121451p:plain

今回は,上図でいう「データ収集」レイヤーにおける収集方法についてご紹介します。

4種類のデータ収集方法

f:id:treasure-data:20141224121607p:plain

Treasure Data Serviceの管理コンソールにログインすると,Treasure Data Collectorsの「Collect Data」タブよりアクセスすることができます。

  1. File Upload:ブラウザ上からcsv/tsvファイルをアップロードする最も簡単な方法
  2. Client SDK:JavaScript および iOS,Android からSDKを利用してイベント発生時の高頻度でログを送信する方法
  3. Streaming Collector:Web Server のapache log など,サーバー自身にエージェントを仕込んでストリーミング的にログを収集する方法
  4. Bulk Import:過去数年分の大規模ファイルなどのまとまったログを,効率的にインポートする方法

f:id:treasure-data:20141224122012p:plain

↑ 2,3,4の使い分けは,上図のようなケース図となります。

Bulk Import はその頻度が多くてもデイリー,多くの場合は過去データを取り込むための一度きりの実行となります。そしてそれ以降に発生するログに関しては,2. Client SDKや3. Streaming Import を通じて都度収集するようにするのが一般的です。

1. File Upload

ブラウザを通じてのファイルアップロードは最も手軽な方法です。

f:id:treasure-data:20141224122328p:plain

トレジャー管理コンソールより「File Upload」を選択し,csvやtsvファイルを指定します。

f:id:treasure-data:20141224122442p:plain

指定したファイルをドラッグするだけの簡単な操作です。

2. Client SDK

Client SDKと次のStreaming Collectorはともにイベント発生時に随時データをTreasure Data Serviceに送信できるものですが,それをモバイル端末アプリのようにクライアント側から送信するのか,サーバー側から送信するのかで種類が変わってきます。ここでの話は,JavaScript SDK や各種モバイルSDK(iOS,Android,Unity)といったクライアント側のためのSDKとなります。

f:id:treasure-data:20141224122852p:plain

Client SDKでは,アプリやWebページにそれを埋め込むことで個々の端末からトレジャークラウドストレージへのデータ送信が可能になります。

3. Streaming Collector

f:id:treasure-data:20141224123045p:plain

トレジャーデータの製品としては「Treasure Agent」,OSS界隈では「Fluentd」と呼ばれているものがこちらのカテゴリに該当します(前者はデータの書き出し先としてトレジャーデータストレージに設定されているもので,後者は任意の書き出し先の設定ができます)。クライアントSDKに対して,こちらはサーバー側にエージェント入れて監視することで,サーバーに集まっているログをストリーミングでトレジャークラウドストレージに送信する形となります。

データソースとアウトプットを「プラグイン」で拡張する

f:id:treasure-data:20141224123256p:plainf:id:treasure-data:20141224123330p:plain

Streaming Collectorは,さまざまなデータソースを「プラグイン」という設定ファイルのみで切り替えられる手軽さに加え,さまざまなプラグインがすでに数多く公開されています。

トレジャーデータのストリーミングコレクタのメリットは,ログを随時ストリーミングで収集できることにとどまりません。データの収集にはそのデータソース(ApacheLog,MySQL,NoSQL,etc.,...)に合わせたものを用意する必要がありますが,Treasure Data Serviceでは多種多様なデータソースに対する接続口(プラグイン)がすでに存在し,またプラグインという形で簡単に対応させることが可能です。

下図はプラグインリストに記載されているデータソースの一部です。

f:id:treasure-data:20141224123542p:plain

4. Bulk Import

f:id:treasure-data:20141224123646p:plain

巨大なデータ向けに作られたBulk Import は4つのステップから構成されます:

  1. Prepare:巨大なファイルを適切なサイズに切り分け,かつMessage Pack 形式に圧縮します。オリジナルのファイルを残したまま,分割ファイルを生成していくのでマシンのディスクに余裕があるかどうかを確認しておいてください。また,オプションとして並列処理数「--prepare-parallel」や文字列置換「--regex-pattern」は設定を大きくすればそれなりにマシンリソースを消費するので,ほかの作業への影響を考慮してください。
  2. Upload:Prepare より分割されたファイルをTreasure Data Serviceに並列アップロードします。アップロード処理はセキュアな形式で通信できるのでご安心ください。また,この処理はクライアント側のネット接続環境に依存するので接続速度が遅ければ完了までに非常に多くの時間がかかることに注意してください。
  3. Perform:Treasure Data Serviceにアップロードされた Messaga Pack 形式のファイル群を Map Reduce 処理によってクラウドストレージに格納する形式に変換します。この際にエラーレコードの有無などを確認します。Perform以降の処理はTreasure Data Service上での実行となるのでクライアントのマシンや通信環境には依存しません。この処理ではMapReduceが走るので,すぐに処理が完了することを期待してはいけません。
  4. Commit:Perform 後のエラーチェックで問題なければこのコマンドによってトレジャーストレージの指定のテーブルへ書き出します。このコマンドでクラウドストレージへの書き込みが完了するのですが,その前に問題のあるエラーレコードがないかどうかを確認してから実行するようにしてください。この処理にはそれほど時間はかかりません。