ossで支えられるライブドアの巨大ログ集計 #nhntech

Post on 15-Jan-2015

22.460 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

OSSで支えられるライブドアの巨大ログ集計

- HiveとFluentd -

第2回 NHNテクノロジーカンファレンス2012/08/18

TAGOMORI Satoshi (@tagomoris)

12年8月18日土曜日

TAGOMORI Satoshi (@tagomoris)

NHNJapan株式会社 ウェブサービス本部 開発2室

12年8月18日土曜日

今日の話

どういうことをやっているかの話

機能とコンポーネント分離の話

規模の拡大とデプロイの話

12年8月18日土曜日

どういうことをやっているかの話

12年8月18日土曜日

アクセスログ収集・集計

システム・サービスの稼動状況を明確にする

PV, UUの集計

HTTPレスポンスコード毎の割合の時系列変化

レスポンスタイムの統計・時系列変化

そのほか必要に応じたログ調査など

12年8月18日土曜日

概要Web Server

Fluentd

Web Server

Graphs(GrowthForecast)

Hadoop/HDFSHive Server

Hive Clientlog

info

loglog

query

12年8月18日土曜日

構成ソフトウェア

Hadoop Cluster (Hadoop, Hive)

CDH3u5 + CentOS5 + JDK6

Fluentd Cluster

Fluentd 0.10.25 + CentOS5 + Ruby 1.9.3-p194 + jemalloc

Others

GrowthForecast, HRForecast

fluent-agent-lite, Shib, ShibUI

12年8月18日土曜日

Hive

オープンソースプロダクト

Hadoop MapReduce のためのDSL(ドメイン特化言語)

HiveQL というほぼSQLそのままのものを使える

特に集計・統計においてパフォーマンスが良い

Hive Server経由でRPCを使える

12年8月18日土曜日

Fluentd

オープンソースプロダクト

構造化ログ収集用ソフトウェア

インストールが簡単、拡張性があり、比較的高速に動作

プラグイン機構を備えていて豊富な公開プラグインが存在

いくつかの機能を使うことでデータ処理にも使用可能

12年8月18日土曜日

ログ収集・変換: Fluentd

集計処理: Hive

リアルタイム統計処理: Fluentd

アクセスログ収集・集計

12年8月18日土曜日

概要Web Server

Fluentd

Web Server

Graphs(GrowthForecast)

Hadoop/HDFSHive Server

Hive Clientlog

info

loglog

query

12年8月18日土曜日

実装の詳細

"Hive Tools in NHN Japan"Hadoop Source Code Reading vol.9 (2012/05/30)http://www.slideshare.net/tagomoris/hive-tools-in-nhn-japan-hadoopreading

"Distributed message stream processing on Fluentd"Fluentd meetup in Japan #1 (2012/02/04)http://www.slideshare.net/tagomoris/distributed-stream-processing-on-fluentd-fluentd

"Plugins by tagomoris"Fluentd Casual Talks (2012/05/18)http://www.slideshare.net/tagomoris/plugins-by-tagomoris-fluentdcasual

12年8月18日土曜日

実装の詳細

"Hive Tools in NHN Japan"Hadoop Source Code Reading vol.9 (2012/05/30)http://www.slideshare.net/tagomoris/hive-tools-in-nhn-japan-hadoopreading

"Distributed message stream processing on Fluentd"Fluentd meetup in Japan #1 (2012/02/04)http://www.slideshare.net/tagomoris/distributed-stream-processing-on-fluentd-fluentd

"Plugins by tagomoris"Fluentd Casual Talks (2012/05/18)http://www.slideshare.net/tagomoris/plugins-by-tagomoris-fluentdcasual

30分30分

30分60分

30分10分

ごめん、無理……

12年8月18日土曜日

集計クエリの登録と実行

Shib / ShibUI の画面でごらんください

Shib でのクエリ入力と実行

ShibUI でのクエリ登録、グラフの閲覧

ShibUI でのクエリ作成

12年8月18日土曜日

Why We Don't UseData Analytics Services?

12年8月18日土曜日

なぜ自分達で作るか

なぜ Google Analytics (or others)じゃいけないのか?

根拠: 数字の理由が説明可能でなければならない

再現性: データさえあれば追試可能でなければならない

機能と継続性の問題

機能とコンポーネント分離の話規模の拡大とデプロイの話

12年8月18日土曜日

機能とコンポーネント分離の話

12年8月18日土曜日

コンポーネント分離

Hadoop / HDFSHive Server

Users(Web Browser)

Shib (node.js)

ShibUI(Perl/Plack Web Application: Kossy)

HRForecast

例:Hive系

12年8月18日土曜日

機能のアップデート

ミドルウェアの機能アップデート

この分野のツールはアップデートが頻繁にある

しかも適用したいアップデートが多い

UIツール等の機能アップデート

(社内)ユーザ向けの機能の追加・修正など

頻繁に行えないようでは仕事をしているとは言えない

12年8月18日土曜日

機能向上のための鉄則

頻繁に、ただし全体を壊さずにアップデートしたい

コンポーネント分離を徹底するインターフェイスを明確に定めて疎結合化するため

ある箇所の変更の影響範囲をできるだけ小さくするため

小さく、変更内容が追えるツールをOSSで揃える

更新タイミングをコントロール可能な状態を維持する

12年8月18日土曜日

規模の拡大とデプロイの話

12年8月18日土曜日

デプロイ対象servers

servers

servers

servers

servers

deliver

deliver

workerworker

workerworker

workerworker

workerworker

worker

archiver backup

serializer

HDFS(WebHDFS)

serializer

例:Fluentdクラスタ12年8月18日土曜日

規模の拡大への対応

量の拡大PV増にともなうアクセスログの増大への対応「サーバを増やしてリストに追加するだけ」になってる?

バリエーションの拡大サービス増減に関して手間がかかるようでは駄目「ログを流せばあとは全自動」になってる?

私見

「スケールする」と言うとき、両方に対応できているべき

12年8月18日土曜日

スケールするクラスタ構成の鉄則

変更は少なく、追加は容易に

変更なしでバリエーション増に対応できる設定セットを作るその上で規模の桁が違う一部にだけ特例の設定を行う

汎用の公開ソフトウェアを可能な限りそのまま使うデプロイ手順が複雑な構成はスケールしない

できるだけミドルウェアに任せることで複雑さを軽減する

10%+の性能よりもデプロイ容易性の方が価値が高い

12年8月18日土曜日

場合によってはあらゆるところに

手を入れる覚悟をしておく12年8月18日土曜日

コンセプトの良いOSSを選んで使う

Hive と Fluentd12年8月18日土曜日

Thanks!

photo: crouton & luke by @kbysmnr

12年8月18日土曜日

top related