🦁

Lesson3. Map Reduce と YARN の全体像

2022/10/28に公開

学ぶ前の知識レベル

  • Hadoopを支える、HDFSと並ぶ二大柱の技術らしい
  • YARN は Yet Another Resource Negotiation の略らしい
  • Map Reduce と YARN は関連性の高い技術っぽいけどどう関係してるのかはよくわかってない

学んだこと

ひとまず概念はつかんだ…のか? 構築して動かしてみないことには完全理解は難しそう、このページも理解が進むごとに編集していきます。

そもそも Map Reduce (=MR) には1と2があって、1と2の間で大きく仕組みが変わっているらしい。この記事の以下の内容は、特に断りのない限り MR2 に関する内容です。

Map Reduce と Yarn の関係

言葉で説明すると、YARN は分散アプリケーションを動かすための汎用的なフレームワークで、MR2 はそのフレームワーク上で動く分散アプリケーションのひとつです。

図にするとこんな感じ。

Map Reduce と YARN の関係

Map Reduce

  • 分散コンピューティングのためのプログラミングモデル
  • Map, Shuffle, Reduce の3段階でデータを処理する(MapとReduceの2段階とする説明もある)
  • Map:「あいあいさ」「ごいごいす」というテキストデータがインプットの場合、あ(1,1)/い(1,1,1,1)/さ(1)/ご(1,1)/す(1)のように配列に分けるプロセス。
  • Reduce : Mapの結果を、あ(2)/い(4)/さ(1)/ご(2)/す(1)のように集約するプロセス。

※ 「あいあいさ」「ごいごいす」や分けた後のデータが実務上はどういう単位になるのかが全然わかってない。これがわかればもうちょっとわかるはず。

YARN

  • 分散アプリケーションを動かすための汎用的なフレームワーク
  • アーキテクチャは以下のイメージ

    YARN のアーキテクチャ
  • CPU, メモリ, ディスク, ネットワークなどの資源を、Resource Manager の仲裁に基づき各ノードが分担して提供する

Resource Manager

  • Resource Manager のサーバーは、HDFSのName Node と同じでもいいし同じじゃなくてもいい。
  • Resource Manager はスケジューラーとアプリケーションマネージャーを持つ。

スケジューラ

  • クライアントの要求に基づき各資源の交渉をスケジュールする機能。
  • 投げっぱなしであってモニタリングやトラック、こけた場合のリトライはしない。
  • スケジューリングに関するポリシーをプラグインすることができる。キャパシティ・スケジューリング、フェア・スケジューリングなど。

Application Master

各ノードに分散する Application Manager を司る存在、という程度の理解しかない。

Node Manager

  • HDFSの各データノードに、Node Manager が住んでいる感じ。
  • 各 Node Manager は、Resource Manager の Application Manager から受けた指令を行うための実行環境である container と、その container の一部であり実際の処理が行われる Application Master を持つ。(持つ、というのが適切言い方かよくわかっていない)

MapReduceの歴史

MR1→MR2への変遷

  • MR1時代は、MRとYARNは一心同体感が強く、YARNがMRからの制約を受けていた(MRが前提としているアーキテクチャから離れられない)
  • MR1時代は、Resource Manager は Job Tracker と Task Tracker を持っていたが、こいつらがスケーラビリティの阻害要因になっていたのでMR2で消えた

Spark

MRの仕組みにはいろいろ限界があって、それを克服するために登場したのがSparkだそう。

学ぶために使ったリソース

公式ドキュメント(英語)

https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/YARN.html

Youtube(英語)

MRとYARNの関係性については、このビデオが一番わかりやすかった
https://youtu.be/RncoVN0l6dc

YARNのアーキテクチャについてはこの動画の15分35秒~を参考にしました
https://youtu.be/n3qnsVFNEIU

MapReduce についてはわからなすぎて色々見ました。
https://youtu.be/MAJ0aW5g17c
https://youtu.be/43fqzaSH0CQ

まだわかっていないこと

  • とにかく手を動かしたい。作らないとなんもわからん。
  • キャパシティ・スケジューリングって何?
  • フェア・スケジューリングって何?
  • Sparkについても勉強しなきゃ

Discussion