トレジャーデータを使ってみる(treasure-data) *インストール
最近めっきりブログの更新が遅れてしまったのですが、飽きちゃったわけではなく、すごーく一年間忙しかったから更新できなかっただけです。とは言いつつも、何も試していないのです。ここ一年、ビッグデータ、ビッグデータてつい最近騒がれており。私個人としては、バズワードっぽく思っていたのであまり関心がなかったのが正直な感想です。まず、大事なのが、ビッグデータじゃなくて、ビッグデータをどう分析して価値あるものを見つけるの?・・と・・なので、そちらに力を入れないと・・と思うわけです。つまり、ビッグデータを安価にそして簡単に使えるものを待っていただけです・・。というわけで出ました。treasure-data
トレジャーデータとは?
一言でいえば、クラウドのDWH(ビッグデータ)です。大まかな説明でもうしわけありませんが、 ・Fluentdを使っている ・Hadoopを使っている ・Amazon AWSを使っている といった感じです。 いやいや、うちらは、技術力があるからそんなものいらないよ。という声が聞こえてきそうですが、ビッグデータを扱う=リソースをかなり使うということになるので、自社持ちでそのソリューションを実施しようと考えている場合、いったいいくらくらいお金かけますか?もちろん、数十万程度のデータしか使わないのであれば、DWHなんていらないのですが、これが、数十億件のデータ、もしくは、それくらいの伸びのあるデータを分析に利用するなんていった場合に、どれくらいの設備投資をしようとしておりますか?なんて、数ヶ月先、数年先を考えていると、ほんと数千万、とか数億円かかると思います。treasure-dataなら非常に安価にスケールアウトできます。そして小難しいHadoopの知識なんて必要ありません。しいてあげれば簡単なSQLが書ければいいだけなんです。(^_^)
細かな話は、ここに掲載しております http://www.sios.com/products/bigdata/index.html とてもわかりやすく説明されておりますので、ぜひご参照ください。
トレジャーデータの利用
トレジャーデータの利用はいたって簡単です。 ・アカウントの登録 ・インストール の2つだけです。しかもインストールもいたって簡単なのでここで説明するまでもないかもしれません。
アカウントの登録
- 以下のURLでユーザー登録します。名前、メールアドレス、パスワードです https://www.treasure-data.com/signup/
- 登録が完了しますと、上記で設定したメールアドレス宛にメールが届きます。
- メールはこんな感じのものです メール本文に記載されている、リンクをクリックすると、アクティベートされます。
- アクティベートが完了しますと、どの環境にトレジャーデータをインストールする?っていう選択が出ますので、今回は、CENTOS(redhat)を選択しました。
- インストールの説明書きが出てきます。悩む必要はないです。そのまま対象のホストにコマンドをコピペしてあげればいいのです。
インストール
上記で説明したとおり、コピペでいけるのでここで書く必要もないかと重いまますが、念のため
- インストールshellをたたく [shell] # curl -L http://toolbelt.treasure-data.com/sh/install-redhat.sh | sh # td usage: td [options] COMMAND [args] options: -c, --config PATH path to config file (~/.td/td.conf) -k, --apikey KEY use this API key instead of reading the config file -v, --verbose verbose mode -h, --help show help Basic commands: db # create/delete/list databases table # create/delete/list/import/export/tail tables query # issue a query job # show/kill/list jobs result # create/delete/list result URLs Additional commands: sched # create/delete/list schedules that run a query periodically schema # create/delete/modify schemas of tables status # show scheds, jobs, tables and results apikey # show/set API key server # show status of the Treasure Data server help # show help messages Type 'td help COMMAND' for more information on a specific command. [/shell]
- インストール後のアカウント設定 インストールは、上記の手順だけで終わります。楽ちん。あとは、WEB上で登録したアカウントを設定してあげればよいだけです。 [shell] # td account -f Enter your Treasure Data credentials. Email: testtesttdtest@s-quad.com Password (typing will be hidden): Authenticated successfully. Use 'td db:create <db_name>' to create a database. [/shell]
- データベースの作成 すでにお気づきの方はいるとは思いますが、設定作業後、次は何をするってのが、コメントで出ておりますね。 以下のコマンドを入力します。今回は、squadというデータベースを作成しております [shell] # td db:create squad Database 'squad' is created. Use 'td table:create squad <table_name>' to create a table. [/shell]
- 次にテーブルを作成します。今回は、accessというものを登録しております [shell] # td table:create squad access [/shell]
確認をする
- 登録データベースを確認する。 本来であれば、Countは、0件で表示されるのですが、すんません。先のデータ登録しちゃったのでこのような表示になっております。 [shell] # td db:list +-------+-------+ | Name | Count | +-------+-------+ | squad | 21342 | +-------+-------+ 1 row in set [/shell]
- 登録テーブルを確認する こんな感じです。2テーブル登録されているのは、これも先にやっちゃったからです。 [shell] # td table:list +----------+------------+------+-------+--------+--------+ | Database | Table | Type | Count | Size | Schema | +----------+------------+------+-------+--------+--------+ | squad | access | log | 16546 | 0.0 GB | | | squad | www_access | log | 5000 | 0.0 GB | | +----------+------------+------+-------+--------+--------+ [/shell]
- 定義を確認する [shell] # td table:show squad access Name : squad.access Type : log Count : 16546 Schema : ( ) [/shell]
- APIKEYは何かを確認する この話は次回触れたいと思いますが、APIを利用して、MySQLのデータを、トレジャーデータに放り込んだり、WEBのアクセスログを、トレジャーデータに放り込んだりすることができます。その際にAPI KEYが必要になります。 [shell] # td apikey c7rfhr321a5510f0f0a623fgtjtfdd0d8 [/shell]
- クエリを実行する
とりあえず、先にアクセスログをAPIを介して登録しちゃったので、どうやってSQLを実行するのって部分だけ、さわりで紹介します。
- apacheのアクセスログのcodeを集計 [shell] # td query -w -d squad "SELECT v['code'] AS code, COUNT(1) AS cnt FROM access GROUP BY v['code']" Job 2527899 is queued. Use 'td job:show 2527899' to show the status. queued... started at 2013-04-21T15:10:13Z Hive history file=/mnt/hive/tmp/2107/hive_job_log__1161562140.txt Total MapReduce jobs = 1 Launching Job 1 out of 1 Number of reduce tasks not specified. Defaulting to jobconf value of: 12 In order to change the average load for a reducer (in bytes): set hive.exec.reducers.bytes.per.reducer=<number> In order to limit the maximum number of reducers: set hive.exec.reducers.max=<number> In order to set a constant number of reducers: set mapred.reduce.tasks=<number> Starting Job = job_201304182230_2236, Tracking URL = http://ip-10-143-152-77.ec2.internal:50030/jobdetails.jsp?jobid=job_201304182230_2236 Kill Command = /usr/lib/hadoop/bin/hadoop job -kill job_201304182230_2236 Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 12 2013-04-21 15:10:35,838 Stage-1 map = 0%, reduce = 0% 2013-04-21 15:10:43,964 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 4.04 sec 2013-04-21 15:10:44,999 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 4.04 sec 2013-04-21 15:10:46,018 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 4.04 sec 2013-04-21 15:10:47,037 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 4.04 sec 2013-04-21 15:10:48,056 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 4.04 sec 2013-04-21 15:10:49,112 Stage-1 map = 100%, reduce = 8%, Cumulative CPU 6.7 sec 2013-04-21 15:10:50,132 Stage-1 map = 100%, reduce = 8%, Cumulative CPU 6.7 sec 2013-04-21 15:10:51,152 Stage-1 map = 100%, reduce = 8%, Cumulative CPU 6.7 sec 2013-04-21 15:10:52,170 Stage-1 map = 100%, reduce = 8%, Cumulative CPU 6.7 sec 2013-04-21 15:10:53,190 Stage-1 map = 100%, reduce = 17%, Cumulative CPU 9.37 sec 2013-04-21 15:10:54,215 Stage-1 map = 100%, reduce = 17%, Cumulative CPU 9.37 sec 2013-04-21 15:10:55,228 Stage-1 map = 100%, reduce = 17%, Cumulative CPU 9.37 sec MapReduce Total cumulative CPU time: 35 seconds 650 msec Ended Job = job_201304182230_2236 finished at 2013-04-21T15:11:31Z MapReduce Jobs Launched: Job 0: Map: 1 Reduce: 12 Cumulative CPU: 35.65 sec HDFS Read: 12237 HDFS Write: 1241 SUCCESS Total MapReduce CPU Time Spent: 35 seconds 650 msec OK MapReduce time taken: 64.728 seconds Time taken: 65.13 seconds Status : success Result : +------+-------+ | code | cnt | +------+-------+ | 200 | 12043 | | 301 | 597 | | 400 | 24 | | 302 | 2520 | | 500 | 76 | | 304 | 505 | | 403 | 71 | | 502 | 84 | | 206 | 8 | | 404 | 679 | +------+-------+ 10 rows in set [/shell]
- 補足ですが、データは、json形式で保存されております(以下は、apache access_log) [shell] # td query -w -d squad "SELECT * FROM access limit 1" {"user":"-","method":"POST","code":"302","time":"1366434003","host":"142.0.138.77","size":"-","referer":"http://www.s-quad.com/wordpress/?p=1428#comment-24123","agent":"Mozilla/5.0 (Windows NT 6.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2","path":"/wordpress/wp-comments-post.php"} | 1366434003 | | {"user":"-","method":"GET","code":"200","time":"1366434003","host":"69.197.189.8","size":"54533","referer":"-","agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)","path":"/wordpress/"} [/shell]
以上、こんな感じで、本当にさわりしか説明しておりませんが、この手の醍醐味はやっぱりデータ連携の部分になると思います。 アクセスログをリアルタイムに登録 とか MySQLのデータを定期的に、アップロードとか とか 集計されたトレジャーデータの結果を、MySQLに戻す とか そのほか、色々、次回掲載したいと思います。