(2014年総集編4)トレジャーデータのデータ収集ツールがより多彩に:IoTやモバイル端末にも対応
本記事は移転しました。新サイトにリダイレクトします。
はじめに
トレジャーデータはクラウドでデータマネージメントサービスを提供しています。
Treasure Data Service(トレジャーデータサービス)は,クラウド上の無尽蔵なカラムナストレージとバッチ型/アドホック型の分散集計クエリーを,運用管理コストを気にすることなく活用できる「データ保管」が根幹となっていますが,その前後:「データ収集」と「データ分析」においてもあらゆるケースに対応できる柔軟な方法を兼ね備えています。
今回は,上図でいう「データ収集」レイヤーにおける収集方法についてご紹介します。
4種類のデータ収集方法
Treasure Data Serviceの管理コンソールにログインすると,Treasure Data Collectorsの「Collect Data」タブよりアクセスすることができます。
- File Upload:ブラウザ上からcsv/tsvファイルをアップロードする最も簡単な方法
- Client SDK:JavaScript および iOS,Android からSDKを利用してイベント発生時の高頻度でログを送信する方法
- Streaming Collector:Web Server のapache log など,サーバー自身にエージェントを仕込んでストリーミング的にログを収集する方法
- Bulk Import:過去数年分の大規模ファイルなどのまとまったログを,効率的にインポートする方法
↑ 2,3,4の使い分けは,上図のようなケース図となります。
Bulk Import はその頻度が多くてもデイリー,多くの場合は過去データを取り込むための一度きりの実行となります。そしてそれ以降に発生するログに関しては,2. Client SDKや3. Streaming Import を通じて都度収集するようにするのが一般的です。
1. File Upload
ブラウザを通じてのファイルアップロードは最も手軽な方法です。
トレジャー管理コンソールより「File Upload」を選択し,csvやtsvファイルを指定します。
指定したファイルをドラッグするだけの簡単な操作です。
2. Client SDK
Client SDKと次のStreaming Collectorはともにイベント発生時に随時データをTreasure Data Serviceに送信できるものですが,それをモバイル端末アプリのようにクライアント側から送信するのか,サーバー側から送信するのかで種類が変わってきます。ここでの話は,JavaScript SDK や各種モバイルSDK(iOS,Android,Unity)といったクライアント側のためのSDKとなります。
Client SDKでは,アプリやWebページにそれを埋め込むことで個々の端末からトレジャークラウドストレージへのデータ送信が可能になります。
3. Streaming Collector
トレジャーデータの製品としては「Treasure Agent」,OSS界隈では「Fluentd」と呼ばれているものがこちらのカテゴリに該当します(前者はデータの書き出し先としてトレジャーデータストレージに設定されているもので,後者は任意の書き出し先の設定ができます)。クライアントSDKに対して,こちらはサーバー側にエージェント入れて監視することで,サーバーに集まっているログをストリーミングでトレジャークラウドストレージに送信する形となります。
データソースとアウトプットを「プラグイン」で拡張する
Streaming Collectorは,さまざまなデータソースを「プラグイン」という設定ファイルのみで切り替えられる手軽さに加え,さまざまなプラグインがすでに数多く公開されています。
トレジャーデータのストリーミングコレクタのメリットは,ログを随時ストリーミングで収集できることにとどまりません。データの収集にはそのデータソース(ApacheLog,MySQL,NoSQL,etc.,...)に合わせたものを用意する必要がありますが,Treasure Data Serviceでは多種多様なデータソースに対する接続口(プラグイン)がすでに存在し,またプラグインという形で簡単に対応させることが可能です。
下図はプラグインリストに記載されているデータソースの一部です。
4. Bulk Import
巨大なデータ向けに作られたBulk Import は4つのステップから構成されます:
- Prepare:巨大なファイルを適切なサイズに切り分け,かつMessage Pack 形式に圧縮します。オリジナルのファイルを残したまま,分割ファイルを生成していくのでマシンのディスクに余裕があるかどうかを確認しておいてください。また,オプションとして並列処理数「--prepare-parallel」や文字列置換「--regex-pattern」は設定を大きくすればそれなりにマシンリソースを消費するので,ほかの作業への影響を考慮してください。
- Upload:Prepare より分割されたファイルをTreasure Data Serviceに並列アップロードします。アップロード処理はセキュアな形式で通信できるのでご安心ください。また,この処理はクライアント側のネット接続環境に依存するので接続速度が遅ければ完了までに非常に多くの時間がかかることに注意してください。
- Perform:Treasure Data Serviceにアップロードされた Messaga Pack 形式のファイル群を Map Reduce 処理によってクラウドストレージに格納する形式に変換します。この際にエラーレコードの有無などを確認します。Perform以降の処理はTreasure Data Service上での実行となるのでクライアントのマシンや通信環境には依存しません。この処理ではMapReduceが走るので,すぐに処理が完了することを期待してはいけません。
- Commit:Perform 後のエラーチェックで問題なければこのコマンドによってトレジャーストレージの指定のテーブルへ書き出します。このコマンドでクラウドストレージへの書き込みが完了するのですが,その前に問題のあるエラーレコードがないかどうかを確認してから実行するようにしてください。この処理にはそれほど時間はかかりません。