システムアーキテクト 2025年 午前2 問04
問題文
大量のデータを並列に処理するために、入力データから中間キーと値との組みを生成する処理と、同じ中間キーをもつ値を加工する処理との2段階で実行するプログラミングモデルはどれか。
選択肢
ア:2相コミット
イ:MapReduce
ウ:KVS(正解)
エ:マルチスレッド
大量のデータを並列に処理するための2段階プログラミングモデル【午前2 解説】
要点まとめ
- 結論:問われている「中間キーと値の組」を基盤とする抽象はキー・バリュー(KVS)の概念で、選択肢はウが正解です。
- 根拠:入力をキーと値の組に変換し、同じキーごとに値を集約・加工する流れはキーを軸にした処理モデルの本質を示します。
- 差がつくポイント:MapReduceは実装フレームワーク、KVSは「キー・バリューというデータ抽象」を指す語句の違いを押さえると得点が安定します。
正解の理由
「入力データ→中間キーと値の組を生成→同じ中間キーをもつ値を加工」という記述は、キー(key)を中心にデータを扱う設計思想を問うものです。選択肢の中で「キーと値」のペアを基本概念として明示するのはKVS(キー・バリュー・ストア)であり、設問が抽象的な“キーと値の組”に注目しているため、ウ(KVS)が正解となります。
よくある誤解(2〜3 行)
- MapReduceが即座に正解だと判断しやすいですが、設問の表現がフレームワーク名ではなく「データ抽象(キーと値)」を問う場合があります。
- 「KVSはただの記憶装置」という誤認もあるため、KVSがキー中心の処理モデルを表す語である点を押さえてください。
解法ステップ
- 問題文のキーワードを抽出:「中間キー」「値」「2段階(生成と加工)」「並列処理」。
- 各選択肢が何を指すかを素早く整理:プロトコル、フレームワーク、データモデル、並列手法。
- 設問がフレームワーク名を求めているか、概念(抽象)を問うかを判断する。
- 「中間キーと値の組」という言い回しが示す抽象(キー・バリュー)を選ぶ。
選択肢別の誤答解説
- ア: 2相コミット
トランザクションの整合性を保つ分散コミットプロトコルであり、データ処理モデル(キーと値の生成・集約)を説明するものではありません。 - イ: MapReduce
大量データの並列処理フレームワークで、設問の処理フローに極めて近い説明になります。しかし設問が「中間キーと値の組」というデータ抽象を指しているため、語義としてはKVSに近いと判断されます。MapReduceは実装やアルゴリズム名である点に注意。 - ウ: KVS
キーと値のペアを基本単位とするデータモデル(キー・バリュー)を表す語で、設問の「中間キーと値」という表現と直接対応します。よって本問の正解です。 - エ: マルチスレッド
同時実行の手法であり、スレッド並列化は処理の粒度やデータ抽象(キー・バリュー)を示すものではありません。
補足コラム(関連知識など)
- MapReduceとKVSの関係:MapReduceは「Map(キー・バリューの生成)→Shuffle(同キーで集約)→Reduce(集約処理)」という段階を持つ実装フレームワークです。一方KVSは「キーと値の組」を扱うデータモデル/ストレージの総称で、MapReduceが動作する際のデータ表現としてKVS的な考え方が使われます。
- 実例:RedisやDynamoDBはKVSとして広く使われ、HadoopのMapReduceはキー・バリュー形式の中間データを生成・集約します。問題では「モデル/抽象」を問う語彙選択力が重要です。
FAQ
Q: 問題文の説明はMapReduceそのものではないですか?
A: MapReduceは確かに該当する処理フローを実現するフレームワークですが、設問は「中間キーと値の組」というデータ抽象に着目しているため、KVS(キー・バリュー)を問う問題として解釈されます。
A: MapReduceは確かに該当する処理フローを実現するフレームワークですが、設問は「中間キーと値の組」というデータ抽象に着目しているため、KVS(キー・バリュー)を問う問題として解釈されます。
Q: 試験で迷ったらフレームワーク名と抽象名、どちらを優先すべきですか?
A: 問題文が「何を表現しているか(概念)」を問う場合は抽象名、具体的な実装や手順を問う場合はフレームワーク名が正解になる傾向があります。設問の語句に注目してください。
A: 問題文が「何を表現しているか(概念)」を問う場合は抽象名、具体的な実装や手順を問う場合はフレームワーク名が正解になる傾向があります。設問の語句に注目してください。
関連キーワード: MapReduce, KVS, キー・バリュー、分散処理、並列処理、Hadoop, Redis, DynamoDB

\ せっかくなら /
システムアーキテクトを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

