🦁
Lesson3. Map Reduce と YARN の全体像
学ぶ前の知識レベル
- 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だそう。
学ぶために使ったリソース
公式ドキュメント(英語)
Youtube(英語)
MRとYARNの関係性については、このビデオが一番わかりやすかった
YARNのアーキテクチャについてはこの動画の15分35秒~を参考にしました
MapReduce についてはわからなすぎて色々見ました。
まだわかっていないこと
- とにかく手を動かしたい。作らないとなんもわからん。
- キャパシティ・スケジューリングって何?
- フェア・スケジューリングって何?
- Sparkについても勉強しなきゃ
Discussion