Treasure Data Platform で始めるデータ分析入門 〜2. Data Collection〜
本シリーズではデータ分析を以下の7つのレイヤーに分解し,各々について解説していくものとします。(Slide Shareの資料は常時更新されます。)
- Data Collection
- Data Storage
- Data Management
- Data Processing
- Data Processing Design Part.1 Part.2 Part.3 Part.4 Part.5 Part.6
- Data Visualization Treasure Viewer, MetricInsights, Tableau
- Data Visualization Patterns Part.1 Part.2 Part.3
本日は「1. Data Collection」にフォーカスを当てます。
一連のデータ分析プロセスにおけるそのまさに源流となるのが"Data Collection"です。Treasure Data ではこのフェーズを非常に重要と考え,上記のフレーズを掲げています。その信念に基づいて生まれてきたのが今やログコレクションツールの世界的なスタンダードになった Fluentd です。
Treasure Dataではデータソースの種類に合わせて2つのインポートメソッドを用意しています。
Bulk Import
既にストレージやデータベースに大量に蓄積されているデータ("従来"のデータソースと呼ぶことにします)に対してはその全てを一度にTreasure Data Cloudにインポートする必要があります。この時に使用するのが「Bulk Import」メソッドです。
コマンドラインから一連の Bulk Import メソッド,具体的には
- prepare: 元データを適切なサイズで分割し,Message Pack形式で圧縮します。
- upload: 分割したデータを並列にアップロードしていきます。
- commit: アップロードされたデータを指定したデータベース,テーブルに書き出します。
を実行することで短時間で効率良くデータをインポートすることができます。
Streaming Capture
一方で"新しい"データと定義される,各自のアプリケーションからリアルタイムに生成される "Event Base Logs" に対しては, Treasure Agent と Treasure Data Library を使用したストリーミングメソッドで容易かつ効率良くデータを収集していきます。
このメソッドによって,Event Based Log が発生した時点で定常的にそれをストリーミングで流すことによってネットワークに負荷をかけず,かつほぼリアルタイムにデータを収集することが可能になります。
ここでEvent Base Logs の各業界における取得例を見ていきましょう。
アプリケーション各々のソースコードまたはHTMLソース内に "Td.event.post" メソッドを"login", "pay" などの一つのイベント名とそれに付随する情報を引数にして該当箇所に埋め込んでいきます。こうすることで「イベント名」=「テーブル名」となる形で,そのイベントが発生する度に随時 Treasure Data Cloud にストリーミングでイベントログを流すことが可能になります。
このようなイベントベースのデータに基づけば,ユーザーの詳細な ”行動分析” を実行することができます。(ここでは実際の分析事例は "Data Processing Design" に譲ることにします。)
また,Herokuアプリケーションを活用されている方には Add-on として上記の Event Based Log を取得することが可能になります。
Fluentd
後者に紹介した,Treasure Agent で利用しているストリーミングによるデータ収集は "Fluentd"と呼ばれるオープンソースをベースにしています。
Fluentd 導入以前では,それぞれ異なるデータソースに対しては,別の手段で収集することしかできませんでした。
Fluentd はこれらの異なるデータソースに対して,プラグインを提供しその差違を設定ファイルによって吸収することで,一元的に収集・運用することが可能になりました。しかもそれがストリーミングで収集することができるのですから,その有用性と利便性は他に比べて圧倒的に高いものであり,それ故に世界的なスタンダードツールになることができたのです。
また,Fluentd のモニタリングサービスが最近ローンチされました。詳細は以下のスライドを参照して下さい。
まとめ
最後にまとめです。
ざっくり言えばこれまで蓄積された大量のログは Bulk Import によるワンタイムメソッドで,今後蓄積されるログは Streaming Capture の定常的な収集メソッドで,という使い分けでデータ収集が従来よりはるかにシンプルに行えるようになったということです。いかにも簡単に紹介しましたが,これほどシンプルかつ実用的な収集手段を提供しているのは Treasure Data 以外にはありません。
次回は 2. Data Storage について紹介します。