TreasureDataの1年半を機能面で振り返る
はじめに
こんにちは、髙橋@SSTDです。
TreasureDataというサービスに私が関わり始めてから1年半が経ちました(TreasureData自体は、2012年後半に商用サービスを開始したため、3年目です)。
この間に、TreasureDataでは毎週、機能向上や新機能追加が行われ、より使いやすいサービスへと成長してきています。そこで、今回は1年半前と比べて、どういった機能が追加されてきたのかをまとめて紹介したいと思います。
ストリーミングインポート
- Treasure Agent Monitoring Serviceのリリース
- fluentdの死活やバッファ状況などをTreasureDataのコンソール上で監視できる機能です。
- fluentdの死活やバッファ状況などをTreasureDataのコンソール上で監視できる機能です。
- fluentd-uiのリリース
- fluentdのプロセスや設定ファイルやプラグインや、ログやシステム情報のビューワをブラウザベースで管理できます。
- 参考ドキュメント
- td-agent2のリリース
- Ruby1.9.3のサポートが2015年2月23日に終了するため、ruby2.1系をバンドルしています。
- 参考ドキュメント
- http://docs.treasure-data.com/articles/td-agent2
- Treasure Agent(td-agent)の1と2の今後: http://qiita.com/repeatedly/items/c8107bc8ba5ba01133f8
- アプリケーションからのデータインポート方法のサンプルも随時増えています。
- Scalaアプリケーションからのデータインポート
- .NETアプリケーションからのデータインポート
バルクインポート
過去データのインポート用に作られたBulkimport機能ですが、当初はruby版のツールでした。
$ td bulk_import
しかし、圧縮効率の最適化や並列処理のパフォーマンス向上を目指して、Java版のツールもコマンドラインツールとして提供され、より高速にデータのアップロードが行えるようになりました。
$ td import
型チェックがRuby版よりも厳密になったため、初めは戸惑った記憶があります。
SDKs
これまではサーバにtd-agentを入れて、Webサーバのログやアプリケーションからデータを送信するという方法が主なデータ収集方法でした。
しかし、下記のSDKが提供されたことにより、端末から直接データを取得するということが可能になり、アプリケーションサーバと通信が発生しない際のデータも収集できるようになりました。
また、それぞれのSDKのデータを待ち受けるサーバがTreasureData側にあるのも素晴らしいですね。
- Android SDK
- iOS SDK
- Unity SDK
- javascript SDK
Webコンソール
Webコンソールは、2013年の初めに比べて圧倒的に使いやすくなりましたね。
当初は全てコマンドラインツールを使って操作していたのですが、今ではWebコンソールで操作を行うようになりました。
- 2013
- 2014
そのほかに、Webコンソールには下記の機能が追加されています。
- Team機能
- 登録したアカウントの他にチームメンバーとしてサブアカウントの登録ができるようになりました。
- Tableへのメモ機能
- 各テーブルにブラウザ上でDescriptionが書けるようになりました。
- Saved Query
- Queryを保存し、別のTeamアカウントと共有できるようになりました。
- Query Editor
- Query Editorは、昔と比べて格段に使いやすくなりました。初期のエディタのスクリーンショットがなかったので比較ができないのが残念です。
- Query Syntax Checker
- 今週のリリースで追加されたSyntaxのチェック機能です。ますますWebコンソールの利便性が増しますね。
- File Uploader
- ブラウザベースでCSVやTSVファイルをアップロードできるようになりました。
- 数百MBくらいまでならアップロードできるので、ちょっとデータを入れるときに便利ですね。
- Bulkimportのコンソール表示
- td import:listの表示が実はブラウザでも見れます。
計算エンジン
TreasureDataでは元々、HiveとPigの二つの計算エンジンを提供していました。
現在は、それに加えてTQAという形でFacebookがOSSとして公開したPrestoを新たな計算エンジンとして提供し始めました。
これにより、デイリー集計のバッチ処理はHiveとPig、アドホック集計にはPrestoという使い分けができるようになりました。
- Tresure Query Accelalator(Presto)
- FacebookがOSSとして公開したMPP型のクエリエンジンです。SQL-92に準拠したクエリをかけるのも嬉しいです。
- 参考ドキュメント
- TreasureDataのPresto用独自関数として下記があります。
- TD_TIME_RANGE()
- TD_TIME_ADD()
- TD_TIME_FORMAT()
- TD_TIME_PARSE()
- TD_SCHEDULED_TIME()
- TD_SESSIONIZE()
- TreasureDataのHive用独自関数としては下記があります。
- TD_TIME_RANGE()
- TD_TIME_ADD()
- TD_TIME_FORMAT()
- TD_TIME_PARSE()
- TD_SCHEDULED_TIME()
- TD_LAST()
- TD_FIRST()
- TD_X_RANK()
- TD_SESSIONIZE()
- (New) TD_PARSE_USER_AGENT()
- (New) TD_MD5()
- (New) TD_URL_DECODE()
- Hivemall (バージョンは、v0.2 alpha 4)
- Hivemallは、Hiveを使って機械学習を行うためのライブラリです。
- TreasureDataに貯めたデータに対して、クラス分類を行い、Tableauで可視化するまでの流れとかを作っておきたいなと思う今日この頃です。
- 参考ドキュメント
ストレージ
TreasureDataでは、スキーマレスなカラムナストレージを提供しています。
しかし、以前はインポートされるレコードは全てvカラム内にkey-valueの形で格納され、インポート後に明示的にカラム名とスキーマを付与することで、カラムナストレージの特徴であるカラム名を明示することで不要なカラムのデータIOを削減させることができました。
また、この際のカラム名には、英数字小文字及び’_’のみという制約もありました。
しかし、現在はデータインポート時にTreasureData側でレコードがチェックされ、自動でカラム名及びスキーマがセットされるようになりました。
また、Columns Schema Aliasing機能が追加され、英数字小文字及び’_’以外のカラム名に対して、自動でカラム名のエイリアスがセットされるようになりました。
- 参考ドキュメント
Result Output
TreasureDataはクエリの実行結果をTreasureDataの別テーブルや外部のツールに書き出すことができます。
特に、TreasureDataを様々なログを集めるデータレイクとして利用しているユーザにとっては、
データマートにRedshiftやTableau Serverを使うユースケースも増えてきており、こうした機能が非常に便利かと思います。
- Treasure Data
- TreasureDataの別アカウントのテーブルに対しても書き出せるようになりました。
- MySQL
- PostgreSQL
- AWS S3
- (New) AWS Redshift
- Google SpreadSheet
- Web Server (REST)
- FTP Server
- (New) Tableau Server
- (New) Tableau Online
- Leftronic Dashboard
クライアントツール/JDBC/ODBC
TreasureDataではREST APIでクエリの発行などが行え、REST APIを用いるためのJDBCやライブラリが提供されていました。
BI toolなどへのコネクティビティを高めるために、Prestoへクエリを実行するためのPrestogresが提供され、
Windows用の32bit版のODBCドライバやPostgreSQLのクライアントツールからPrestoに対してクエリを実行させることも可能になりました。
- Hive, Pig, Prestoに対してクエリ実行可能
- REST API Specification
- Ruby
- Java
- Node.js
- (New) Go
- Prestoに対してクエリ実行可能
- (New) Prestogres
- (New) ODBC Driver (32bit)
- (New - BI tool) Chartio
- ブラウザベースのTableauライクなBIツールです。クライアントツールがいらないので便利です。
- Chartio側にTreasureDataのプラグインとして組み込まれているため、特別なツール導入が不要で便利です。
- 参考ドキュメント
その他
- Education Videosが公開されるようになりました。
- Yahoo! BigData Insights Powered By TreasureDataがサービス提供を開始しました。
- 国内データセンターを持つIDC Frontierと協力したTreasureDataを触れるのが嬉しいですね。
- http://www.idcf.jp/lp/bigdata/
- ロゴも変わりましたね。
おわりに
今回は私が特に記憶に残る新機能に注目してまとめましたが、これ以外にも既存の機能の改善や機能追加が毎週行われ、リリースノートにてレポートされています。
http://docs.treasure-data.com/categories/releasenotes
今後も定期的に面白い機能が追加された際には、記事にしていきたいと思います。
