説明

分散処理状態可視化システム、分散処理状態可視化装置、分散処理状態可視化プログラム及び分散処理状態可視化方法

【課題】複数のノードによって構成された分散処理システムの状態を、より好適に表示可能とする。
【解決手段】通信ログ収集サーバ30によって、分散処理システムAのノードの通信状態を示す通信ログを収集し、実行ログ収集サーバ60によって、分散処理システムAのノードの処理実行状態を示す実行ログを収集する。そして、表示クライアント70のログ同期部71によって、通信ログと実行ログとを同期させた同期済みログを生成し、ログ表示処理部72によって、同期済みログに基づいて表示画像を生成する。ログ表示処理部72は、生成した表示画像をディスプレイ80に表示する。このように、通信ログと実行ログとを同期させ、同期済みログに基づいて表示画像を生成することにより、分散処理システムにおける通信状態と各ノードの処理実行状態とが同時に表示される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のノードによって構成された分散処理システムの状態を表示する分散処理状態可視化システム、分散処理状態可視化装置、分散処理状態可視化プログラム及び分散処理状態可視化方法に関する。
【背景技術】
【0002】
複数のノードによって並列して処理を行う分散処理システムがある。このような分散処理システムにおいては、ネットワークやノードの状態を監視することが重要になっており、監視を行うアプリケーションとして、例えば、Ganglia(非特許文献1)やCacti(非特許文献2)がある。また、分散処理フレームワークHadoopのログを分析して表示するツールとして、SALSA(非特許文献3)やMochi(非特許文献4)が存在する。
【0003】
また、可視化アプリケーションをデバッグツールとして用いた実装法に関する技術が、例えば、特許文献1に開示されている。この特許文献1には、可視化アプリケーションが、分散環境においてランタイム診断を行うことが記載されている。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】http://ganglia.info/
【非特許文献2】http://www.cacti.net/
【非特許文献3】J.Tan, X.Pan, S.Kavulya, R.Gandhi,and P.Narasimhan. SALSA:Analyzing logs as state machines. In USENIX Workshop on Analysis of System Logs, San Diego, CA, Dec 2008.
【非特許文献4】J.Tan, X.Pan, S.Kavulya, R.Gandhi, P.Narasimhan. Mochi:Visual Log-Analysis Based Tools for Debugging Hadoop. HotCloud, San Diego, CA, Jun 2009.
【特許文献】
【0005】
【特許文献1】特開2010−198612号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1に記載された発明を用いて、分散処理システムの分散処理プログラムのデバッグを行おうとしても、ネットワークやノードの状態を適切に確認することができず、デバックが困難であるといった問題がある。具体的には、分散処理システムでは、例えば、100台を超えるサーバ装置で構成されるクラスタで並列プログラムを実行するため、表形式を用いて、表の各行にサーバの状態を表現しようとしても画面上に全てを表示することは困難である。このため、ネットワークやノードの状態を適切に確認することができる可視化システムが望まれている。
【0007】
そこで本発明は、複数のノードによって構成された分散処理システムの状態を、より好適に表示可能な分散処理状態可視化システム、分散処理状態可視化装置、分散処理状態可視化プログラム及び分散処理状態可視化方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明に係る分散処理状態可視化システムは、複数のノードによって構成された分散処理システムの状態を表示する分散処理状態可視化システムであって、分散処理システムのノードの通信状態を示す通信ログを取得する通信ログ取得手段と、通信ログ取得手段で取得された通信ログを収集する通信ログ収集手段と、分散処理システムのノードの処理実行状態を示す実行ログを取得する実行ログ取得手段と、実行ログ取得手段で取得された実行ログを収集する実行ログ収集手段と、通信ログ収集手段で収集された通信ログ、及び実行ログ収集手段で収集された実行ログを同期させて、同期済みログを生成するログ同期手段と、ログ同期手段で生成された同期済みログに基づいて表示画像を生成し、当該表示画像を可視化デバイスに表示するログ表示処理手段と、を備えることを特徴とする。
【0009】
また、本発明に係る分散処理状態可視化方法は、分散処理システムを構成するノードの処理状態を表示する分散処理状態可視化システムで実行される分散処理状態可視化方法であって、分散処理システムのノードの通信状態を示す通信ログを取得する通信ログ取得ステップと、通信ログ取得ステップで取得された通信ログを収集する通信ログ収集ステップと、分散処理システムのノードの処理実行状態を示す実行ログを取得する実行ログ取得ステップと、実行ログ取得ステップで取得された実行ログを収集する実行ログ収集ステップと、通信ログ収集ステップで収集された通信ログ、及び実行ログ収集ステップで収集された実行ログを同期させて、同期済みログを生成するログ同期ステップと、ログ同期ステップで生成された同期済みログに基づいて表示画像を生成し、当該表示画像を可視化デバイスに表示するログ表示処理ステップと、を含むことを特徴とする。
【0010】
これらの発明では、分散処理システムのノードの通信状態を示す通信ログが収集され、また、分散処理システムのノードの処理実行状態を示す実行ログが収集される。そして、通信ログと実行ログとを同期させた同期済みログが生成され、この同期済みログに基づいて生成された表示画像が可視化デバイスに表示される。このように、通信ログと実行ログとを同期させ、この同期済みログに基づいて表示画像を生成することにより、分散処理システムにおける通信状態と各ノードの処理実行状態とを同時に表示可能となり、分散処理システムの状態をより好適に表示することができる。
【0011】
また、ログ同期手段は、通信ログに含まれる時刻情報、及び実行ログに含まれる時刻情報に基づいて、通信ログと実行ログとを用いて同時刻のデータを統合することにより同期済みログを生成する、ことが好ましい。この場合には、同時刻の通信ログと実行ログとが統合され、同時刻の通信ログと実行ログとを表示することが可能となる。
【0012】
また、ログ表示処理手段は、表示画像として、球面状にノードを配置し、配置したノード間を線分で接続し、線分上に送受信されるデータ量を表すデータ量表示を付加した画像を生成するものであり、表示画像は、球面状に配置したノードの視覚効果の変化によって実行ログが示す処理実行状態が表され、データ量表示の視覚効果の変化によって通信ログが示す通信状態が表される、ことが好ましい。これにより、分散処理システムの通信状態及び処理実行状態を視覚的に分り易く表示することができる。
【0013】
また、表示画像は、球面状に配置したノードの色によって処理実行状態が表され、データ量表示が線分上を流れるときの当該データ量表示の大きさによってデータ量が表される、ことが好ましい。この場合には、分散処理システムの通信状態及び処理実行状態を簡易な方法で視覚的により一層分り易く表示することができる。
【0014】
また、ログ表示処理手段は、表示画像における、表示の視点の変更、時間経過と共に変化する処理実行状態及び通信状態の表示の開始或いは停止、時間経過と共に変化する処理実行状態及び通信状態の表示の早送り或いは巻き戻し、処理実行状態の表示及び通信状態の表示の何れか一方のみの表示、のうち少なくとも何れかを行うことが好ましい。この場合には、ユーザ操作に基づいてユーザの注目したい部分のみを選択的に表示することができる。
【0015】
また、本発明に係る分散処理状態可視化装置は、分散処理システムを構成するノードの処理状態を表示する分散処理状態可視化装置であって、分散処理システムのノードの通信状態を示す通信ログ、及び分散処理システムのノードの処理実行状態を示す実行ログを同期させて、同期済みログを生成するログ同期手段と、ログ同期手段で生成された同期済みログに基づいて表示画像を生成し、当該表示画像を可視化デバイスに表示するログ表示処理手段と、を備えることを特徴とする。
【0016】
また、本発明に係る分散処理状態可視化プログラムは、複数のノードによって構成された分散処理システムの状態を表示する分散処理状態可視化プログラムであって、コンピュータを、分散処理システムのノードの通信状態を示す通信ログ、及び分散処理システムのノードの処理実行状態を示す実行ログを同期させて、同期済みログを生成するログ同期手段と、ログ同期手段で生成された同期済みログに基づいて表示画像を生成し、当該表示画像を可視化デバイスに表示するログ表示処理手段、として動作させることを特徴とする。
【0017】
これらの発明では、通信ログと実行ログとを同期させた同期済みログが生成され、この同期済みログに基づいて生成された表示画像が可視化デバイスに表示される。このように、通信ログと実行ログとを同期させ、この同期済みログに基づいて表示画像を生成することにより、分散処理システムにおける通信状態と各ノードの処理実行状態とを同時に表示可能となり、分散処理システムの状態をより好適に表示することができる。
【発明の効果】
【0018】
本発明によれば、複数のノードによって構成された分散処理システムの状態をより好適に表示することができる。
【図面の簡単な説明】
【0019】
【図1】実施形態に係る分散処理状態可視化システムの全体構成図である。
【図2】通信ログの具体例を示す図である。
【図3】実行ログの具体例を示す図である。
【図4】同期済みログの具体例を示す図である。
【図5】ログ表示処理部が作成する表示画像の概念を示す図である。
【図6】ログ表示処理部が作成する表示画像の具体例を示す図である。
【図7】分散処理状態可視化システムで行われる処理の流れを示すシーケンス図である。
【図8】ログ表示処理部が作成する表示画像を示す図である。
【図9】WordCountプログラム実行時における各状態の測定結果を示す図である。
【図10】WordCount1のプログラムを実行させたときの状態(b)における表示画像を示す図である。
【図11】WordCount2のプログラムを実行させたときの状態(b)における表示画像を示す図である。
【図12】WordCount3のプログラムを実行させたときの状態(b)における表示画像を示す図である。
【図13】視点を変更したときの表示画像を示す図である。
【図14】分散処理状態可視化プログラムを示す図である。
【発明を実施するための形態】
【0020】
添付図面を参照しながら本発明の実施形態を説明する。可能な場合には、同一の部分には同一の符号を付して、重複する説明を省略する。
【0021】
[分散処理状態可視化システムの全体構成]
図1は、本実施形態に係る分散処理状態可視化システムの全体構成図である。分散処理状態可視化システム1は、通信ログ蓄積部11,12,13、通信ログ取得サーバ(通信ログ取得手段)21,22,23、通信ログ収集サーバ(通信ログ収集手段)30、実行ログ蓄積部41,42,43、実行ログ取得サーバ(実行ログ取得手段)51,52,53、実行ログ収集サーバ(実行ログ収集手段)60、表示クライアント70、及びディスプレイ(可視化デバイス)80を含んで構成されている。分散処理システムAは、複数のノードによって構成され、これらの複数のノードによって並列して処理を行うシステムである。なお、表示クライアント70は、本発明に係る分散処理状態可視化装置に相当する。
【0022】
通信ログ蓄積部11,12,13は、Hadoop等の分散処理システムにおける通信ログをハードディスク等の記憶媒体に蓄積するデータベースである。図1では、便宜上、3台の通信ログ蓄積部11,12,13のみ図示するが、実際には、分散処理状態可視化システム1内には100〜1000台規模の通信ログ蓄積部が備えられている。また、以降、通信ログ蓄積部11,12,13を総称して、「通信ログ蓄積部10」と呼ぶ。また、通信ログ蓄積部10内に蓄積される通信ログの取得方法は、例えば、Hadoopのデータノードの機能を用いる。これにより、分散処理システムA上のデータが実際にどのノードからどのノードに書き込まれたか、或いは読み込まれたかについての情報を、通信ログとして得ることができる。
【0023】
通信ログは、分散処理システムA内の通信状態を示すものであり、時刻、送信元IPアドレス、送信先IPアドレス、送受信されるデータのデータサイズの情報を含んでいる。ここで、図2に通信ログの具体例を示す。図2に示す通信ログの例において、通信ログ(1)は、2011年1月13日0時0分0秒に、IPアドレスがIP1のノードからIPアドレスがIP2のノードへ1000バイトのデータが送信されたことを示している。また、通信ログ(2)は、2011年1月13日0時10分0秒に、IPアドレスがIP2のノードからIPアドレスがIP3のノードへ2000バイトのデータが送信されたことを示している。また、通信ログ(3)は、2011年1月13日23時59分59秒に、IPアドレスがIP3のノードからIPアドレスがIP1のノードへ5555バイトのデータが送信されたことを示している。
【0024】
通信ログ取得サーバ21,22,23は、通信ログ蓄積部10から通信ログを取得するものである。図1では、便宜上、3台の通信ログ取得サーバ21,22,23のみ図示するが、実際には、分散処理状態可視化システム1内には100〜1000台規模の通信ログ取得サーバが備えられている。また、以降、通信ログ取得サーバ21,22,23を総称して、「通信ログ取得サーバ20」と呼ぶ。通信ログ取得サーバ20は、取得した通信ログを通信ログ収集サーバ30へ送信する。
【0025】
通信ログ収集サーバ30は、通信ログ取得サーバ20から送信された通信ログを収集するものである。通信ログ収集サーバ30は、分散処理状態可視化システム1内に1台だけ備えられており、通信ログが一箇所(通信ログ収集サーバ30)に集められることとなる。通信ログ収集サーバ30は、収集した通信ログを表示クライアント70へ送信する。なお、通信ログを表示クライアント70に送信するときに、通信ログの数が膨大である場合には、通信ログの中から、分散処理システムAの通信状態を表示する際に必要な一部分のデータのみを抽出し、表示クライアント70に送信することで、通信ログに対する処理の高速化を図ることができる。例えば、通信ログとして、Hadoopのデータノードのログを用いる場合は、時刻と送信元と送信先とバイト数のみを抽出する処理を行うとよい。
【0026】
実行ログ蓄積部41,42,43は、Ganglia等の分散処理システムにおける実行ログを蓄積するデータベースである。図1では、便宜上、3台の実行ログ蓄積部41,42,43のみ図示するが、実際には、分散処理状態可視化システム1内には100〜1000台規模の実行ログ蓄積部が備えられている。また、以降、実行ログ蓄積部41,42,43を総称して、「実行ログ蓄積部40」と呼ぶ。また、実行ログ蓄積部40内に蓄積される実行ログの取得方法は、例えば、GangliaのRRD(Round Robin Database)を用いる。これにより、分散処理システムAを構成する各ノードのCPU使用率を実行ログとして得ることができる。ここでは、Gangliaの収集機能を用いることで、実行ログ蓄積部40が1000台規模のシステムであっても実行ログを収集することができる。
【0027】
実行ログは、分散処理システムAの処理実行状態を示すものであり、例えば、「時刻、ノード識別子、CPU使用率」を含んでいる。なお、ノード識別子としてIPアドレスを用いるものとする。但し、ノード識別子として、IPアドレス以外のものを用いてもよい。ここで、図3に実行ログの具体例を示す。図3に示す実行ログの例において、実行ログ(1)は、2011年1月13日0時0分0秒に、ノード識別子がIP4のノードのCPU使用率が5%の状態を示している。また、実行ログ(2)は、2011年1月13日0時10分0秒に、ノード識別子がIP6のノードのCPU使用率が100%の状態を示している。また、実行ログ(3)は、2011年1月13日23時59分59秒に、ノード識別子がIP5のノードのCPU使用率が30%の状態を示している。なお、実行ログが、「時刻、ノード識別子、メモリ使用量」の情報を含むものであってもよく、実行ログとして、「時刻、ノード識別子、CPU使用率」及び「時刻、ノード識別子、メモリ使用量」の両方を用いてもよい。実行ログが、「時刻、ノード識別子、メモリ使用量」の場合であっても、実行ログは、「時刻、ノード識別子、CPU使用率」の場合と同様に、時刻、ノード識別子及び数値データ(メモリ使用率)の組からなる。なお、実行ログにノード識別子を含める以外にも、個々の実行ログに付されたファイル名によって、ノードを識別することもできる。
【0028】
実行ログ取得サーバ51,52,53は、実行ログ蓄積部40から実行ログを取得するものである。図1では、便宜上、3台の実行ログ取得サーバ51,52,53のみ図示するが、実際には、分散処理状態可視化システム1内には100〜1000台規模の実行ログ取得サーバが備えられている。また、以降、実行ログ取得サーバ51,52,53を総称して、「実行ログ取得サーバ50」と呼ぶ。実行ログ取得サーバ50は、取得した実行ログを実行ログ収集サーバ60へ送信する。
【0029】
実行ログ収集サーバ60は、実行ログ取得サーバ50から送信された実行ログを収集するものである。実行ログ収集サーバ60は、分散処理状態可視化システム1内に1台だけ備えられており、実行ログが一箇所(実行ログ収集サーバ60)に集められることとなる。実行ログ収集サーバ60は、収集した実行ログを表示クライアント70へ送信する。なお、実行ログを表示クライアント70に送信するときに、実行ログの数が膨大である場合には、実行ログの中から、分散処理システムAの処理実行状態を表示する際に必要な一部分のデータのみを抽出し、表示クライアント70に送信することで、実行ログに対する処理の高速化を図ることができる。例えば、実行ログとして、GangliaのRRDを用いる場合は、時刻とノード識別子とCPU使用率のみを抽出する処理を行うとよい。
【0030】
表示クライアント70は、通信ログ収集サーバ30から取得した通信ログ、及び実行ログ収集サーバ60から取得した実行ログに基づいて、分散処理システムAの通信状態及び処理実行状態を示す表示画像を生成し、生成した表示画像をディスプレイ80に表示するものである。より詳細には、表示クライアント70は、ログ同期部(ログ同期手段)71、及びログ表示処理部(ログ表示処理手段)72を含んで構成される。
【0031】
ログ同期部71は、通信ログに含まれる時刻情報、及び実行ログに含まれる時刻情報に基づいて、これらのログを時系列順に並べる。そして、ログ同期部71は、通信ログと実行ログとを用いて同時刻のデータを統合することにより同期済みログを生成する。ここでは、秒単位で同時刻か否かを判断するものとする。なお、秒単位に限らず、分単位、或いはミリ秒単位等で同時刻であるか否かの判断を行ってもよい。ここで、図4に、同期済みログの具体例を示す。なお、図4は、時刻が2011年1月13日0時0分0秒の同期済みログを示す。図4に示す例では、ログ同期部71は、通信ログ収集サーバ30から取得した通信ログ(1)と、実行ログ収集サーバ60から取得した実行ログ(1)とを統合する。このようにして、ログ同期部71は、時刻毎に同期済みログを作成する。
【0032】
なお、通信ログや実行ログが、ログ同期部71において処理しきれないデータサイズの場合は、例えば、ファイル分割を行って順次ログ同期部71に読み込ませたり、通信ログや実行ログを数秒単位で間引いて、ログ同期部71で読み込ませたりすることができる。また、ログ同期部71が通信ログと実行ログとを読み込むときに、所定の時間区間を対象とする場合、時系列順に並べられた通信ログや実行ログを過去のログから順に読み込む。そして、読み込んだログに含まれる時刻が所定の時間区間内か否かを判定し、所定の時間区間内から所定の時間外となった場合に、そこで読み込みを停止し、次の読み込みに備える。そして、読み込まれた所定の時間区間内の通信ログ及び実行ログに基づいて、ログ表示処理部72(詳しくは後述する)が、所定の時間区間内における分散処理システムAの通信状態及び処理実行状態の変動を示す表示画像をディスプレイ80に表示させる。そして、所定の時間区間内における分散処理システムAの状態の変動を示す表示が終了するときに、再度、ログ同期部71が、次の所定の時間区間についての通信ログ及び実行ログの読み込みを開始することもできる。
【0033】
ログ表示処理部72は、ログ同期部71で生成された同期済みログに基づいて表示画像を生成し、当該表示画像をディスプレイ80に表示する。
【0034】
ここで、ログ表示処理部72が作成する、分散処理システムAの通信状態及び処理実行状態を示す表示画像の詳細について説明する。まず、ログ表示処理部が作成する表示画像の概念について説明する。図5は、ログ表示処理部が作成する表示画像の概念を示す図である。なお、図5では、分散処理システムA(クラスタ)がラックRAとラックRBとより構成され、ラックRAがノードYA1〜YA4より構成され、ラックRBがノードYB1〜YB4より構成されている様子を示す。図5に示すように、ログ表示処理部72は、ラックRA,RB毎に、ノードYA1〜YA4及びノードYB1〜YB4をそれぞれ一まとめとしてノード集合体YA,YBを形成する。また、これらの各ノードYA1〜YA4,YB1〜YB4を、点Xを中心とする球面状に配置する。なお、ログ表示処理部72が生成する表示画像は、立体的な画像となっている。そして、ノード集合体YAとノード集合体YBとを、点Xを通る線分Zbで接続する。また、線分Zbのうち、ノード集合体YA側の端部と、各ノードYA1〜YA4とを線分Zaで接続する。同様に、線分Zbのうち、ノード集合体YB側の端部と、各ノードYB1〜YB4とを線分Zaで接続する。このように、各ノードYA1〜YA4,YB1〜YB4を、線分Za,Zbによって構成される線分Zによって接続された画像を生成する。線分Zaは、ラック内のノードを接続する通信線を示し、線分Zbは、ラック間を接続する通信線を示す。
【0035】
また、ログ表示処理部72は、同期済みログに含まれるノード識別子とCPU使用率とに基づいて、表示画像のノードYA1〜YA4,YB1〜YB4の視覚効果を変化させる。例えば、CPU使用率が高いノードに赤い色を付け、CPU使用率が低いノードに白い色を付ける。ノードの色は、CPU使用率に基づいて赤から白へ段階的に変化する。この色によって、各ノードの処理実行状態が表される。また、表示画像に、線分Z上を流れるデータ(データ量表示)DA,DBを追加する。これらのデータDA,DBは球によって表される。このデータDA,DBは、各ノードYA1〜YA4,YB1〜YB4間で送受信されるデータ量を表すものであり、同期済みログに含まれるデータの送信元IPアドレスと、送信先IPアドレスと、データサイズとに基づいて追加する。なお、データサイズに基づいて、ノード間を流れるデータDA,DBの球の大きさを大きくする。即ち、図5に示す例では、データDAよりも、データDBの方がデータ量が大きい。また、データDAは、ラックRA内で転送されている状態のデータを表し、データDBは、ラックRAからラックRBへ転送中のデータを表す。このデータDA,DBの球の流れと大きさとによって、分散処理システムAの通信状態が表される。また、線分Za上を流れるデータDAの球を紫色で表示し、線分Zb上を流れデータDBの球を白色で表示する。これにより、ラック内を流れるデータと、ラック間を流れるデータとを球の色によって視覚的に見分けることができる。そして、ログ表示処理部72は、図5に示すような表示画像を、各時刻毎(秒単位)に作成する。
【0036】
次に、ログ表示処理部72が作成する、ある時刻における分散処理システムAの通信状態及び処理実行状態を示す表示画像の具体例について説明する。図6は、ログ表示処理部が作成する表示画像の具体例を示す図である。図6に示す例では、分散処理システムAが、1000台規模のノードYaによって構成されている場合を示し、ラック毎にまとめられた各ノード集合体Yは、それぞれ約100台のノードYaによって構成されているものとする。ログ表示処理部72は、各ノードYaを、点Xを中心とする球面状に配置し、立体的な画像を生成する。このようにして生成された表示画像によって、1000台規模のノード数を有する分散処理システムAの通信状態及び処理実行状態を表すことができる。
【0037】
ここで、表示クライアント70における通信ログと実行ログのデータの取り扱いとして、オフラインで表示画像を生成して表示する場合には、表示クライアント70に備えられた図示しないメモリ上に全データをロードして表示画像の生成を行い、オンラインで表示画像を生成して表示する場合には、表示クライアント70に備えられた図示しないメモリ上に順次データをロードしながら表示を行う。
【0038】
ディスプレイ80は、表示クライアント70によって作成された表示画像を表示するものである。
【0039】
[処理の流れ]
次に、分散処理状態可視化システム1で行われる処理の流れを説明する。図7は、分散処理状態可視化システムで行われる処理の流れを示すシーケンス図である。図7に示すように、通信ログ蓄積部10が、分散処理システムの通信ログを蓄積する(ステップS101)。次に、通信ログ取得サーバ20が、通信ログ蓄積部10に蓄積された通信ログを取得し(ステップS102:通信ログ取得ステップ)、取得した通信ログを通信ログ収集サーバ30へ送信する(ステップS103)。そして、通信ログ収集サーバ30は、通信ログ取得サーバ20から送信された通信ログを収集し(ステップS104:通信ログ収集ステップ)、収集した通信ログを表示クライアント70へ送信する(ステップS105)。
【0040】
次に、実行ログ蓄積部40が、分散処理システムの実行ログを蓄積する(ステップS106)。そして、実行ログ取得サーバ50が、実行ログ蓄積部40に蓄積された実行ログを取得し(ステップS107:実行ログ取得ステップ)、取得した実行ログを実行ログ収集サーバ60送信する(ステップS108)。実行ログ収集サーバ60は、実行ログ取得サーバ50から送信された実行ログを収集し(ステップS109:実行ログ収集ステップ)、収集した実行ログを表示クライアント70へ送信する(ステップS110)。なお、ステップS101〜S105までの処理と、ステップS106〜S110までの処理とは、並列して行う。
【0041】
次に、表示クライアント70は、通信ログ収集サーバ30から送信された通信ログ、及び実行ログ収集サーバ60から送信された実行ログを取得する(ステップS111)。そして、表示クライアント70は、取得した通信ログ及び実行ログを同期させ、同期済みログを生成する(ステップS112:ログ同期ステップ)。
【0042】
次に、表示クライアント70は、同期済みログに基づいて、分散処理システムAの通信状態及び処理実行状態を示す表示画像を生成し(ステップS113:ログ表示処理ステップ)、生成した表示画像をディスプレイ80に表示する(ステップS114:ログ表示処理ステップ)。これにより、分散処理システムAの通信状態及び処理実行状態をユーザに視覚的に提示することができる。
【0043】
[分散処理状態可視化システムの用途の具体例]
次に、分散処理システムの通信状態及び処理実行状態を表示可能な分散処理状態可視化システム1の用途の具体例について説明する。ここでは、分散処理状態可視化システム1を、WordCountプログラムを実行する分散処理システムに適用し、分散処理状態可視化システム1による表示結果に基づいて分散処理システムのチューニングを行う場合について説明する。なお、WordCountプログラムとは、ファイル内に存在するワードの数をカウントするアプリケーションである。また、ここでは、MapReduceプログラムを用いてファイル内に存在するワードの数をカウントするプログラムをチューニングする例を示す。
【0044】
このような、ワードの数をカウントするアプリケーションを、通常のMapReduceプログラムで作成した場合は3つの状態変化を経てプログラムが実行される。即ち、3つの状態とは、Mapフェーズ(データの読み出しとローカルなカウント)、Reduceフェーズ1(マージ等による前処理)、Reduceフェーズ2(結果の書き込み)である。Mapフェーズのときに、分散処理状態可視化システム1を用いて通信状態及び処理実行状態を表示すると、図8(a)に示す状態となる。図8(a)では、Mapフェーズのときに、データが送受信されている様子が示されている。また、Reduceフェーズ1のときに、分散処理状態可視化システム1を用いて通信状態及び処理実行状態を表示すると、図8(b)に示す状態となる。図8(b)では、Mapフェーズの通信が終了し、しばらくの間無通信状態が続いている様子が示されている。なお、この無通信状態は、Reducer数が少ない、又はCombinerが無い場合に長くなる。また、Reduceフェーズ2のときに、分散処理状態可視化システム1を用いて通信状態及び処理実行状態を表示すると、図8(c)に示す状態となる。図8(c)では、Reducerでデータが送受信されている様子を示している。なお、この処理にかかる時間は、結果の書き込みやReducer数が多いと長くなる。なお、図8(a)、図8(b)、図8(c)に示す例では、120台のノードが4つの集合体に集まった例を示す。また、通信ログとしては、HadoopのデータノードがHDFS(Hadoop Distributed File System)での読み書きに関するデータを用い、実行ログとしては、GangliaのRRDのCPU使用率に関するデータを用いた。通信状態については、HDFSからの読み込みとHDFSへの書き込みを、ノード間を接続する線分上の球で表す。即ち、ログ表示処理部72によって生成される表示画像を確認することによって、WordCountプログラムの実行時の状態を、図8(a),図8(b),図8(c)に示す3つの状態に分類することができる。
【0045】
また、WordCountプログラムにおいて、通常のMapReduceフレームワークを用いてプログラムを作成した場合、Combinerを用いない場合とCombinerを用いた場合を比較した際には、Reduceフェーズ1の状態が長くなる。即ち、分散処理状態可視化システム1によって生成された表示画像を確認することにより、この状態が比較的長いことが明らかになるので、Combinerを利用することでプログラムの実行速度を向上できる可能性があることが分かる。Combinerの有無による、プログラムの実行速度の変化の具体例について、詳しくは、図9〜図11を用いて後述する。
【0046】
また、Reducerの数が1の場合と、Reducerの数が100の場合とを比較した際には、Reduceフェーズ1の状態が長くなる。即ち、分散処理状態可視化システム1によって生成された表示画像を確認することにより、この状態が長いことが明らかになり、またCPU使用率から特定のマシンに負荷が集中にしていることも明らかになるので、Reducer数を増加させることでプログラムの実行速度を向上できる可能性があることが分かる。Reducer数による、プログラムの実行速度の変化の具体例について、詳しくは、図9、図11及び図12を用いて後述する。
【0047】
次に、WordCountプログラムに対するチューニング例を示す。このWordCountプログラムは、データの中に同一単語がいくつあるかをカウントアップするプログラムである。このアプリケーションを、通常のMapとReduceからなるMapReduceプログラムで作成する。まず、Mapper数1000個、Reducer数1個、Combiner無しの場合におけるWordCount1のプログラムを作成した。そして、WordCount1のプログラムを実行させたときの、Mapフェーズでデータが送受信されている状態(以下「状態(a)」と呼ぶ)の時間、Mapフェーズの通信終了後の無通信状態(以下「状態(b)」と呼ぶ)の時間、及びReducerでデータが送受信されている状態(以下「状態(b)」と呼ぶ)の時間と、各状態(a),(b),(c)の合計時間とを計測する。この計測結果を、図9に示す。図9に示すように、WordCount1のプログラムを実行させると、状態(a)は27秒、状態(b)は167秒、状態(c)は2秒、状態(a)〜(c)の合計時間は3分16秒となった。また、図10に、分散処理状態可視化システム1によって生成された、WordCount1のプログラムを実行させたときの状態(b)における表示画像を示す。
【0048】
WordCount1のプログラムでは、Reducer数が少なく、Combinerが無いため、図10に示すように、一部のノードに負荷が集中している(一部のノードの色が濃い)ことが分かる。また、図9に示すように、状態(b)の時間は167秒であり、合計時間も3分以上かかっている。この原因としては、分散処理状態可視化システム1の表示結果より、CPU使用率もさほど高くない(ノードの色が白い)ことから、Reducerへの入力データサイズが大きいことで処理が滞っていることが理由として考えられる。
【0049】
そこで、WordCount1のプログラムを改良し、WordCount2のプログラムを作成した。WordCount2のプログラムは、Mapper数1000個、Reducer数1個、Combiner有りの場合である。そして、WordCount2のプログラムを実行させたときの状態(a)〜(c)の時間と、各状態(a)〜(c)の合計時間とを計測した。この計測結果を、図9に示す。図9に示すように、WordCount2のプログラムを実行させると、状態(a)は28秒、状態(b)は75秒、状態(c)は6秒、状態(a)〜(c)の合計時間は1分49秒となった。また、図11に、分散処理状態可視化システム1によって生成された、WordCount2のプログラムを実行させたときの状態(b)における表示画像を示す。
【0050】
WordCount2のプログラムでは、図11に示すように、WordCount1のプログラムに比べて負荷が複数のノードに分散されている(ノード全体にわたって色が付いている)ことが確認できる。また、図9に示すように、状態(b)の時間は75秒、合計時間も2分以内に短縮することができた。
【0051】
さらに、WordCount2のプログラムを改良し、WordCount3のプログラムを作成した。WordCount3のプログラムは、Mapper数1000個、Reducer数100個、Combiner有りの場合である。そして、WordCount3のプログラムを実行させたときの状態(a)〜(c)の時間と、各状態(a)〜(c)の合計時間とを計測した。この計測結果を、図9に示す。図9に示すように、WordCount3のプログラムを実行させると、状態(a)は29秒、状態(b)は14秒、状態(c)は8秒、状態(a)〜(c)の合計時間は51秒となった。また、図12に、分散処理状態可視化システム1によって生成された、WordCount3のプログラムを実行させたときの状態(b)における表示画像を示す。
【0052】
WordCount3のプログラムでは、図12に示すように、WordCount2のプログラムに比べて、より多くのノードに負荷が分散されている(図11よりも、更にノード全体にわたって色が付いている)ことが確認できる。また、図9に示すように、状態(b)の時間は14秒、合計時間も1分以内に短縮することができた。
【0053】
このように分散処理状態可視化システム1を用いることで、分散処理状態可視化システム1で生成された表示画像のうち、ノード間でやり取りされる球(例えば、図6におけるデータDA,DB)を見ることにより、分散処理システムAの通信状態を把握することができ、また、分散処理システムAの状態を、状態(a),(b),(c)に分類することができる。また、分散処理状態可視化システム1で生成された表示画像のうち、ノードの色を見ることにより、クラスタ内でCPUの使用率が高いノードがいくつ存在しているかを確認することができる。従って、分散処理状態可視化システム1で生成される表示画像を確認することにより、分散処理システムAの通信状態やノードのCPU使用率を確認することができ、この確認結果に基づいてプログラムのチューニングを行うことができる。
【0054】
本実施形態は以上のように構成され、通信ログ収集サーバ30によって、分散処理システムAのノードの通信状態を示す通信ログが収集され、また、実行ログ収集サーバ60によって、分散処理システムAのノードの処理実行状態を示す実行ログが収集される。そして、表示クライアント70のログ同期部71によって、通信ログと実行ログとを同期させた同期済みログが生成され、ログ表示処理部72によって、同期済みログに基づいて表示画像が生成される。ログ表示処理部72は、生成した表示画像をディスプレイ80に表示する。このように、通信ログと実行ログとを同期させ、同期済みログに基づいて表示画像を生成することにより、分散処理システムにおける通信状態と各ノードの処理実行状態とを同時に表示可能となり、分散処理システムの状態をより好適に表示することができる。
【0055】
また、通信ログに含まれる時刻情報、及び実行ログに含まれる時刻情報に基づいて、通信ログと実行ログとを用いて同時刻のデータを統合することによって同期済みログを生成する。これにより、同時刻の通信ログと実行ログとが統合され、同時刻の通信ログと実行ログとを表示することが可能となる。
【0056】
また、ログ表示処理部72は、表示画像として、球面状にノードを配置し、配置したノード間を線分で接続し、接続した線分上に送受信されるデータ量を表す球を付加した画像を生成する。また、処理実行状態に基づいてノードの色を変化させ、通信状態のデータ量に基づいて線分上を流れる球の大きさを変化させる。これにより、分散処理システムの通信状態及び処理実行状態を、簡易な方法で視覚的に分り易く表示することができる。
【0057】
以上、本発明を実施形態に基づき具体的に説明したが、本発明は上記実施形態に限定されるものではない。例えばログ表示処理部72は、マウスのドラッグやキーボードのキー入力等のユーザ操作に基づいて、表示画像の視点を変更することができる。これにより、注目すべき通信状態や処理実行状態の箇所を変更することができる。ここで、図13(a)〜図13(c)に、視点を変更した表示画像例を示す。図13(a)〜図13(c)に示すように、表示画像の視点を変更することにより、影に隠れていたノードの状態等を確認することができる。
【0058】
また、ログ表示処理部72に、表示画像の時間的変化をある時刻で停止したり、或いは再開したりする機能を付与することもできる。これは、例えば、マウスのクリックやキーボードのキー入力等のユーザ操作に基づいて、ログ表示処理部72が、表示画像を時間的に変化させる際の時刻のカウントを停止、或いは開始することによって実現できる。これにより、所定の時刻における通信状態や処理実行状態を詳細に分析することができる。
【0059】
また、ログ表示処理部72に、表示画像の時間的変化の早送りや巻き戻しを行う機能を付与することもできる。早送りについては、例えば、マウスのクリックやキーボードのキー入力等のユーザ操作に基づいて、ログ表示処理部72が、表示画像を時間的に変化させる際の時間のカウントを飛ばしながら再生することで実現する。これにより、さらに広い時間区間での通信状態や処理実行状態を把握することができるようになる。巻き戻しについては、例えば、マウスのクリックやキーボードのキー入力等のユーザ操作に基づいて、ログ表示処理部72が、表示画像を時間的に変化させる際の時間のカウントを減らしながら(時刻がさかのぼるように時間をカウントしながら)再生することで実現する。これにより、通信の経路を逆にたどったりすることができる。
【0060】
また、ログ表示処理部72に、通信状態のみ、或いは処理実行状態のみを選択的に表示する機能を付与することもできる。これは、例えば、マウスのクリックやキーボードのキー入力等のユーザ操作に基づいて、ログ表示処理部72が、表示する内容の選択を行って表示画像を生成することで実現する。例えば、通信状態のみを表示する場合は、ログ表示処理部72が、線分がよく見える位置にノードを配置した表示画像を生成することで、閲覧する者にとって通信状態が確認しやすくなる。また、処理実行状態のみを表示する場合には、ログ表示処理部72が、球面状に配置するノードを球の片側に寄せて配置した表示画像を生成することで、閲覧する者にとって処理実行状態が確認しやすくなる。これらにより、それぞれの状態に特化した分析を行うことに利用することもできる。
【0061】
また、ログ表示処理部72によって作成される表示画像(例えば、図6等)において、IPアドレスに基づいてラック内のノードYaの並び順を設定したり、線分Zaと線分Zbとの長さによって、実際のラックをまとめるスイッチまでの距離を表現したりすることができる。また、ノードYaの大きさによって、各ノードの最大処理量(CPU使用率の最大値)を表現することもできる。
【0062】
また、実施形態では、通信ログに含まれる時刻と、実行ログに含まれる時刻とが同じ時刻であるデータを統合して、表示画像を生成するものとしたが、このデータの統合の手法として、例えば、時刻をカウントアップするタイマーを用意し、通信ログを処理するスレッドと実行ログを処理するスレッドとを並列に実行し、タイマーの時刻、通信ログの時刻及び実行ログの時刻が同じになったときに、これらのログを用いて表示画像を生成する処理を行うこともできる。
【0063】
なお、本実施形態においては、装置として表示クライアント70を例示したが、これに限るものではなく、表示クライアント70における各機能を実行するためのプログラムモジュールとして構成してもよい。即ち、図14に示すように、分散処理状態可視化プログラムP100は、ログ同期部71に相当するログ同期モジュールP101(ログ同期手段)、及びログ表示処理部72に相当するログ表示処理モジュールP102(ログ表示処理手段)を備える。この分散処理状態可視化プログラムP100を、サーバ装置等のコンピュータシステムに読み込ませることにより、上述の表示クライアント70と同等の機能を実現することができる。なお、このプログラムは、CD−ROM、DVD等の記録媒体に記憶させておき、コンピュータシステムに読み取り可能に構成してもよい。
【符号の説明】
【0064】
1…分散処理状態可視化システム、10,11,12,13…通信ログ蓄積部、20,21,22,23…通信ログ取得サーバ(通信ログ取得手段)、30…通信ログ収集サーバ(通信ログ収集手段)、40,41,42,43…実行ログ蓄積部、50,51,52,53…実行ログ取得サーバ(実行ログ取得手段)、60…実行ログ収集サーバ(実行ログ収集手段)、70…表示クライアント、71…ログ同期部(ログ同期手段)、72…ログ表示処理部(ログ表示処理手段)、80…ディスプレイ(可視化デバイス)。

【特許請求の範囲】
【請求項1】
複数のノードによって構成された分散処理システムの状態を表示する分散処理状態可視化システムであって、
分散処理システムのノードの通信状態を示す通信ログを取得する通信ログ取得手段と、
前記通信ログ取得手段で取得された通信ログを収集する通信ログ収集手段と、
分散処理システムのノードの処理実行状態を示す実行ログを取得する実行ログ取得手段と、
前記実行ログ取得手段で取得された実行ログを収集する実行ログ収集手段と、
前記通信ログ収集手段で収集された通信ログ、及び前記実行ログ収集手段で収集された実行ログを同期させて、同期済みログを生成するログ同期手段と、
前記ログ同期手段で生成された同期済みログに基づいて表示画像を生成し、当該表示画像を可視化デバイスに表示するログ表示処理手段と、
を備えることを特徴とする分散処理状態可視化システム。
【請求項2】
前記ログ同期手段は、前記通信ログに含まれる時刻情報、及び前記実行ログに含まれる時刻情報に基づいて、前記通信ログと前記実行ログとを用いて同時刻のデータを統合することにより前記同期済みログを生成する、ことを特徴とする請求項1に記載の分散処理状態可視化システム。
【請求項3】
前記ログ表示処理手段は、前記表示画像として、球面状にノードを配置し、配置したノード間を線分で接続し、前記線分上に送受信されるデータ量を表すデータ量表示を付加した画像を生成するものであり、
前記表示画像は、前記球面状に配置したノードの視覚効果の変化によって前記実行ログが示す処理実行状態が表され、前記データ量表示の視覚効果の変化によって前記通信ログが示す通信状態が表される、ことを特徴とする請求項1又は2に記載の分散処理状態可視化システム。
【請求項4】
前記表示画像は、前記球面状に配置したノードの色によって処理実行状態が表され、前記データ量表示が線分上を流れるときの当該データ量表示の大きさによってデータ量が表される、ことを特徴とする請求項3に記載の分散処理状態可視化システム。
【請求項5】
前記ログ表示処理手段は、前記表示画像における、表示の視点の変更、時間経過と共に変化する処理実行状態及び通信状態の表示の開始或いは停止、時間経過と共に変化する処理実行状態及び通信状態の表示の早送り或いは巻き戻し、処理実行状態の表示及び通信状態の表示の何れか一方のみの表示、のうち少なくとも何れかを行うことを特徴とする請求項3又は4に記載の分散処理状態可視化システム。
【請求項6】
分散処理システムを構成するノードの処理状態を表示する分散処理状態可視化装置であって、
分散処理システムのノードの通信状態を示す通信ログ、及び分散処理システムのノードの処理実行状態を示す実行ログを同期させて、同期済みログを生成するログ同期手段と、
前記ログ同期手段で生成された同期済みログに基づいて表示画像を生成し、当該表示画像を可視化デバイスに表示するログ表示処理手段と、
を備えることを特徴とする分散処理状態可視化装置。
【請求項7】
複数のノードによって構成された分散処理システムの状態を表示する分散処理状態可視化プログラムであって、
コンピュータを、
分散処理システムのノードの通信状態を示す通信ログ、及び分散処理システムのノードの処理実行状態を示す実行ログを同期させて、同期済みログを生成するログ同期手段と、
前記ログ同期手段で生成された同期済みログに基づいて表示画像を生成し、当該表示画像を可視化デバイスに表示するログ表示処理手段、
として動作させることを特徴とする分散処理状態可視化プログラム。
【請求項8】
分散処理システムを構成するノードの処理状態を表示する分散処理状態可視化システムで実行される分散処理状態可視化方法であって、
分散処理システムのノードの通信状態を示す通信ログを取得する通信ログ取得ステップと、
前記通信ログ取得ステップで取得された通信ログを収集する通信ログ収集ステップと、
分散処理システムのノードの処理実行状態を示す実行ログを取得する実行ログ取得ステップと、
前記実行ログ取得ステップで取得された実行ログを収集する実行ログ収集ステップと、
前記通信ログ収集ステップで収集された通信ログ、及び前記実行ログ収集ステップで収集された実行ログを同期させて、同期済みログを生成するログ同期ステップと、
前記ログ同期ステップで生成された同期済みログに基づいて表示画像を生成し、当該表示画像を可視化デバイスに表示するログ表示処理ステップと、
を含むことを特徴とする分散処理状態可視化方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図7】
image rotate

【図9】
image rotate

【図14】
image rotate

【図6】
image rotate

【図8】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2012−173779(P2012−173779A)
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願番号】特願2011−32128(P2011−32128)
【出願日】平成23年2月17日(2011.2.17)
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
【Fターム(参考)】