• 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時間弱になりました。
    • もっと速くなってほしかったところだが…