Comments
Description
Transcript
グリッド技術を用いた GIS 処理の分散化と制御
大阪経大論集・第59巻第5号・2009年1月 23 グリッド技術を用いた GIS 処理の分散化と制御 草 薙 信 照 1 グリッドコンピューティングと空間情報処理 1.1 グリッド技術と汎用アプリケーション グリッドコンピューティングとは,ネットワーク上に分散した多くのコンピュータ資源 を仮想化して共有し,安全かつ容易に利用できるようにする技術の総称である。その概念 はさまざまであるが,次の3つに大別することができる。 ・計算グリッド :高速計算サービスのためのグリッド ・データグリッド :超大規模データ処理のためのグリッド ・ビジネスグリッド:高信頼ウェブサービスのためのグリッド 一般に,グリッドコンピューティングの導入によって効果を得るためには,グリッド環 境下での処理に最適化された専用アプリケーションを新規に開発する必要がある。そのた めの労力とコストは極めて大きく,グリッドコンピューティングの適用範囲を制限する要 因の一つになっていると考えられる。 そこで本研究では「計算グリッド」を対象として,グリッド環境のために最適化された 専用の応用プログラムを開発するのではなく,既存の汎用アプリケーションをグリッド環 境下で運用することで,実業務分野における有効性を明らかにしようと考えた。ただし, 実業務での利用の場合,総合的な処理効率の向上だけでなく,自動的かつ安定的な実行と, 障害発生時の適切な対処等の制御が重要な課題となる。そこで,第1段階として汎用アプ リケーションをグリッドに適用する際に必要となる条件を整理したうえで,(異常処理発 生時も含めて)自動的かつ安定的に制御できるような工夫を見出すことを目標とした。次 に第2段階として,実践的かつ大規模な処理に対しても,計算グリッドが有効に機能する ことを検証することとした。 1.2 計算グリッドと空間情報処理 計算グリッド環境下における汎用アプリケーションの運用例として,ここでは GIS ア プリケーションによる空間情報処理をとりあげることとした。 ArcGIS (ESRI 社製) は代表的な汎用 GIS アプリケーションであり,行政や企業の実業 務でも広く利用されている。通常,ArcGIS の処理は1台の PC 上でインタラクティブに 行われるが,多くの空間情報を扱ったり複雑な解析を行う場合には,バッチ型で実行され ることもある。そのような処理には数十分から数時間を要することもあり,これをうまく 24 大阪経大論集 第59巻第5号 分割して並行処理し,スループットを向上させることができれば,実用的な意義は大きい。 ところで,グリッド環境下で利用できる汎用アプリケーションの条件としては, Windows のコマンドラインから直接利用できることが求められる。例えば Microsoft Excel の場合,データファイル内に記述された VBA プログラムは,Windows Scripting Host (VB Script で記述)経由でコマンドラインから直接実行することができるので,この機能を利 用した「計算グリッド」の適用例も数多く存在する。そして,ArcGIS も VBA 機能を搭 載していることから,グリッド環境下で Excel と同様の使い方ができるものと期待され た。 実際には,ArcGIS のファイル内に記述された VBA プログラムは WSH 経由で実行でき ないことが判明したのだが,ArcGIS にはもう1つ,Python スクリプトを経由してバッチ 方式で GIS 処理を行う方法が用意されている。具体的には,PythonWin (Ver. 2. x) をイ ンストールした環境があれば,ArcGIS (Ver. 9. x) の多くの機能は Python スクリプト経由 で,Windows のコマンドラインから直接利用できる。これが ArcGIS を選択したもう1つ の理由である。 1.3 実験環境 実 験 環 境 を 図 1 に 示 し た 。 グ リ ッ ド 制 御 用 の ミ ド ル ウ ェ ア と し て Systemwalker CyberGRIP (Ver. 13.0,富士通社製,以下 CyberGRIP) を採用しており,その実行環境は, ジョブ管理機能とファイル領域を提供するマスタサーバ(=マネージャ),ジョブの投入 などマスタサーバの操作を行う OJC クライアント,そして実際にジョブを実行する計算 サーバ(=エージェント)群から構成される。 マスタサーバには Intel Xeon プロセッサ (3.2 GHz, 2.0 GB RAM) に Red Hat Enterprise Linux ES (v4 for x86) を搭載した PC,OJC クライアントと計算サーバには Intel Pentium D プロセッサ (2.8 GHz, 1.0 GB RAM) に Microsoft Windows XP Professional (SP2) を搭載 図1 計算グリッドの実験環境 㪞㪠㪪䊂䊷䉺䊔䊷䉴䉰䊷䊋 䉪䊤䉟䉝䊮䊃 ታ㛎䈱ⷰኤ ታ㛎↪㪞㪠㪪䊂䊷䉺 䊙䉴䉺䉰䊷䊋䋨䊙䊈䊷䉳䊞䋩 䊙䉴䉺䉰䊷䊋 䈱ᠲ 㪮㫀㫅㩷㪉㪇㪇㪊㩷㪪㪼㫉㫍㪼㫉 㪯㪼㫆㫅㩷㩿㪊㪅㪉㪞㪟㫑㪀 ⥄ᓞဳ䉳䊢䊑▤ℂ㩿㪦㪡㪚㪀 㪞㪩㪠㪛䊙䊈䊷䉳䊞 䊥䉸䊷䉴▤ℂ 㪣㫀㫅㫌㫏㩷㪪㪼㫉㫍㪼㫉 ಽᢔ䉨䊠䊷▤ℂ 㪯㪼㫆㫅㩷㩿㪊㪅㪉㪞㪟㫑㪀 ಽᢔ䉳䊢䊑ታⴕ▤ℂ ⸘▚䉰䊷䊋▤ℂ 㪈㪇㪇㪤㪹㫇㫊㩷㪪㫎㫀㫋㪺㪿㫀㫅㪾㩷㪟㫌㪹 ജ䊂䊷䉺䈱 ᦠ䈐ㄟ䉂 ജ䊂䊷䉺䈱 ⺒䉂ㄟ䉂 䉳䊢䊑⚿ᨐ 䈱ㅢ⍮ 䉳䊢䊑ᛩ ⸘▚䉰䊷䊋䋨䉣䊷䉳䉢䊮䊃䋩 䉳䊢䊑ታⴕ▤ℂ 㪞㪩㪠㪛䉣䊷䉳䉢䊮䊃 䉳䊢䊑 㪮㫀㫅㪻㫆㫎㫊㩷㪯㪧 㪧㪼㫅㫋㫀㫌㫄㪛㩿㪉㪅㪏㪞㪟㫑㪀 ⸘▚䉰䊷䊋▤ℂ グリッド技術を用いた GIS 処理の分散化と制御 25 した20台の PC を使用した。そして計算サーバにおける GIS アプリケーションとしては, ArcGIS 9.1 と Python 2.3 を用いた。このほかに,GIS データの入出力に利用する GIS サ ーバ (Windows 2003 Server) を用意して,それぞれの装置を 100 Mbps の LAN に接続して いる。 2 2.1 グリッドコンピューティングの制御方式に関する実験 グリッドの制御方式 GIS 処理を実行するためのグリッド環境の制御には,CyberGRIP に標準搭載されてい るオーガニックジョブコントローラ(以下,OJC)を用いる。OJC とは,大量のジョブの 依存関係や待ち合わせを含めて定義する専用スクリプト環境のことで,スクリプトを解釈 してジョブ投入や実行状況の監視を行う機能を有する。これにより,ジョブ管理が容易に 行えるだけでなく,先行ジョブの結果に基づく後続ジョブの動的生成や,部分的なジョブ の再実行など,インテリジェントなジョブ実行制御が可能になっている。 汎用アプリケーションである ArcGIS については,OJC スクリプトから直接制御するこ とも可能であるが,アプリケーション固有の設定やインタフェースをラッピングして OJC スクリプトから呼び出す方式を採用することによって,グリッド化が容易になることに注 目した。そして,ArcGIS が提供する機能の多くは Python スクリプトのもとで実行可能 であることから,実験中におけるすべてのジョブは Python スクリプトで記述することと した。そこで最初の予備実験として,以降で行う ArcGIS の処理を Python スクリプトで 記述し,それらのジョブが Windows 環境において問題なく動作することを確認した。 OJC スクリプトの基本構造を図2に示す。2つめの予備実験として,上で動作確認済 みのジョブをこの OJC スクリプト内に埋め込んで,CyberGRIP 環境下でも動作すること を確認しようとした。1つずつのジョブであれば,CyberGRIP 環境下でも問題なく動作 するにもかかわらず,複数のジョブを連続投入したところ,処理が完了しないまま異常終 了するジョブのあることが判明した。このエラーには再現性がなく,ArcGIS に起因する ものであると考えられているが,原因はいまのところ不明のままである。そこで,図3の OJC スクリプトに示すように,未完のジョブがあれば10回まで再投入(リトライ)する ように制御アルゴリズムを変更したところ,すべてのジョブを(何度かのリトライを経て) 問題なく完了できることが確認できた。 図4は,計算サーバに投入された複数のジョブが,エラーリカバリも含めて順次実行さ れていく様子を,OJC ビューア(CyberGRIP に標準搭載)の画面イメージとして表示し たものである。また,13個のジョブ(Python スクリプト)を10多重で処理するためにの OJC スクリプトを,付録の「リスト4」に掲載した。 2.2 GIS 処理の概要 2つの予備実験を済ませた後,汎用アプリケーションである ArcGIS が,グリッド環境 下において自動的にエラーリカバリをしながら,安定的に動作することを検証するための 26 大阪経大論集 第59巻第5号 図2 OJC スクリプトの基本構造 図3 ジョブリカバリ制御を組み込んだ OJC スクリプト グリッド技術を用いた GIS 処理の分散化と制御 27 図4 グリッドジョブの動作;OJC ビューアによる状態表示 ታⴕᓙ䈤 േ㽲 䉳䊢䊑ᛩ䌾䉳䊢䊑ታⴕ ⸘▚䉰䊷䊋䈮ಽᢔᛩ 㫋㫆㫇㩷䊑䊨䉾䉪 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪈 㪼㫏㪺㪼㪔㪈 ䷷ 並 丕 䶺 ⁁ ᘒ ታⴕਛ ታⴕᷣ䉂䋻ᱜᏱ⚳ੌ䉳䊢䊑 ታⴕᷣ䉂䋻䉣䊤䊷䉳䊢䊑 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪉 㪼㫏㪺㪼㪔㪈 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪊 㪼㫏㪺㪼㪔㪈 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪋 㪼㫏㪺㪼㪔㪈 丵 丵 丵 丵 丵 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪈㪊 㪼㫏㪺㪼㪔㪈 േ㽳 䉳䊢䊑ᱜᏱ⚳ੌ 㫆㫉㩷䊥䉦䊋䊥ታⴕ 䉳䊢䊑䈱ታⴕ⚿ᨐ䈮 ᔕ䈛䈩↢ᚑ䈘䉏䉎 㫋㫆㫇㩷䊑䊨䉾䉪 䉣䊤䊷䉳䊢䊑 㫎㪿㪼㫅㩷䊑䊨䉾䉪 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪈 㪼㫏㪺㪼㪔㪈 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪈 㫊㫋㪸㫋㫌㫊㪔㪻㫆㫅㪼 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪉 㪼㫏㪺㪼㪔㪈 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪉 㫊㫋㪸㫋㫌㫊㪔㪻㫆㫅㪼 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪊 㪼㫏㪺㪼㪔㪈 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪊 㪼㫏㪺㪼㪔㪉 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪋 㪼㫏㪺㪼㪔㪈 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪋 㫊㫋㪸㫋㫌㫊㪔㪻㫆㫅㪼 丵 丵 丵 丵 丵 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪈㪊 㪼㫏㪺㪼㪔㪈 䉳䊢䊑䈱 ౣታⴕ 丵 丵 丵 丵 丵 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪈㪊 㫊㫋㪸㫋㫌㫊㪔㪻㫆㫅㪼 േ㽴 䊥䉦䊋䊥⚳ੌ䌾ో䉳䊢䊑⚳ੌ 㫋㫆㫇㩷䊑䊨䉾䉪 㫎㪿㪼㫅㩷䊑䊨䉾䉪 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪈 㪼㫏㪺㪼㪔㪈 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪈 㫊㫋㪸㫋㫌㫊㪔㪻㫆㫅㪼 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪉 㪼㫏㪺㪼㪔㪈 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪉 㫊㫋㪸㫋㫌㫊㪔㪻㫆㫅㪼 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪊 㪼㫏㪺㪼㪔㪈 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪊 㪼㫏㪺㪼㪔㪉 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪋 㪼㫏㪺㪼㪔㪈 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪋 㫊㫋㪸㫋㫌㫊㪔㪻㫆㫅㪼 丵 丵 丵 丵 丵 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪈㪊 㪼㫏㪺㪼㪔㪈 丵 丵 丵 丵 丵 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪈㪊 㫊㫋㪸㫋㫌㫊㪔㪻㫆㫅㪼 ౣታⴕ䉳䊢䊑 ᚑഞ 㪡㫆㪹㪔㫇㫐㫋㪿㫆㫅㪶㪊 㫊㫋㪸㫋㫌㫊㪔㪻㫆㫅㪼 㪪㫋㪸㫋㫌㫊㪔㪻㫆㫅㪼㩷䈱 䉳䊢䊑ᢙ䈏 㪈㪊㩷䈪䈅䉏䈳 ᚑഞ䊜䉾䉶䊷䉳䉕␜ 28 大阪経大論集 第59巻第5号 実験(以下,実験1)を行った。実験1の概要は以下のとおりである(図5を参照)。 ① 対象地域として大阪府南部の13市町(堺市∼岬町)を選び,数値地図2500(空間デ ータ基盤,大阪 4)から当該市町の道路・鉄道・主要建物に関するフィーチャ (Shape ファイル)を作成する。 各市町に立地する鉄道駅を中心として,半径 1 km の円形バッファエリアを作成す ② る。 ArcGIS の Clip 操作により,①のフィーチャを②のバッファエリアで切り取り,新 ③ たなフィーチャとして出力する。 1つの市町に関する③の操作を1ジョブとして合計13個のジョブを用意した(ジョブを 図5 実験1;制御方式に関する実験の概要 図6 実験1における各ジョブの平均処理時間 ジョブ No. 処理時間 [分 : 秒] 1回目 2回目 3回目 平均値 1 2 3 4 5 堺 高石 泉大津 忠岡 和泉 01 : 20 00 : 43 00 : 44 00 : 38 00 : 41 01 : 21 00 : 45 00 : 46 00 : 40 00 : 41 01 : 21 00 : 44 00 : 47 00 : 39 00 : 41 01 : 21 00 : 44 00 : 46 00 : 39 00 : 41 6 7 8 9 10 岸和田 貝塚 熊取 泉佐野 田尻 00 : 48 00 : 46 00 : 33 00 : 37 00 : 29 00 : 49 00 : 47 00 : 33 00 : 36 00 : 28 00 : 51 00 : 48 00 : 33 00 : 37 00 : 31 00 : 49 00 : 47 00 : 33 00 : 37 00 : 29 00 : 35 00 : 32 00 : 30 00 : 36 00 : 33 00 : 34 00 : 36 00 : 33 00 : 33 00 : 36 00 : 33 00 : 32 11 泉南 12 阪南 13 岬 [分 : 秒] 01 : 30 01 : 00 00 : 30 00 : 00 堺高泉忠和岸貝熊泉田泉阪岬 石大岡泉和塚取佐尻南南 津 田 野 グリッド技術を用いた GIS 処理の分散化と制御 29 記述した Python スクリプトは付録の「リスト1」を参照)。各ジョブを1台の PC で直接 実行したときの処理時間(計測3回の平均値,以下同じ)は図6のとおりで,1ジョブの 最大処理時間は「堺市」の1分21秒,13ジョブの合計処理時間は9分06秒である。次節の 評価では,これを基準値としてグリッドの性能比(基準値÷計測された合計処理時間)を 求めた。 2.3 実験結果とその評価 計算サーバ(=エージェント)の台数すなわちグリッドの多重度を1から13まで変化さ せながら,それぞれの処理時間とリトライ回数を集計した結果(いずれも計測3回の平均 値)を図7∼に示した。 CyberGRIP 環境下で13個のジョブを多重度=1 で処理したところ,合計処理時間は8分 54秒,性能比は1.02となり,1台の PC で直接実行したときの合計処理時間(9分06秒) よりもやや性能が高い。このとき,合計リトライ回数は15.7回であった。多重度を増すに つれて,合計処理時間は短く,合計リトライ回数は少なくなり,多重度=13のケースでは 合計処理時間が1分23秒,性能比が6.6,合計リトライ回数は1.0回となった。なお,すべ てのケースにおいて未完のジョブは無い。 このように,Python スクリプトで記述された複数のジョブは,グリッド環境で問題な 図7 実験1の計測結果 合計処理時間 [分 : 秒] リトライ回数 グリッドの 多重度 1回目 2回目 3回目 平均値 1回目 2回目 3回目 平均値 1 2 4 6 8 13 08 : 54 05 : 05 03 : 21 02 : 06 01 : 54 01 : 22 08 : 44 05 : 12 03 : 33 02 : 29 01 : 43 01 : 24 09 : 05 05 : 20 03 : 08 01 : 58 01 : 41 01 : 24 08 : 54 05 : 12 03 : 21 02 : 11 01 : 46 01 : 23 1.0 1.8 2.7 4.2 5.2 6.6 15 8 4 3 1 0 12 7 12 3 1 3 20 10 5 6 1 0 15.7 8.3 7.0 4.0 1.0 1.0 直接(※) 08 : 56 09 : 09 09 : 14 09 : 06 − 0 0 0 0.0 性能比 ※ グリッドを使わずに,1台の PC で直接実行したものである 図7 多重度と合計処理時間 図7 多重度とリトライ回数 [分 : 秒] 10 : 00 [回] 20.0 08 : 00 15.0 1台の PC で直接実行 06 : 00 10.0 04 : 00 1ジョブの最大値 5.0 02 : 00 0.0 00 : 00 0 5 10 15 0 5 10 15 30 大阪経大論集 第59巻第5号 く分散処理が行われ,エージェント台数と合計処理時間の間には,理論どおりほぼ反比例 に近い関係が見られることが確認された。また,アプリケーション実行時に未知のエラー が発生しても,グリッド側で適切に制御を行うことで,結果的にすべてのジョブを完了さ せられることも確認できた。 3 空間情報の分散処理効率に関する実験 3.1 垂直分散と水平分散 前章の実験1では,汎用的な GIS アプリケーションによる空間情報処理を,グリッド コンピューティングの環境下で効果的に制御できることを確認した。その結果を受けて, ここでは実践的かつ大規模な分散処理手順を対象として,グリッド技術の有効性を検証す るために,2種類の実験を行った。 1つは四国全域をカバーする矩形エリアに対して10個のレイヤを追加し,レイヤごとに GIS 操作を行う垂直分散処理の実験(以下,「実験2」),もう1つは実験2と同じ矩形エ リアを9個のエリアに分割し,分割されたエリアごとに GIS 操作を行う水平分散処理の 実験(以下,「実験3」)である。それぞれの実験では,グリッドの多重度を1からNまで 変化させながら,すべての処理が完了するまでの時間(計測3回の平均値,以下同じ)を 計測し,計算グリッドの効果を検証することとした。 3.2 垂直分散処理の実験結果と評価 実験2における ArcGIS の処理手順は以下のとおりである(図8を参照)。 ① 四国全域をカバーする矩形エリアに対して,10個のレイヤを追加する。各レイヤは, 図8 実験2;垂直分散処理に関する実験の概要 グリッド技術を用いた GIS 処理の分散化と制御 31 人口,事業所,商業,工業等の三次メッシュ統計情報とする(実験ではダミーデータ を用いた)。 ② 四国に立地する4つの空港について,それぞれ半径 30 km の円形バッファエリアを作 成する。 ③ ArcGIS の Clip 操作により,①のフィーチャをレイヤごとに②のバッファエリアで切 り取り,新たなフィーチャとして出力する。 1つのレイヤに対する③の操作を1ジョブとして,合計10個のジョブを用意した(ジョ ブを記述した Python スクリプトは付録の「リスト2」を参照)。各ジョブを1台の PC で 直接実行したときの処理時間は図9のとおりである。1ジョブあたりの処理時間は19.2∼ 19.5秒でほぼ均一であり,10ジョブの合計処理時間は193秒であった。実験2ではこの値 (193秒) を,グリッドの性能比(基準値÷計測した処理時間)を求める際の基準値とした。 次に,CyberGRIP 環境下でグリッドの多重度を1から10まで変化させながら,それぞ れの処理時間を計測した結果を図10に示す。多重度=1のケースでは処理時間は174秒, 性能比は1.1となり,1台の PC による直接実行時よりも性能が10%高い。グリッドの多 図9 実験2における各ジョブの平均処理時間 [sec.] 処理時間 [秒] ジョブ No. 1回目 2回目 3回目 平均値 L01 L02 L03 L04 L05 18.87 18.70 18.74 18.57 18.73 19.69 19.05 19.43 19.56 19.58 19.93 19.74 19.69 19.49 19.58 19.5 19.2 19.3 19.2 19.3 L06 L07 L08 L09 L10 18.63 19.22 19.15 19.28 19.37 19.55 19.55 19.40 19.72 19.38 19.30 19.47 19.66 19.46 19.58 19.2 19.4 19.4 19.5 19.4 25.0 20.0 15.0 10.0 5.0 0.0 L01 L02 L03 L04 L05 L06 L07 L08 L09 L10 図10 実験2の計測結果 合計処理時間 [秒] グリッドの 多重度 1回目 2回目 3回目 平均値 [sec.] 性能比 25.0 20.0 1 2 3 4 5 10 175 89 71 57 39 24 171 89 73 56 41 25 175 89 73 54 42 25 174 89 72 56 41 25 1.1 2.2 2.7 3.4 4.7 7.7 直接(※) 189 195 196 193 − ※ グリッドを使わずに,1台の PC で直接実行したものである 15.0 10.0 5.0 0.0 0 2 4 6 8 10 32 大阪経大論集 第59巻第5号 重度を増すにつれて性能が向上し,多重度=10のケースでは25秒,性能比は7.7まで達し ているものの,理論上の性能比9.9(193÷19.5)よりも22%低くなっている。 3.3 水平分散処理の実験結果と評価 実験3における ArcGIS の処理手順は以下のとおりである(図11を参照)。 ① 四国全域をカバーする矩形エリア内の地形を分析するため,「数値地図50 m メッシ ュ(標高)」(国土地理院刊行)から9個の図幅(一次メッシュ4932,4933,4934, 5032,5033,5034,5132,5133,5134に対応)から DEM (Digital Elevation Model) データを抽出し,図幅ごとに Shape ファイルへの変換を済ませておく。 ② ArcGIS の Project 操作により,①の DEM を図幅ごとに経緯度座標からメートル 単位の平面直角座標(第4系)に投影変換を行い,新たな DEM として出力する。 1つの図幅に対する②の操作を1ジョブとして,合計9個のジョブを用意した(ジョブ を記述した Python スクリプトは付録の「リスト3」を参照)。各ジョブを1台の PC で直 接実行したときの処理時間は図12のとおりである。1ジョブあたりの処理時間は「M05 (5033)」の520秒から「M03 (4934)」の12秒まで不均一であり,9ジョブの合計処理時間 は2,547秒であった。実験3ではこの値(2,547秒)を,グリッドの性能を計測する際の基 準値とした。 次に,CyberGRIP 環境下でグリッドの多重度を1から9まで変化させながら,それぞ れの処理時間を計測した結果を図13に示した。多重度=1のケースでは処理時間は2,493 秒,性能比は1.02となり,1台の PC による直接実行時よりもやや性能が高い。グリッド の多重度を増すにつれて性能が向上し,多重度=9のケースでは677秒,性能比は3.8とな っているものの,理論上の性能比4.9(2,547÷520)よりも22%低い。 図11 実験3;水平分散処理に関する実験の概要 グリッド技術を用いた GIS 処理の分散化と制御 33 図12 実験3における各ジョブの平均処理時間 [sec.] 600 処理時間 [秒] 1回目 2回目 3回目 平均値 M01(4932) M02(4933) M03(4934) 252.03 64.17 12.35 247.62 64.19 11.77 260.67 66.12 12.45 253.4 64.8 12.2 M04(5032) M05(5033) M06(5034) 319.41 519.67 296.15 313.21 519.57 285.70 329.12 521.31 286.55 320.6 520.2 289.5 M07(5132) M08(5133) M09(5134) 462.69 378.75 257.62 459.88 362.02 250.83 463.84 368.59 254.05 462.1 369.8 254.2 480 360 240 120 0 49 32 49 33 49 34 50 32 50 33 50 34 51 32 51 33 51 34 ジョブ No. 図13 実験3の計測結果 合計処理時間 [秒] グリッドの 性能比 多重度 1回目 2回目 3回目 平均値 1 2 3 4 5 9 2,499 1,411 972 811 730 676 2,493 1,409 980 811 733 678 2,487 1,411 963 812 732 677 2,493 1,410 972 811 732 677 1.0 1.8 2.6 3.1 3.5 3.8 直接(※) 2,563 2,515 2,563 2,547 − [sec.] 3000 2400 1800 1200 600 0 0 2 4 6 8 10 ※ グリッドを使わずに,1台の PC で直接実行したものである 4 考察と今後の課題 ■実験1に関する考察 実験1において,直接実行時には発生しなかったエラーが,「計算グリッド」環境下で 発生した原因は不明であるが,アプリケーション (ArcGIS) 側の要因である可能性が高い。 しかしながら,適切な制御アルゴリズムを組み込むことによって,このような事態にも柔 軟に対応することができた。エージェント PC が処理途中でダウンした場合,代替 PC で ジョブを実行するグリッド環境は多いが,この実験では,アプリケーション側の未知のエ ラーに対してもリトライを適切に実施してエラーをリカバリしながら,確実にすべてのジ ョブを完了できる制御方式を考案し,その有効性を検証することができた。 実験1のように,各ジョブの大きさ(処理時間)に差があることが予見される場合,大 きいジョブから順に投入することは有効である。あるいは,エージェントの性能に差があ る場合には,高性能なエージェントに大きなジョブを割り当てることも有効であろう。 34 大阪経大論集 第59巻第5号 ■実験2及び実験3に関する考察 実験2では空間情報をレイヤに分割し,各レイヤに対して同じ GIS 操作を適用する垂 直分散処理を行い,実験3では空間情報をエリアに分割し,各レイヤに対して同じ GIS 操作を適用する水平分散処理を行ったが,いずれの場合でも「計算グリッド」は有効に機 能し,全体の処理性能を確実に向上させることを実証した。 分散処理の対象となる各ジョブの大きさ(処理時間)に注目すると,実験2のようにほ ぼ均一であるほうが,実験3のように不均一な場合よりも高い性能比を得られることも確 認できた。ところで,両実験を通じて,多重度を最大にしたときの性能比が理論値よりも 20%程度低くなることについては,アプリケーション側の処理時間が増加する傾向にある ことまでを把握できた段階であり,詳細な原因の究明と改善案の提示は今後の課題とした い。 グリッド技術と汎用アプリケーションの組合せによる,空間情報の分散処理における実 用性は,現時点でも必要十分な水準にあるといえる。今後さらに,CyberGRIP と ArcGIS の組合せによる実験を重ね,性能比を理論値に近づけるための最適チューニングを見出す ことができれば,複雑なレイヤ構造や広大なエリアなど大規模な空間情報処理への対応が 可能となり,実用性が飛躍的に高まるものと期待される。 【付 記】 本研究は大阪経済大学・共同研究費(グリッドコンピューティング技術を用いた大規模地域 統計情報の処理に関する研究)の交付を受けて行ったものであり,本稿はその成果の一部とし て公表するものである。 また,本研究を遂行するにあたっては,富士通(株)計算科学ソリューションセンターの方々 に多大なご協力をいただいた。ここに記して謝意を表する次第である。 【参 考 文 献】 1. 草薙信照・石原康秀「グリッド技術を用いた GIS 処理の制御と効率化」,情報処理学会・ 第69回全国大会,2007年3月 2. 山野紘一「サービス・グリッドと動的コレオグラフィーの提案」,大阪経大論集・第58巻 第1号,2007年7月 3. 草薙信照・石坂晃「グリッド技術を用いた空間情報の分散処理」,地理情報システム学会 ・講演論文集 第16巻,2007年10月 4. グリッド協議会,http://www.jpgrid.org/ グリッド技術を用いた GIS 処理の分散化と制御 35 【付 録】 リスト1 実験1の処理に用いた Python スクリプト ! " # ! $ % ! & ' ! $ % ( ( ! ) ) % * + ) , + # ) . ! % / データのあるフォルダと 0 ! ) ) % * + ) , + # ) . ) ( 1 2 / / ! 対象となるエリアを指定 この例では7番目のエリアが % ( 対象となっている 3 ( ! ) ) % * + ) , + # ) . ) ! % 4 ! # ! 5 / / / / , 0 $ , " / / / 6 $ / / + 7 $ / 5 ' / / ( 0 3 ( 8 ! ) ! 8 ' 4 + / 3 ( $ / / 0 ( / / $ 9 0 $ : # ; $ 5 1 / 0 0 $ < * 7 / / / + 7 $ 7 5 < " $ 36 大阪経大論集 第59巻第5号 リスト2 実験2の処理に用いた Python スクリプト ! " # ! $ % ! & ' ! $ ( ! ) * * ! ! + + % , + . + ! データのあるフォルダを指定 / ( 0 ! . 1 2 + ! 3 / ( 0 ! & 4 5 6 6 1 ( ! / ( / ( 0 ! + ! % 作業対象となるレイヤを指定 7 ! # ! この例では7番目のレイヤが ) 対象となっている 4 ($ 8 2 8 8 9 1 1 9 0 8 $ : 8 8 8 8 ; < ) = 6 4 9 4 9 0 8 8 0 9 9 : 6 4 / ( 0 6 4 6 4 9 4 9 0 8 8 0 9 4 9 : 6 4 / ( 0 6 4 9 > > 9 > 8 8 8 $ 6 4 $ 9 9 3 $ 9 9 6 4 $ 4 6 4 3 6 4 $ 8 ) ($ < 4 ? " $ $ 9 < @ A B B B 9 9 9 ) ($ < 4 $ 9 < % 6 9 9 9 グリッド技術を用いた GIS 処理の分散化と制御 37 リスト3 実験3の処理に用いた Python スクリプト ! " # ! $ % ! & ' ! $ % ( ( ! ) * * ! ! + + % , + . + ! データのあるフォルダを指定 % / 0 0 ! " ! 1 ( 2 ! 3 4 + ! 1 ( 1 ( 2 ! + ! 作業対象となるエリアを指定 5 6 7 % 1 ( 2 ! 7 8 3 3 3 8 7 8 9 8 : ! この例では7番目(メッシュ番号5132) ) のエリアが対象となっている 8 ($ 0 0 ; < # ; = 8 ; < 3 8 ; 2 0 0 2 ; ; > = 8 1 ( 2 = 8 = 8 ; < 3 8 ; 2 0 0 2 ; 8 ; > = 8 1 ( 2 = 8 0 0 = 8 $ ; ; = 8 $ ; ; 5 6 7 % $ = 8 = 8 5 6 7 % $ 0 ) ($ ? 8 @ " $ $ ; ? A 6 B B B ; ; ; ) ($ ? 8 $ ; ? % = ; ; ; 38 大阪経大論集 第59巻第5号 リスト4 複数のジョブ(Python スクリプト)を10多重で処理するための OJC スクリプト ※実験1∼3に共通 ! " " # $ % " " % ! & ' ( ) & * & 実行すべきジョブの総数を指定 + , ' . & , ( & / ' 0 ( & 0 0 . , / ( * . % ! * * ! 1 & % ! * ! 1 & , ! % % 2 ! . & 3 4 $ % % & ( & ' % % 5 ( 6 7 6 ' 1 % 1 8 3 1 7 6 6 7 * ( * 実行多重度を指定 , ! 9 ! . & グリッド技術を用いた GIS 処理の分散化と制御 39 ! " # $ % & & & & & & & & & & & & & & & & & & & & & & & & & & & & & % ' ( ) * + % & & & & & & & & & & & & & & & & & & & & & & & & & & & & & % ,-./012345678 ' ( ) ( ) 9 " : * * ) % 23456;<7=>?@AB78 * ! * ( ! * ( + C ) D E % F ) G ) HIJKL=>?HMNAOP78 Q 9 R S D T ) T T : * ) T : * T T U Q " ! ) % V;<7-./8 " ) ) T T ) T : * T " " W ) " X X % " ) W " " W ) " ! " Y , % Z[\]^_A , ^`abc7 % " ) " W ) % Z[\]=>?Ade * ) " " ! " Y , " " " ) W ) 40 大阪経大論集 第59巻第5号 ! " # $ # % & ' ( " # ) * # % & ( ( + " ' ( % , $ $ # ( ( + " ' ( % $ . # & ( ( ( / & 0 123456789:; <=>7?@A ( 0 BCDEFGHAIJKL # + M M " + M M + ( % ( N # & ( ( / & 0 O<=>7?@AP<=>BCDEQ<=>7 / RSTU V W ( ( 0 BCDEF:<=>7XYZ[\ ( ( ( ( ] ! & " ( ( ( ( % " # ( N # % & ( ( + " % & V W ( ( 0 1234FG^ Q__Q<=>7XYZ[\ 0 # + N # &