- App::Hacheroは
- id:mizuno_takaakiと一緒に作ってる
- ログ解析フレームワークです。
- App::MadEyeからコピペして作り始めて
- Class::Componentにのっかって作られています。
- 先日某社の2日分のログを集計させたところ
- 6時間かかっても処理がかえってこなくてDNBKした
- Class::Component::Component::DisableDynamicPluginで高速化した
- 折しもhadoopブームの昨今
- hadoop対応したらいいんじゃないか、ということで
- hadoop-ec2対応した
- いまhacheroを組み込んだhadoop-ec2のamiを作って試しているところ
- 単純なhacheroは動いたので、実際のデータで実際の運用っぽいのをやってみてる。
- うまくいったらamiを公開します。
- 今のところの動かし方はこんな感じ
- mysqlにちゃんと突っ込めるかどうかは今試してる。
- # map.yaml
global:
log:
level: error
plugins:
- module: Input::Stdin
- module: Parse::Common
config:
format: ':extended'
- module: Parse::Normalize
config:
time_zone: 'Asia/Tokyo'
- module: Analyze::AccessCount
- module: OutputLine::HadoopMap
- # reduce.yaml
global:
log:
level: error
plugins:
- module: Input::Stdin
- module: Parse::HadoopReduce
- module: Output::DBIC
config:
connect_info:
- 'dbi:mysql:database=hachero;host=mysqlhost'
- hadoop
hadoop jar /usr/local/hadoop-0.17.0/contrib/streaming/hadoop-0.17.0-streaming.jar \
> -input logs \
> -output output \
> -mapper 'hachero.pl -c map.yaml' \
> -reducer 'hachero.pl -c reduce.yaml' \
> -file map.yaml \
> -file reduce.yaml
- mysqlへの書き出しができたよ!
- でもなんかちょっとこけてるみたいだ。
- evalして失敗したやつをキャッチしつつ次にいくようにするか。
- 6時間かけても終わらなかった処理が
- hadoopでslaveを15台並べて1時間弱になりました。
- もっと速くなってほしかったところだが…