flume cassandra real time log processing (日本語)

20
Cassandra + Flumeリアルタイム リアルタイム リアルタイム リアルタイム、 、容量 容量 容量 容量ログ ログ ログ ログ処理 処理 処理 処理 ジェミナイ・モバイル・テクノロジーズ 2011/3/7 Gemini Mobile Technologies, Inc. 1

Upload: cloudian

Post on 28-May-2015

7.813 views

Category:

Technology


1 download

DESCRIPTION

2011年3月3日にオープンソースとしてリリースしたFlume-Cassandra Real Time Log Processorsの日本語プレゼン資料です

TRANSCRIPT

Page 1: Flume cassandra real time log processing (日本語)

Cassandra + Flume::::リアルタイムリアルタイムリアルタイムリアルタイム、、、、大容量大容量大容量大容量ログログログログ処理処理処理処理

ジェミナイ・モバイル・テクノロジーズ

2011/3/7 Gemini Mobile Technologies, Inc. 1

Page 2: Flume cassandra real time log processing (日本語)

概要概要概要概要

1. ログログログログ収集収集収集収集、、、、データベースへのデータベースへのデータベースへのデータベースへの格納格納格納格納

• 複数のアプリケーション・ノードからの、 Flumeによる信頼性や効率の高いログ収集。

• Cassandraデータベースへの生ログや処理済みログの格納。

2. リアルタイムリアルタイムリアルタイムリアルタイム、、、、オンデマンドのレポートオンデマンドのレポートオンデマンドのレポートオンデマンドのレポート

• ウェブGUIからCassandraへのクエリー。

(例)1秒当たりトランザクション処理件数(TPS) VS 時間、ユーザーのCDR検索。

3. Map-Reduceによるサマリーレポートによるサマリーレポートによるサマリーレポートによるサマリーレポート

• (例)ユーザー群毎の種類別(音声、データ、メール等)月間利用

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 2

アプリケーション・ノード

アプリケーション・ノード

アプリケーション・ノード

……

ログ・アグリゲータ

ログ・アグリゲータ

レポート (Web GUI) Cassandra

Cassandra

OA&M

Page 3: Flume cassandra real time log processing (日本語)

主主主主なななな利点利点利点利点

1. リアルタイムリアルタイムリアルタイムリアルタイム、、、、最新最新最新最新のビジネス・インテリジェンスのビジネス・インテリジェンスのビジネス・インテリジェンスのビジネス・インテリジェンス

• 準リアルタイムの動的レポート。

2. 大容量大容量大容量大容量のののの履歴履歴履歴履歴データのフレキシブルなデータのフレキシブルなデータのフレキシブルなデータのフレキシブルな分析分析分析分析

• 時間範囲、生ログ・フィールド、処理済みログ・フィールドによるインスタント・クエリー

(フラット・ログファイルでなく、データベース内にデータを格納して高速なクエリー対応)。

• Map-Reduceによる、オンデマンドでサマリー・レポートのカスタマイズ生成。

3. 複数複数複数複数のデータセンターのデータセンターのデータセンターのデータセンター対応対応対応対応

• 近接のデータセンター内で収集、保存。データセンター間のクエリー、分析。• 近接のデータセンター内で収集、保存。データセンター間のクエリー、分析。

4. 信頼性信頼性信頼性信頼性のののの高高高高いいいい、、、、簡単簡単簡単簡単なオペレーションなオペレーションなオペレーションなオペレーション、、、、保守保守保守保守、、、、拡張性拡張性拡張性拡張性

• ネットワークやPC障害時にもデータ損失がない。

• データ量(格納データのサイズ)の増加や速度(データ受信速度)の高速化に合わせ、PCを水平的に

増設し、最大数百台のノード、テラバイト級データ/日に拡張可能。

• 大規模ネットワーク向けに容易なセットアップ、設定、監視。

5. 容易容易容易容易なカスタマイズなカスタマイズなカスタマイズなカスタマイズ

• オープンソース。ログフォーマットのカスタマイズやレポートのカスタマイズ、クエリー向けに容易に変更

可能。

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 3

Page 4: Flume cassandra real time log processing (日本語)

ログログログログ収集収集収集収集::::Flume • オープンソースのログ収集システム:http://archive.cloudera.com/cdh/3/flume/UserGuide.html

• Flumeエージェント:設定可能な間隔でログを読込み(例、100ms)、コレクター・ノードに送信。

• Flumeコレクター:ログを解析し、Cassandraへ挿入。

• Flumeマスター:エージェントやコレクターの健全性や処理状態を監視。

Flume

agent1_src1

アプリケーション・ノード 1

Flumeアグリゲーター

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved.4

agent1_src1

Flume

agent1_src2

Flume

agent2_src1

Flume

agent2_src2

アプリケーション・ノード 2

Flume

collector_src1

Flume

collector_src2

Flumeアグリゲーター

Cassandra

Cassandra

Flume マスター

Page 5: Flume cassandra real time log processing (日本語)

ストレージ・レイヤストレージ・レイヤストレージ・レイヤストレージ・レイヤ::::Cassandra

• アパッチ・プロジェクトに参画するCassandraは、ストレージ・レイヤのオープンソース・ソフト

ウェアであり、高性能、高拡張性の分散型データベース。

• アパッチ・プロジェクトの中でもトップレベルのソフトウェア

(http://cassandra.apache.org/)。

• 主な機能

• 小さなデータ(各々100KB以下)の高速書込みに最適化。

• P2Pノード。アドホックでのノードの増設、低減が容易。

• クラスターをノード2台から数百台まで拡張可能。

• 複数のデータセンター間の複製に対応。

• コンシステンシー(一貫性)レベルをリクエスト毎に調整可能。

Page 6: Flume cassandra real time log processing (日本語)

ログログログログ収集収集収集収集システムシステムシステムシステム監視監視監視監視((((Flumeマスターマスターマスターマスター))))

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 6

Page 7: Flume cassandra real time log processing (日本語)

レポートレポートレポートレポート

• 属性による検索

• データ範囲

• ログ・フィールド(例、ユーザーID、メッセージ・タイプ)

• リスト表示(ログデータの行)

• グラフ表示(量 vs 時間)

• CSVフォーマットへのデータ出力対応

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 7

Page 8: Flume cassandra real time log processing (日本語)

レポートレポートレポートレポート((((例例例例):):):):CDR検索検索検索検索

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 8

Page 9: Flume cassandra real time log processing (日本語)

レポートレポートレポートレポート((((例例例例):):):):CDR検索結果検索結果検索結果検索結果

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 9

Page 10: Flume cassandra real time log processing (日本語)

レポートレポートレポートレポート((((例例例例):):):):グラフグラフグラフグラフ

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 10

Page 11: Flume cassandra real time log processing (日本語)

サイジングサイジングサイジングサイジング((((例例例例))))

ノードノードノードノード((((ハードウェアハードウェアハードウェアハードウェア))))

• Supermicro (CPU: 2 quad-core Intel E5420, 32GB RAM, 16- 1TB SATA HD) ~ $6,000.

監視監視監視監視レイヤレイヤレイヤレイヤ

• 必要なノード数:2台(高可用性の為、マスター1台+スタンドバイ1台)

コレクター・レイヤコレクター・レイヤコレクター・レイヤコレクター・レイヤ

• 必要なノード数=Max(2, Node Write Throughput (MB/S) / (log bytes per transaction * transactions per second (TPS)))

• 例:1 MB/秒 の書込みスループット/ノード、1K B/トランザクション、1000 TPSシステム=1MB/sの書込み

3

4

5

必要なコレクター・

ノード数

<<<<例例例例>>>>

ストレージ・レイヤストレージ・レイヤストレージ・レイヤストレージ・レイヤ

• 必要なノード数=Max(Replication Factor, Data Per Day * # of Days to keep / (Node Storage / Replication Factor) )

• 例:データ/日=100 GB、保存日数=365、実効ノード・ストレージ=8 TB、レプリケーション因子= 2の場合、

必要なノード数=100 * 365 / (8000 / 2) = 9.125 = 10台

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 11

2

3

200 300 400 500

ノード数

KB/Sec (log bytes/tx * TPS)

実効実効実効実効ストレージストレージストレージストレージ(GB)(GB)(GB)(GB) / / / / ノードノードノードノード

レプリケーションレプリケーションレプリケーションレプリケーション因子因子因子因子

ログログログログ(GB) / (GB) / (GB) / (GB) / 日日日日 データデータデータデータ日数日数日数日数////ノードノードノードノード 365365365365日間日間日間日間のノードのノードのノードのノード数数数数

8000 2 10 400 2

8000 3 10 266 3

8000 2 100 40 10

<<<<例例例例>>>>

Page 12: Flume cassandra real time log processing (日本語)

オープンソースのコンポーネントオープンソースのコンポーネントオープンソースのコンポーネントオープンソースのコンポーネント

• FlumeやCassandraはオープンソース化されている。弊社は下記のコンポーネントをさらに加

える。

• カスタマイズのFlume-Cassandraコネクター(弊社のログ・フォーマットを読取り、Cassandraへ挿入)

• Cassandraデータ設計(スキーマ、設定を含む)

• ブラウザーUI、Cassandraへのクエリー

• 後処理プロセッサ(カスタマイズのログフォーマット・ファイルを生成)

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 12

Page 13: Flume cassandra real time log processing (日本語)

Cassandraのデータ・モデルのデータ・モデルのデータ・モデルのデータ・モデル 1/2

現在、Flumeは四つのテーブルにデータを挿入する。

1. 生データ・テーブル

• 関数:受取ったままのログデータを格納。

• 行キー:YYYYMMDDHH、一時間毎に一つ。

• 列: 列名: ログエントリーUUID。値:ログデータ。

AAB32431352 ABC32433781 BCD32433901

2011

0111

07

01S,Market1,12345AA,2011011107

1200000,10.10.2.9,,10.10.2.10,0901

2345673,carrier.ne.jp,carrier.ne.jp,,,

,,

04RR,Market1,12345ZZ,201101110712

00005,10.10.2.9,,10.10.2.10,09012345

675,carrier.ne.jp,carrier.ne.jp,,,,,

07S,Market1,12345BB,2011011107120

0010,10.10.2.9,,10.10.2.10,090123456

73,carrier.ne.jp,carrier.ne.jp,,,,,

列列列列• その時間内の各ログエントリー毎に追加。•UUID (Unique Log Entry

ID)でソート。

行行行行• 各時間毎に追加。

2. CDRエントリー・テーブルエントリー・テーブルエントリー・テーブルエントリー・テーブル

• 関数: 各ログフィールドを列で表す。クエリーやインデックスに便利。

• 行キー:ログエントリーUUID.

• 列: 列名:ログデータ・フィールド名。値:ログデータ・フィールドの値。

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 13

typ

e

market id timestamp moipaddr

ess

mtipaddre

ss

msisdn senderdoma

in

recipientdom

ain

AAB32431

352

01S Market1 1235AA 2011011107

1200000

10.10.2.9 10.10.2.10 0901234567

3

carrier.ne.jp carrier.ne.jp

ABC32433

781

04

RR

Market1 1235ZZ 2011011107

1200005

10.10.2.9 10.10.2.10 0902345689

0

carrier.ne.jp carrier.ne.jp

BCD32433

901

07S Market1 1235BB 2011011107

1200010

10.10.2.9 10.10.2.10 0901234567

3

carrier.ne.jp carrier.ne.jp

行行行行• 各ログエントリー毎に追加。

• 各時間毎に追加。

Page 14: Flume cassandra real time log processing (日本語)

Cassandraのデータ・モデルのデータ・モデルのデータ・モデルのデータ・モデル 2/2

3. MSISDNタイムライン・テーブルタイムライン・テーブルタイムライン・テーブルタイムライン・テーブル

• 関数: MSISDN、次にタイムスタンプで構成。

• 行キー: MSISDN.

• 列: 列名: タイムスタンプ。値:CDRエントリーを指し示すログエントリーUUID。

20110111071200000 20110111071200010

09012345673 AAB32431352 BCD32433901

列列列列•そのMSISDNに関する各ログエントリー毎に追加。•タイムスタンプでソート。

20110111071200005

09023456890 ABC32433781

行行行行•各MSISDN毎に追加。

4. 毎時毎時毎時毎時タイムライン・テーブルタイムライン・テーブルタイムライン・テーブルタイムライン・テーブル

• 関数:時間(毎時)、次にタイムスタンプで構成。

• 行キー: YYYYMMDDHH.

• 列: 列名: タイムスタンプの値。値:CDRエントリーを指し示すUUID。

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 14

20110111071200000 20110111071200005 20110111071200010

2011011107 AAB32431352 ABC32433781 BCD32433901列列列列•その時間内の各ログエントリー毎に追加。•タイムスタンプでソート。

09023456890 ABC32433781

行行行行•各時間毎に追加。

20110111081200001 20110111081200010

2011011108 BDB32431352 CDC32431352

Page 15: Flume cassandra real time log processing (日本語)

次次次次のステップのステップのステップのステップ

• オープンソースとしてリリースしています。https://github.com/geminitech/logprocessing

• Readme、サンプルデータ、パッケージ。

• 以下のステップを試してください。

• Flume、Cassandra、弊社のコードをダウンロード、インストールしてください。

• サンプルデータで試しください。

• 商用システム向けにご使用になる場合、

• 実際のシステムからサンプルログを取得し、必要に応じてFlume Plug-inをカスタマイズしてくだ• 実際のシステムからサンプルログを取得し、必要に応じてFlume Plug-inをカスタマイズしてくだ

さい。

• 必要なレポートについて決め、必要に応じてCassandraのテーブル・フォーマット、UIをカスタマイ

ズしてください。

• サンプルログで機能性や性能を試験してください。

• 展開:まずラボ環境で、次に商用システムへの展開をご予定ください。

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 15

Page 16: Flume cassandra real time log processing (日本語)

Backup

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 16

Page 17: Flume cassandra real time log processing (日本語)

データベース・ストレージのデータベース・ストレージのデータベース・ストレージのデータベース・ストレージの選択肢選択肢選択肢選択肢

ストレージ・システムにはCassandraを使用。

一部の選択肢との比較:

• SQL::::高速で大量のデータ挿入が難しい。水平拡張が容易でない。

• Hadoop::::データベースのようなシステム内にない為、柔軟なクエリーやデータ編集が難しい

• HbaseまたはまたはまたはまたはHibari::::Cassandraの持つ機能の大半を提供。• HbaseまたはまたはまたはまたはHibari::::Cassandraの持つ機能の大半を提供。

Cassandraが選ばれた理由:

• 小さいデータの書込み性能に優れる。

• 複数のデータセンターに対応。

• 調整可能なコンシステンシー(一貫性)。

• 現在は使用していないが、複数のデータセンターが存在する場合や、異なるデータ・クラス(例

、課金レコード vs 統計レコード)が存在する場合に有益。

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 17

Page 18: Flume cassandra real time log processing (日本語)

FAQ (1/2)

Q. 古古古古いデータはどのようにいデータはどのようにいデータはどのようにいデータはどのように削除削除削除削除するのかするのかするのかするのか?

A. Cassandraには各列にTime to Live (TTL)(秒単位)があり、TTLの有効期間が0になると、圧縮

時に自動的に削除される。

Q. データ・ストアがデータ・ストアがデータ・ストアがデータ・ストアが一杯一杯一杯一杯になったになったになったになった場合場合場合場合、、、、そのそのそのその検出検出検出検出やアラームやアラームやアラームやアラーム処理処理処理処理はどのようにはどのようにはどのようにはどのように行行行行うのかうのかうのかうのか???? デデデデ

ータ・ストアがータ・ストアがータ・ストアがータ・ストアが一杯一杯一杯一杯になりになりになりになり、、、、拡張可能拡張可能拡張可能拡張可能となるとなるとなるとなる時期時期時期時期をどのようにをどのようにをどのようにをどのように予測予測予測予測するのかするのかするのかするのか????

A. SNMP (netsnmp)を用いてサーバーのディスク使用量を監視し、閾値を超える場合、SNMPト

ラップが生成される。ラップが生成される。

Q. Hadoopベースのログベースのログベースのログベースのログ処理処理処理処理システムとはどのようにシステムとはどのようにシステムとはどのようにシステムとはどのように違違違違うのかうのかうのかうのか????

A. データベース(Cassandra)を加えることで、リアルタイム対応、複雑なクエリーの発行、その他

データベースのようなオペレーションが可能になる。

Q. Map/Reduceはははは使用使用使用使用するのかするのかするのかするのか?

A. Map/Reduceのスクリプトを用いて、ログデータの後処理、他のログ・フォーマットの生成や分

析が可能になる。(*弊社による試験検証は未実施。)

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 18

Page 19: Flume cassandra real time log processing (日本語)

FAQ (2/2)

Q. このシステムのリアルタイムこのシステムのリアルタイムこのシステムのリアルタイムこのシステムのリアルタイム性性性性はどのはどのはどのはどの程度程度程度程度かかかか((((具体的具体的具体的具体的にににに、、、、最善最善最善最善のののの状況状況状況状況におけるにおけるにおけるにおける遅延遅延遅延遅延のののの程程程程

度度度度はははは)?)?)?)? リアルタイムリアルタイムリアルタイムリアルタイム性性性性をををを高高高高めるにはどうすればめるにはどうすればめるにはどうすればめるにはどうすれば良良良良いかいかいかいか????

A. ログファイル読取りの設定可能な遅延をAとし、エージェント・ノードからコレクター・ノード

へのデータ送信の時間をBとし、Cassandraへのデータ挿入をCとすると、遅延の合計は「A

+ B + C」となる。例えば、A=100ms、B=50ms、C=10msという場合、合計で160msである。

Q. コードのコードのコードのコードの行数行数行数行数はどれくらいかはどれくらいかはどれくらいかはどれくらいか????言語言語言語言語はははは何何何何かかかか????

A. FlumeからCassandraのプラグイン(~40行、Java)、UI( ~2000行、Java、JSP )、後処理プロセA. FlumeからCassandraのプラグイン(~40行、Java)、UI( ~2000行、Java、JSP )、後処理プロセ

スのログフォーマット( ~250行、Java)。

Q. 改善点改善点改善点改善点はははは?

A. 1. どんなログフォーマットにも対応できるよう、 UIを一般化。

2. 高い負荷と大規模システムの試験。

3. 後処理ログデータにPigスクリプトを追加。

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 19

Page 20: Flume cassandra real time log processing (日本語)

Cassandra向向向向けのけのけのけのPig

• Pig (http://pig.apache.org/)は高水準言語の関係型言語で、クエリーの書込みに用いる。クエ

リーはその後、Map/Reduceのジョブ向けに翻訳される。

• Map/ReduceのジョブはCassandraが対応する。

• Pigスクリプト の例:2011年1月1日以降、ログレコードの数の多い上位100件のMSISDNを検

索。

msisdn = LOAD 'cassandra://CDRLogs/MSISDNTimeline' USING CassandraStorage();msisdn = LOAD 'cassandra://CDRLogs/MSISDNTimeline' USING CassandraStorage();

cdrs = FOREACH msisdn GENERATE flatten($1);

cdrtime = FOREACH cdrs GENERATE $0;

givenhourcdr = FILTER cdrtime BY $0 > 20110101000000

msisdnByHour = GROUP givenhourcdr BY $0;

msisdnByHourCount = FOREACH msisdnByHour GENERATE COUNT($1), group;

orderedMsisdn = ORDER msisdnByHourCount BY $0;

topUserAfterNewYear = LIMIT orderedMsisdn 100;

dump topUserAfterNewYear;

2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 20