平成27年度 秋期 システムアーキテクト試験 午前Ⅱ 問6

大量のデータを並列に処理するために,入力データから中間キーと値の組みを生成する処理と,同じ中間キーをもつ値を加工する処理との 2 段階で実行するプログラミングモデルはどれか。

解答・解説

正解: ウ. MapReduce

正解は ウ です。

MapReduce(マップリデュース)は、大量のデータを複数のサーバ(ノード)に分散して並列処理するためのプログラミングモデルです。処理は以下の2段階で実行されます。

  1. Map(マップ)処理:入力データを読み込み、解析・抽出を行って「中間キー(Key)と値(Value)の組み」を生成する処理。
  2. Reduce(リデュース)処理:Map処理で生成されたデータのうち、同じ中間キーをもつ値を集約・加工して最終的な出力結果を生成する処理。

したがって、問題文の記述に合致するのは MapReduce です。

各選択肢の解説

  • ア:2相コミット
    分散データベース環境において、複数のサイトにまたがるトランザクションの原子性(ACID特性のAtomicity)を保証するためのコミットプロトコルです。「セキュア状態(準備完了)の確認」と「コミットの実行」の2段階で整合性を保ちますが、大量データの並列加工を行うプログラミングモデルではありません。
  • イ:KVS
    Key-Value Store(キー・バリュー型ストア)の略で、任意の「キー」とそれに対応する「値」のペアでデータを管理するNoSQLデータベースの一種です。データ格納の仕組み(データモデル)であり、2段階で実行する並列処理のプログラミングモデルそのものではありません。
  • ウ:MapReduce
    正解です。Mapステップ(中間キーと値の生成)とReduceステップ(同じ中間キーをもつ値の加工・集約)の2段階で大量データを並列処理するプログラミングモデルです。
  • エ:マルチスレッド
    1つのプロセス(プログラムの実行単位)内で複数の処理の流れ(スレッド)を生成し、メモリ空間を共有しながら並行・並列に処理を進める技術です。中間キーと値の組みを用いた2段階の処理モデルは規定していません。

Spineチーム