Flume cassandra real time log processing (日本語)
Upcoming SlideShare
Loading in...5
×
 

Flume cassandra real time log processing (日本語)

on

  • 8,328 views

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

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

Statistics

Views

Total Views
8,328
Views on SlideShare
7,520
Embed Views
808

Actions

Likes
12
Downloads
122
Comments
0

9 Embeds 808

http://www.gemini-bigdata.com 782
http://webcache.googleusercontent.com 8
http://themodule.com 6
http://slmn.tumblr.com 4
http://statichtml.jp 2
http://www.geminimobile.jp 2
http://www.cloudian-blog.com 2
http://leapf.org 1
http://blogs.geminimobile.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Flume cassandra real time log processing (日本語) Flume cassandra real time log processing (日本語) Presentation Transcript

  • : Cassandra + Flume: リアルタイム、大容量ログ処理 リアルタイム、大容量ログ処理 ログ ジェミナイ・モバイル・テクノロジーズ2011/3/7 Gemini Mobile Technologies, Inc. 1
  • 概要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
  • 主な利点1. リアルタイム、最新のビジネス・インテリジェンス リアルタイム、最新のビジネス・インテリジェンス • 準リアルタイムの動的レポート。2. 大容量の履歴データのフレキシブルな分析 大容量の履歴データのフレキシブルな分析 データのフレキシブルな • 時間範囲、生ログ・フィールド、処理済みログ・フィールドによるインスタント・クエリー (フラット・ログファイルでなく、データベース内にデータを格納して高速なクエリー対応)。 • Map-Reduceによる、オンデマンドでサマリー・レポートのカスタマイズ生成。3. 複数のデータセンター対応 複数のデータセンター対応 のデータセンター • 近接のデータセンター内で収集、保存。データセンター間のクエリー、分析。4. 信頼性の高い、簡単なオペレーション、保守、拡張性 信頼性の 簡単なオペレーション、保守、 なオペレーション • ネットワークやPC障害時にもデータ損失がない。 • データ量(格納データのサイズ)の増加や速度(データ受信速度)の高速化に合わせ、PCを水平的に 増設し、最大数百台のノード、テラバイト級データ/日に拡張可能。 • 大規模ネットワーク向けに容易なセットアップ、設定、監視。5. 容易なカスタマイズ 容易なカスタマイズ • オープンソース。ログフォーマットのカスタマイズやレポートのカスタマイズ、クエリー向けに容易に変更 可能。2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 3
  • ログ収集:ログ収集: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.
  • ストレージ・レイヤ:ストレージ・レイヤ:Cassandra• アパッチ・プロジェクトに参画するCassandraは、ストレージ・レイヤのオープンソース・ソフト ウェアであり、高性能、高拡張性の分散型データベース。 • アパッチ・プロジェクトの中でもトップレベルのソフトウェア (http://cassandra.apache.org/)。• 主な機能 • 小さなデータ(各々100KB以下)の高速書込みに最適化。 • P2Pノード。アドホックでのノードの増設、低減が容易。 • クラスターをノード2台から数百台まで拡張可能。 • 複数のデータセンター間の複製に対応。 • コンシステンシー(一貫性)レベルをリクエスト毎に調整可能。
  • ログ収集システム監視(ログ収集システム監視(Flumeマスター) 収集システム監視 マスター) マスター2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 6
  • レポート• 属性による検索 • データ範囲 • ログ・フィールド(例、ユーザーID、メッセージ・タイプ)• リスト表示(ログデータの行)• グラフ表示(量 vs 時間)• CSVフォーマットへのデータ出力対応2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 7
  • レポート( ):レポート(例):CDR検索 検索2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 8
  • レポート( ):レポート(例):CDR検索結果 検索結果2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 9
  • レポート( ):グラフレポート(例):グラフ2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 10
  • サイジング(サイジング(例)ノード(ハードウェア)ノード(ハードウェア)• 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
  • オープンソースのコンポーネント• FlumeやCassandraはオープンソース化されている。弊社は下記のコンポーネントをさらに加 える。 • カスタマイズのFlume-Cassandraコネクター(弊社のログ・フォーマットを読取り、Cassandraへ挿入) • Cassandraデータ設計(スキーマ、設定を含む) • ブラウザーUI、Cassandraへのクエリー • 後処理プロセッサ(カスタマイズのログフォーマット・ファイルを生成)2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 12
  • のデータ・モデル 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
  • のデータ・モデル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
  • 次のステップ• オープンソースとしてリリースしています。https://github.com/geminitech/logprocessing • Readme、サンプルデータ、パッケージ。• 以下のステップを試してください。 • Flume、Cassandra、弊社のコードをダウンロード、インストールしてください。 • サンプルデータで試しください。 • 商用システム向けにご使用になる場合、 • 実際のシステムからサンプルログを取得し、必要に応じてFlume Plug-inをカスタマイズしてくだ さい。 • 必要なレポートについて決め、必要に応じてCassandraのテーブル・フォーマット、UIをカスタマイ ズしてください。 • サンプルログで機能性や性能を試験してください。 • 展開:まずラボ環境で、次に商用システムへの展開をご予定ください。2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 15
  • Backup2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 16
  • データベース・ストレージの選択肢データベース・ストレージの選択肢ストレージ・システムにはCassandraを使用。一部の選択肢との比較:• SQL:高速で大量のデータ挿入が難しい。水平拡張が容易でない。 :• Hadoop:データベースのようなシステム内にない為、柔軟なクエリーやデータ編集が難しい : 。• またはHibari:Cassandraの持つ機能の大半を提供。 または Hbaseまたは :Cassandraが選ばれた理由: • 小さいデータの書込み性能に優れる。 • 複数のデータセンターに対応。 • 調整可能なコンシステンシー(一貫性)。 • 現在は使用していないが、複数のデータセンターが存在する場合や、異なるデータ・クラス(例 、課金レコード vs 統計レコード)が存在する場合に有益。2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 17
  • 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
  • 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
  • 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