ビッグデータ取り扱いまでの流れ1 収集編
最近ビッグデータを取り扱ってきているので、その流れを記録しようかと思います。
Ruby on Railsで構築していますが、一部以外は別の言語やフレームワークでも利用できます。
ビッグデータの定義ですが、この本の帯の「データサイズが悩みの種ならそれはもうビッグデータです」
- 作者: 佐々木達也
- 出版社/メーカー: 秀和システム
- 発売日: 2012/09
- メディア: 単行本
- クリック: 14回
- この商品を含むブログ (4件) を見る
っていうのがすごくしっくりきました。
丁度データサイズに悩み始めてきたため、ビッグデータを取り扱っているといえるでしょう。
ざっくりとした流れは
- fluentdのインストール
- td-loggerでアプリケーションログの吐き出し
- td-loggerで受け取ったログをS3に送信
- S3のデータをHadoopで解析
- Hadoopで解析したデータをRDSに突っ込む
というような流れとなっております。
fluentdのインストール
これはいろんなところで書いてあるのであまり深くは書きませんが、
こんな感じでインストールします。
/etc/yum.repos.d/td.repo
[treasuredata] name=TreasureData baseurl=http://packages.treasure-data.com/redhat/$basearch gpgcheck=0
$ yum update $ yum install td-agent
td-loggerでアプリケーションログの吐き出し
Gemfileにて
gem 'td-logger'
を追加しbundle install
ファイル
config/treasure_data.yml
development: agent: localhost:24224 tag: アプリケーション名 debug_mode: true # enable debug mode production: agent: localhost:24224 tag: アプリケーション名 debug_mode: false # disable logging test:
を追加
取得したい場所に
TD.event.post('[タグの名前]', ハッシュ)
するとログでは
datetime アプリケーション名.タグの名前 json
みたいな感じです。具体的に入れると
TD.event.post('test', { hoge: :piyo })
アプリケーション名をmy_appとするとログは
2014-03-29T00:40:11+09:00 my_app.test {"hoge":"piyo"}
みたいな感じになります。
td-loggerで受け取ったログをS3に送信
次は
2014-03-29T00:40:11+09:00 my_app.test {"hoge":"piyo"}
こちらのログをS3に入れます。
設定ファイルに次の設定を追加します
/etc/td-agent/td-agent.conf
<match my_app.event> type s3 aws_key_id AWSのキー aws_sec_key AWSのシークレットキー s3_bucket バケット名 s3_endpoint S3のリージョン.amazonaws.com s3_object_key_format %{path}%{time_slice}_%{index}_%{hostname}.%{file_extension} path events/ buffer_path /var/log/fluentd/events_s3 time_slice_format %Y-%m-%d/%H time_slice_wait 10m </match>
これでオッケー。
あとはしばらく動かして、バケットの中身を見ると、gzip形式のファイルがどんどん溜まっていきます。
それをhadoopで処理します。
動いてないと思ったら
tail -f /var/log/td-agent/td-agent
などでログを見て行きましょう。
というわけで今回はここまで。
次回はhadoopで処理する方法を書いていきます。
参考記事
fluentd+rails+mongoでサクッとログ環境を整備してみる - dev.log
データサイエンティスト養成読本 [ビッグデータ時代のビジネスを支えるデータ分析力が身につく! ] (Software Design plus)
- 作者: 佐藤洋行,原田博植,下田倫大,大成弘子,奥野晃裕,中川帝人,橋本武彦,里洋平,和田計也,早川敦士,倉橋一成
- 出版社/メーカー: 技術評論社
- 発売日: 2013/08/08
- メディア: 大型本
- この商品を含むブログ (12件) を見る