7. レポート
• 属性による検索
• データ範囲
• ログ・フィールド(例、ユーザーID、メッセージ・タイプ)
• リスト表示(ログデータの行)
• グラフ表示(量 vs 時間)
• CSVフォーマットへのデータ出力対応
2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 7
8. レポート( ):
レポート(例):CDR検索
検索
2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 8
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. Backup
2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 16
17. データベース・ストレージの選択肢
データベース・ストレージの選択肢
ストレージ・システムにはCassandraを使用。
一部の選択肢との比較:
• SQL:高速で大量のデータ挿入が難しい。水平拡張が容易でない。
:
• Hadoop:データベースのようなシステム内にない為、柔軟なクエリーやデータ編集が難しい
:
。
• またはHibari:Cassandraの持つ機能の大半を提供。
または
Hbaseまたは :
Cassandraが選ばれた理由:
• 小さいデータの書込み性能に優れる。
• 複数のデータセンターに対応。
• 調整可能なコンシステンシー(一貫性)。
• 現在は使用していないが、複数のデータセンターが存在する場合や、異なるデータ・クラス(例
、課金レコード vs 統計レコード)が存在する場合に有益。
2011/3/7 Gemini Mobile Technologies, Inc. All rights reserved. 17
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. 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. 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 > 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