メインコンテンツへ
データベースデータベース応用

MapReduceの処理フローに関する記述として、最も適切なものはどれか。

ア.MapReduceは単一サーバ上で複数スレッドを使った並列処理フレームワークで、分散環境では動作しない。
イ.MapReduceはmap関数だけで集計を完結させ、reduce関数は冗長なので省略可能である。
ウ.入力データを分割してMapタスクが並列に(key, value)ペアを生成→shuffleフェーズで同じkeyの値を1か所に集める→Reduceタスクがkeyごとに集約処理を行う、という3段階で大規模データを並列分散処理するフレームワークで、Hadoopの基盤としてビッグデータ処理の起点となった。正解
エ.MapReduceはリレーショナルDBのSQL文をパースして実行するクエリオプティマイザの方式名である。

解説

MapReduceは「巨大な選挙の開票作業」のような分業。各投票所が候補者ごとに票を仕分け(Map)→同じ候補者の票を一か所に集め(Shuffle)→集計係が候補者ごとに合計(Reduce)。この3段階で何百TBのデータも何千台のサーバで並列処理できます。

なぜ ウ が正解か

ウが正解。MapReduceはGoogle発(2004年論文)の分散並列処理モデル。(1)Map:入力データのレコードごとに(key, value)ペアを生成(例:単語カウントなら(word, 1))、(2)Shuffle:同じkeyを持つvalueを1つのReducerに集約(フレームワーク自動処理)、(3)Reduce:keyごとにvalueリストを集約処理(例:合計値計算)。Hadoop HDFSと組み合わせて数千台規模での分散処理が可能になり、ビッグデータ時代の起点となった。後継としてSpark等のDAGベース処理系へ進化。

なぜ ア は間違いか

MapReduceの本質は分散環境での大規模並列処理。「単一サーバ専用」は全くの誤りで、分散実行こそ価値の核。

なぜ イ は間違いか

reduce関数は集約処理の本体であり省略不可。mapだけでは(key,value)ペアが散在するだけで集計にならない。

なぜ エ は間違いか

SQLクエリオプティマイザとは無関係。MapReduceは独立した分散処理フレームワークで、後にHive等でSQL風レイヤが乗ったが本体はSQLではない。

出典: AI生成問題(学習用)