Flume cassandra real time log processing (日本語)

8,190 views
8,100 views

Published on

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

Published in: Technology
0 Comments
13 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,190
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
125
Comments
0
Likes
13
Embeds 0
No embeds

No notes for slide

Flume cassandra real time log processing (日本語)

  1. 1. : Cassandra + Flume: リアルタイム、大容量ログ処理 リアルタイム、大容量ログ処理 ログ ジェミナイ・モバイル・テクノロジーズ2011/3/7 Gemini Mobile Technologies, Inc. 1
  2. 2. 概要1. ログ収集、データベースへの格納 ログ収集、データベースへの格納 収集 • 複数のアプリケーション・ノードからの、 Flumeによる信頼性や効率の高いログ収集。 • Cassandraデータベースへの生ログや処理済みログの格納。2. リアルタイム、オンデマンドのレポート リアルタイム、 • ウェブGUIからCassandraへのクエリー。 (例)1秒当たりトランザクション処理件数(TPS) VS 時間、ユーザーのCDR検索。 によるサマリーレポート3. Map-Reduceによるサマリーレポート • (例)ユーザー群毎の種類別(音声、データ、メール等)月間利用 アプリケー アプリケー … アプリケー ション・ノード ション・ノード ション・ノード ログ・ ログ・ OA&M アグリゲータ アグリゲータ レポート (Web GUI) Cassandra Cassandra2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 2
  3. 3. 主な利点1. リアルタイム、最新のビジネス・インテリジェンス リアルタイム、最新のビジネス・インテリジェンス • 準リアルタイムの動的レポート。2. 大容量の履歴データのフレキシブルな分析 大容量の履歴データのフレキシブルな分析 データのフレキシブルな • 時間範囲、生ログ・フィールド、処理済みログ・フィールドによるインスタント・クエリー (フラット・ログファイルでなく、データベース内にデータを格納して高速なクエリー対応)。 • Map-Reduceによる、オンデマンドでサマリー・レポートのカスタマイズ生成。3. 複数のデータセンター対応 複数のデータセンター対応 のデータセンター • 近接のデータセンター内で収集、保存。データセンター間のクエリー、分析。4. 信頼性の高い、簡単なオペレーション、保守、拡張性 信頼性の 簡単なオペレーション、保守、 なオペレーション • ネットワークやPC障害時にもデータ損失がない。 • データ量(格納データのサイズ)の増加や速度(データ受信速度)の高速化に合わせ、PCを水平的に 増設し、最大数百台のノード、テラバイト級データ/日に拡張可能。 • 大規模ネットワーク向けに容易なセットアップ、設定、監視。5. 容易なカスタマイズ 容易なカスタマイズ • オープンソース。ログフォーマットのカスタマイズやレポートのカスタマイズ、クエリー向けに容易に変更 可能。2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 3
  4. 4. ログ収集:ログ収集:Flume 収集 • オープンソースのログ収集システム:http://archive.cloudera.com/cdh/3/flume/UserGuide.html • Flumeエージェント:設定可能な間隔でログを読込み(例、100ms)、コレクター・ノードに送信。 • Flumeコレクター:ログを解析し、Cassandraへ挿入。 • Flumeマスター:エージェントやコレクターの健全性や処理状態を監視。 アプリケーション・ ノード 1 Flume agent1_src1 Flumeアグリゲーター Flume Flume collector_src1 agent1_src2 Cassandra Flume アプリケーション・ collector_src2 ノード 2 Flume agent2_src1 Cassandra Flume Flume マスター agent2_src2 42011/3/7 Gemini Mobile Technologies, Inc. All rights reserved.
  5. 5. ストレージ・レイヤ:ストレージ・レイヤ:Cassandra• アパッチ・プロジェクトに参画するCassandraは、ストレージ・レイヤのオープンソース・ソフト ウェアであり、高性能、高拡張性の分散型データベース。 • アパッチ・プロジェクトの中でもトップレベルのソフトウェア (http://cassandra.apache.org/)。• 主な機能 • 小さなデータ(各々100KB以下)の高速書込みに最適化。 • P2Pノード。アドホックでのノードの増設、低減が容易。 • クラスターをノード2台から数百台まで拡張可能。 • 複数のデータセンター間の複製に対応。 • コンシステンシー(一貫性)レベルをリクエスト毎に調整可能。
  6. 6. ログ収集システム監視(ログ収集システム監視(Flumeマスター) 収集システム監視 マスター) マスター2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 6
  7. 7. レポート• 属性による検索 • データ範囲 • ログ・フィールド(例、ユーザーID、メッセージ・タイプ)• リスト表示(ログデータの行)• グラフ表示(量 vs 時間)• CSVフォーマットへのデータ出力対応2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 7
  8. 8. レポート( ):レポート(例):CDR検索 検索2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 8
  9. 9. レポート( ):レポート(例):CDR検索結果 検索結果2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 9
  10. 10. レポート( ):グラフレポート(例):グラフ2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 10
  11. 11. サイジング(サイジング(例)ノード(ハードウェア)ノード(ハードウェア)• 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の書込み 5 <例> 必要な 4 コレクター・ ノード数 3 2 200 300 400 500 KB/Sec (log bytes/tx * TPS)ストレージ・レイヤ• 必要なノード数=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台 実効ストレージ 実効ストレージ レプリケーション ログ(GB) / 日 ログ(GB) データ日数 日数/ データ日数/ノード 365日間のノード 365日間のノード 日間 (GB) / ノード 因子 数 <例> 8000 2 10 400 2 8000 3 10 266 3 8000 2 100 40 102011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 11
  12. 12. オープンソースのコンポーネント• FlumeやCassandraはオープンソース化されている。弊社は下記のコンポーネントをさらに加 える。 • カスタマイズのFlume-Cassandraコネクター(弊社のログ・フォーマットを読取り、Cassandraへ挿入) • Cassandraデータ設計(スキーマ、設定を含む) • ブラウザーUI、Cassandraへのクエリー • 後処理プロセッサ(カスタマイズのログフォーマット・ファイルを生成)2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 12
  13. 13. のデータ・モデル Cassandraのデータ・モデル 1/2 現在、Flumeは四つのテーブルにデータを挿入する。 1. 生データ・テーブル • 関数:受取ったままのログデータを格納。 • 行キー:YYYYMMDDHH、一時間毎に一つ。 • 列: 列名: ログエントリーUUID。値:ログデータ。 列 • その時間内の各ログエント AAB32431352 ABC32433781 BCD32433901 リー毎に追加。 •UUID (Unique Log Entry2011 01S,Market1,12345AA,2011011107 04RR,Market1,12345ZZ,201101110712 07S,Market1,12345BB,2011011107120 ID)でソート。0111 1200000,10.10.2.9,,10.10.2.10,0901 00005,10.10.2.9,,10.10.2.10,09012345 0010,10.10.2.9,,10.10.2.10,09012345607 2345673,carrier.ne.jp,carrier.ne.jp,,, 675,carrier.ne.jp,carrier.ne.jp,,,,, 73,carrier.ne.jp,carrier.ne.jp,,,,, ,, 行 • 各時間毎に追加。 エントリー・テーブル 2. CDRエントリー・テーブル • 関数: 各ログフィールドを列で表す。クエリーやインデックスに便利。 • 行キー:ログエントリーUUID. • 列: 列名:ログデータ・フィールド名。値:ログデータ・フィールドの値。 typ market id timestamp moipaddr mtipaddre msisdn senderdoma recipientdom e ess ss in ain 行 AAB32431 01S Market1 1235AA 2011011107 10.10.2.9 10.10.2.10 0901234567 carrier.ne.jp carrier.ne.jp • 各ログエント 352 1200000 3 リー毎に追加。 ABC32433 04 Market1 1235ZZ 2011011107 10.10.2.9 10.10.2.10 0902345689 carrier.ne.jp carrier.ne.jp 781 RR 1200005 0 BCD32433 07S Market1 1235BB 2011011107 10.10.2.9 10.10.2.10 0901234567 carrier.ne.jp carrier.ne.jp 901 1200010 3 2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 13
  14. 14. のデータ・モデルCassandraのデータ・モデル 2/2 タイムライン・テーブル3. MSISDNタイムライン・テーブル• 関数: MSISDN、次にタイムスタンプで構成。• 行キー: MSISDN.• 列: 列名: タイムスタンプ。値:CDRエントリーを指し示すログエントリーUUID。 行 20110111071200000 20110111071200010 列 •各MSISDN毎に追加。 •そのMSISDNに関す 09012345673 AAB32431352 BCD32433901 る各ログエントリー毎 に追加。 20110111071200005 •タイムスタンプでソー 09023456890 ABC32433781 ト。 毎時タイムライン・テーブル4. 毎時タイムライン・テーブル• 関数:時間(毎時)、次にタイムスタンプで構成。• 行キー: YYYYMMDDHH.• 列: 列名: タイムスタンプの値。値:CDRエントリーを指し示すUUID。 20110111071200000 20110111071200005 20110111071200010 行 列 •各時間毎に追加。 2011011107 AAB32431352 ABC32433781 BCD32433901 •その時間内の各ログエン トリー毎に追加。 20110111081200001 20110111081200010 •タイムスタンプでソート。 2011011108 BDB32431352 CDC324313522011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 14
  15. 15. 次のステップ• オープンソースとしてリリースしています。https://github.com/geminitech/logprocessing • Readme、サンプルデータ、パッケージ。• 以下のステップを試してください。 • Flume、Cassandra、弊社のコードをダウンロード、インストールしてください。 • サンプルデータで試しください。 • 商用システム向けにご使用になる場合、 • 実際のシステムからサンプルログを取得し、必要に応じてFlume Plug-inをカスタマイズしてくだ さい。 • 必要なレポートについて決め、必要に応じてCassandraのテーブル・フォーマット、UIをカスタマイ ズしてください。 • サンプルログで機能性や性能を試験してください。 • 展開:まずラボ環境で、次に商用システムへの展開をご予定ください。2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 15
  16. 16. Backup2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 16
  17. 17. データベース・ストレージの選択肢データベース・ストレージの選択肢ストレージ・システムにはCassandraを使用。一部の選択肢との比較:• SQL:高速で大量のデータ挿入が難しい。水平拡張が容易でない。 :• Hadoop:データベースのようなシステム内にない為、柔軟なクエリーやデータ編集が難しい : 。• またはHibari:Cassandraの持つ機能の大半を提供。 または Hbaseまたは :Cassandraが選ばれた理由: • 小さいデータの書込み性能に優れる。 • 複数のデータセンターに対応。 • 調整可能なコンシステンシー(一貫性)。 • 現在は使用していないが、複数のデータセンターが存在する場合や、異なるデータ・クラス(例 、課金レコード vs 統計レコード)が存在する場合に有益。2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 17
  18. 18. 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
  19. 19. 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 )、後処理プロセ スのログフォーマット( ~250行、Java)。Q. 改善点は? 改善点はA. 1. どんなログフォーマットにも対応できるよう、 UIを一般化。 2. 高い負荷と大規模システムの試験。 3. 後処理ログデータにPigスクリプトを追加。2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 19
  20. 20. 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();cdrs = FOREACH msisdn GENERATE flatten($1);cdrtime = FOREACH cdrs GENERATE $0;givenhourcdr = FILTER cdrtime BY $0 > 20110101000000msisdnByHour = 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

×