応用情報技術者過去問題 平成30年秋期 午後問4

問4 システムアーキテクチャ

並列分散処理基盤を用いたビッグデータ活用に関する次の記述を読んで,設問1〜4に答えよ。

 S社は,スーパーマーケットやドラッグストアなどの小売チェーン(以下,チェーンという)で販売されている衣料用洗剤や食器用洗剤などを製造する大手消費財メーカである。商品企画部による商品力強化や,営業部による拡販施策検討のために,取引先である複数のチェーンから匿名化されたPOSデータを週次で購入し,独自に集計・分析することになった。購入するPOSデータの件数は約10億件/週と予想されるので,情報システム部のTさんをリーダとして,並列分散処理基盤を利用したPOSデータ集計・分析システムを構築することになった。

〔並列分散処理基盤のシステム構成〕
 Tさんは,S社が保有している並列分散処理基盤のシステム構成を調査した。並列分散処理基盤のシステム構成を図1に示す。
pm04_1.gif/image-size:443×125
 処理対象のデータはブロック単位に分割され,物理的には,各スレーブサーバの内部バスに接続されたローカルストレージに分散して格納されているが,論理的には,単一のファイルシステム(以下,分散ファイルシステムという)で管理されている。分散ファイルシステムのブロックサイズは128Mバイトに設定されている。任意のスレーブサーバ1台に障害が生じた場合でも処理を継続できるように,ブロックは2台のスレーブサーバのローカルストレージに非同期で複製して格納されている。ファイル名,ブロック位置,所有者,権限などのメタデータは,マスタサーバが保持している。
 マスタサーバはクライアントからジョブの実行依頼を受け付け,ジョブを複数の実行単位(以下,タスク)に分割し,処理対象のデータを格納しているスレーブサーバに対してタスクの実行を依頼する。データを分割した際にデータサイズのばらつきが小さいほど,タスクが均等に分散される。また,同一ジョブ内のタスク間で処理するデータが依存しており,タスクが逐次的に処理される場合,それらのタスクは分散されない。各スレーブサーバで同時に実行可能なタスクの数は,CPUの物理コア数−1を上限とする。並列分散処理基盤全体で同時に実行するタスクの数を多重度という。
 マスタサーバの仕様は,CPU物理コア数2,メモリ容量8Gバイト,ローカルストレージのディスクI/O速度60Mバイト/秒である。スレーブサーバの仕様は,CPU物理コア数4,メモリ容量16Gバイト,ローカルストレージのディスクI/O速度60Mバイト/秒である。
 Tさんが調査結果を上司のU課長に報告したところ,①可用性の観点からリスクがあるとの指摘を受けた。本リスクを評価した結果,それを受容してシステム構築を進めることになった。

〔POSデータ集計・分析システムのジョブ構成〕
 POSデータ集計・分析システムを構成するジョブの一覧を表1に示す。
pm04_2.gif/image-size:533×336
 POSデータの購入元は200チェーンあリ,POSデータは日別にファイル分割されている。1週間分のPOSデータのファイル数は1,400個であり,総データサイズは420Gバイトとなる。店舗数は全チェーン合わせて6,300店舗であり,取り扱われている商品数は10,000点である。そのうち,S社の商品は600点である。
 ジョブの実行順序は(A),(B),(C),(D)の順であり,各ジョブは同時には実行されない。
 毎週月曜日23時までには,前週月曜日から日曜日までの全てのPOSデータが分散ファイルシステムに格納される。商品企画部や営業部からは,毎週火曜日の9時には最新の分析結果を見られるようにしてほしいとの要望が挙がっているので,月曜日23時から火曜日9時までの間に一連のジョブを完了させる必要がある。

〔性能テスト〕
 POSデータ集計・分析システムを開発し,性能テストを実施したところ,②ジョブ(B)が目標処理時間内に完了しないことが判明した。ジョブ(B)実行中のマスタサーバ及びスレーブサーバ#1のリソース使用状況を図2に示す。
 なお,スレーブサーバ#2及びスレーブサーバ#3のリソース使用状況もスレーブサーバ#1のリソース使用状況と類似している。
pm04_3.gif/image-size:534×320
 Tさんは,ボトルネックとなったリソースを特定して適切な対策を講じることによって,ジョブ(B)を目標処理時間内に完了させることができた。

〔スケールアウトの計画〕
 今後はPOSデータの購入元を増やし,分析精度を高めることを検討している。1年後には取り扱うPOSデータの件数を現在の10億件/週から30億件/週に増大させることが目標である。処理対象のデータ件数が増えると一部のジョブが目標処理時間内に完了しなくなる懸念があるので,並列分散処理基盤のスレーブサーバの増設(以下,スケールアウトという)を計画しておくことになった。性能テストにおいて調査した,POSデータの件数と処理時間の関係,及び多重度と処理時間の関係を図3に示す。Tさんは,1年後のスケールアウトに向けて予算を確保するために,図3を基に追加が必要となるスレーブサーバの台数を試算した。
pm04_4.gif/image-size:502×222
 1年後にPOSデータの件数が3倍になること,及び図3のPOSデータの件数と処理時間の関係におけるジョブ(A)〜(C)の傾向から,1年後の並列分散処理基盤に要求されるスループットは現行の並列分散処理基盤の3倍と推定される。処理時間がPOSデータの件数に依存しないジョブ(D)はスケールアウトにおいて考慮する必要がない。図3の多重度と処理時間の関係から,スケールアウトにおいて考慮する必要があるジョブのうち,多重度を増やしても処理時間が最も短縮されにくいジョブはジョブ(A)である。多重度を3倍にした場合,ジョブ(A)におけるスループットは2倍となる。並列分散処理基盤のスループットを3倍にするために最低限必要な多重度は,現行の並列分散処理基盤のb倍にあたるcである。したがって,1年後までに少なくともd台のスレーブサーバを追加する必要がある。

設問1

〔並列分散処理基盤のシステム構成〕について,(1),(2)に答えよ。
  • 図1のシステム構成での多重度の上限を答えよ。
  • 本文中の下線①について,どのようなリスクを指摘されたか。30字以内で述べよ。

-解答入力欄-


-解答例・解答の要点-

    • 9
    • マスタサーバが冗長化されておらず,単一障害点である (25文字)

-解説-

  • 多重度とは、並列分散処理基盤全体で同時に実行するタスクの数であると説明されています。
    本システムはいくつかの機器で構成されていますが、本文中に「マスタサーバはクライアントからのジョブの実行依頼を受け付け,ジョブを複数のタスクに分割し,…スレーブサーバに対してタスクの実行を依頼する」と説明されているので、タスクはスレーブサーバ上で実行されるとわかります。

    各スレーブサーバが同時に実行可能なタスクの数は「CPUの物理コア数−1」です。スレーブサーバに搭載されている物理コア数は4つですので、1台のスレーバサーバが同時に実行可能なタスク数は(4-1=)3です。本システムには3台のスレーブサーバが並列に配置されているので、多重度の上限は3倍の9になります。

    ∴9

  • 指摘されたリスクは可用性に関係するものです。可用性とは、障害が発生しても安定したサービスを提供でき、ユーザが必要な時にシステムを利用可能である特性なので、障害発生時の状況について考えてみます。

    図1のシステム構成を見ると、クライアント、LAN、スレーブサーバ、ローカルストレージはそれぞれ冗長化され、1つがダウンしても処理を継続できるようになっていますが、マスタサーバだけは冗長化されていません。マスタサーバは、メタデータを保持しジョブを管理する役割を担っているので、これがダウンしてしまうとシステム全体も停止せざるを得ません。つまり、マスタサーバが単一障害点(SPOF)になっていることが、このシステムにおける可用性のリスクになります。

    ∴マスタサーバが冗長化されておらず,単一障害点である
    単一障害点
    その1箇所の障害がシステム全体の停止に繋がる部分のこと

設問2

〔POSデータ集計・分析システムのジョブ構成〕について,(1),(2)に答えよ。
  • 表1中のaに入れる適切な字句を答えよ。
  • 並列分散処理を行わない場合と比較して,並列分散処理を行う場合のスループットの変化の比率が最も大きくなると見込めるジョブの記号を答えよ。

-解答入力欄-

    • a:

-解答例・解答の要点-

    • a:商品別
    • (C)

-解説-

  • 表1(C)のジョブは"商品別売上集計"であり、その処理内容は「売上数量を商品別に集計する」ことです。この処理で扱うファイル数は10,000個であり、これは取り扱われている商品数と一致します。したがって、このジョブではPOSデータを商品別のファイルに分割すると判断できます。

    a=商品別

  • 並列分散処理では、各プロセッサへのタスク分配が均等であるほどスループットは向上します。各ジョブのタスク分配については、本文中に「データを分割した際にデータサーズのばらつきが小さいほど,タスクが均等に分散される」とあるので、各ジョブのデータサイズのばらつきに目を向けます。表1を見ると、データサイズのばらつきが"小"のジョブは(C)と(D)の二つです。

    (C)と(D)のどちらが最良であるかを判断するためには処理内容を見ます。ここで、本文中の「同一ジョブ内で…タスクが逐次的に処理される場合、それらのタスクは分散されない」という説明が関連してきます。
    (D)の処理内容を見ると、"重回帰分析の偏回帰係数を求める"→"その係数を用いて予測する"という逐次的な処理になっており、正に上記の分散できないタスクに該当します。一方、(C)は逐次的な処理ではありません。つまり、(C)と(D)は同じばらつき"小"のジョブですが、よりタスクが均等に分散されるのは(C)のジョブになります。

    各プロセッサへのタスク分配が均等であるほどスループットは向上するのですから、並列分散処理を行った場合にスループットの変化の比率が最も大きくなるのは(C)です。

    ∴(C)

設問3

〔性能テスト〕について,(1),(2)に答えよ。
  • 本文中の下線②が発生した際にボトルネックとなった原因を,図2中の各サーバのリソース使用状況から判断して答えよ。
  • ボトルネックの解消に有効な対策を解答群の中から二つ選び,記号で答えよ。
解答群
  • スレーブサーバのCPUを物理コア数が多いモデルに換装する。
  • スレーブサーバのローカルストレージを高速なモデルに換装する。
  • スレーブサーバを増設し,1台当たりで同時実行するタスク数を減らす。
  • 分散ファイルシステムのブロックサイズを64Mバイトに変更する。
  • マスタサーバのメモリを増設する。

-解答入力欄-


-解答例・解答の要点-

    • スレーブサーバのディスクI/O速度 (17文字)

-解説-

  • 図2のディスクI/O速度のグラフを見ると、スレーブサーバ#1のI/O速度が60Mバイト/秒で高止まりしています。60Mバイト/秒というのは、スレーブサーバに接続されたローカルストレージのI/O速度であり、この値が続いているということは100%の使用率になっているということです。
    また、ジョブ(B)で転送されるデータ量は「100Mバイト×6,300ファイル=630Gバイト」であり、ローカルストレージ3台が0.5時間に処理できるデータ量「60Mバイト×3台×1,800秒=324Gバイト」をはるかに超えています。
    これでは、ディスクI/Oの使用率が100%になってしまうのも仕方がありません。

    この2つの事由により、ボトルネックの原因はスレーブサーバのディスクI/O速度であると判断できます。

    ∴スレーブサーバのディスクI/O速度

  • ジョブ(B)が目標処理時間内に完了しない原因は、ローカルストレージのディスクI/O速度に起因した分散ファイルシステムの処理能力不足なので、これを改善する策でなければなりません。
    • ディスクI/O速度の向上に寄与しないので不適切です。また、スレーブサーバのCPU使用率は50%未満に抑えられているため増強する理由もありません。
    • 正しい。各ローカルストレージのディスクI/O速度が向上することにより、分散ファイルシステム全体としてのディスクI/O速度も向上します。よって、ボトルネックの解消につながります。
    • 正しい。スレーブサーバを増設すると、それに伴いローカルストレージの台数も増えます。台数が増えた分だけ分散ファイルシステム全体としてのディスクI/O速度が向上するので、ボトルネックの解消につながります。
    • ファイルの転送はブロック単位で行われるため、ファイルサイズに対してブロックサイズが大きいと無駄な転送が生じます。この変更は、平均ファイルサイズの小さい(C)や(D)のジョブに対しては有効かもしれません。
      しかし、ジョブ(B)の平均ファイルサイズは100Mバイトであり、ブロックサイズを128Mバイトから64Mバイトにしても大きな転送効率の向上は見込めないと考えられます。
    • ディスクI/O速度の向上に寄与しないので不適切です。また、マスタサーバのメモリ使用率は50%未満に抑えられているため増強する理由もありません。

設問4

〔スケールアウトの計画〕について,本文中のbdに入れる適切な数値を答えよ。cdの数値は小数点以下を切り上げて,整数で答えよ。ここで,各ジョブの目標処理時間は変更しないものとし,図3における処理時間の変化の比率は,測定範囲外においても測定範囲内とほぼ等しくなることを前提とする。また,ボトルネックを解消するために講じた対策によって,多重度やスレーブサーバの台数は変化していないものとする。

-解答入力欄-

  • b:
  • c:
  • d:

-解答例・解答の要点-

  • b:4.5(5.7,6,6.75,3log23も可)
  • c:41(52,54,61も可)
  • d:11(15,18も可)

-解説-

bについて〕
ジョブ(A)の多重度を3倍にするとスループットは2倍になるので、スループットを3倍するのに必要な多重度(x)を比例式で求めます。

 3:2=x:3
 2x=9
 x=4.5

よってbには4.5が入ります。

b=4.5

cについて〕
現行の並列分散処理基盤の多重度は9ですから、その4.5倍となる多重度を計算で求めます。なお、cdについては設問の指示により小数点以下を切り上げて答えます。

 9×4.5=40.5→(小数点切り上げ)→41

よってcには41が入ります。

c=41

dについて〕
1年後に必要となる多重度が41、現行は9ですから、スレーブサーバ増設により多重度を32増やさなければなりません。
各スレーブサーバが同時に実行可能なタスクの数は3ですから、1台増設につき多重度は3だけ向上します。多重度を32増やすのに必要なスレーブサーバの増設台数は以下のように計算できます。

 32÷3=10.6666…→(小数点切り上げ)→11

よってdには11が入ります。

d=11
問4成績
【30年秋期 午後問題】
 問1 問2 問3 問4 問5 問6 問7 問8 問9 問10 問11
© 2010-2019 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop