【ヤーン】

YARN(ヤーン) とは?

最終更新:
💡 クラスタの「交通整理役」。限られた資源をみんなで上手にシェアする司令塔

Hadoopエコシステムのリソース管理フレームワーク。クラスタ内のCPUやメモリを効率的に割り振り、複数のアプリケーションを同時に実行できるようにする仕組み。

📌 このページのポイント
YARN:CPU・メモリの割当を調整ResourceManager(RM)クラスタ全体の資源を配分資源要求割当・管理ノード1ノード2NodeManager(NM)NodeManager(NM)AMのコンテナアプリごとに実行を調整タスクのコンテナタスクのコンテナ実行・監視コンテナ=CPU・メモリなどを割り当てた実行枠Spark・Flink・MapReduceなどで資源を共有
ノードとコンテナの配置例。AMもノード上のコンテナで動く。実際の配分はスケジューラと設定による。
ひよこ ひよこ
YARNって名前を聞くとJavaScriptのパッケージマネージャを思い浮かべちゃうんだけど、別物なの?
ペンギン先生 ペンギン先生
完全に別物だよ!Hadoop YARNは「Yet Another Resource Negotiator」の略で、Hadoopクラスタのリソースを管理するためのフレームワークなんだ。名前がかぶってるだけで、役割も技術領域もまったく違うよ
ひよこ ひよこ
リソースを管理するってどういうことなの?
ペンギン先生 ペンギン先生
たとえば100台のサーバーでできたクラスタがあるとするよね。そこで「Sparkで集計したい」「MapReduceでログ解析したい」と複数のリクエストが来たとき、どのサーバーにどれだけのCPUとメモリを割り当てるかを決めるのがYARNの仕事なんだ。オフィスの会議室予約システムみたいなものだね
ひよこ ひよこ
どういう仕組みで動いてるの?
ペンギン先生 ペンギン先生
ResourceManager(RM)がクラスタ全体の資源を割り当て、各マシンのNodeManager(NM)がコンテナと資源使用量を管理するよ。アプリごとのApplicationMaster(AM)がRMに資源を要求し、NMと協調してタスクを実行・監視するんだ。
ひよこ ひよこ
コンテナって出てきたけど、Dockerのコンテナとは違うの?
ペンギン先生 ペンギン先生
YARNのコンテナはCPUやメモリなどを割り当てた実行枠で、Dockerイメージ自体とは別の概念だよ。どのアプリにどれだけ割り当てるかは、選ぶスケジューラと設定によるんだ。
ひよこ ひよこ
空き資源があっても待つことはある?
ペンギン先生 ペンギン先生
たとえばCapacitySchedulerのキューに上限を設定できるよ。割合で設定する場合、親キューに対して最大50%といった制限を指定できる。予約容量と最大容量は別なので、50%が常にそのまま割り当てられるわけではないんだ。
もっと詳しく知りたい人へ

空き資源があってもジョブが待つことはある?

あります。キューの最大容量、アプリケーションやユーザーの制限、要求するCPU・メモリなどの条件で割当が制約されます。CapacitySchedulerではキューの保証容量と最大容量を区別して確認してください。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「YARN」って出てきたら「Hadoopクラスタのリソースを管理・配分する司令塔」と思えればだいたいOK!
📖 おまけ:英語の意味
「Yet Another Resource Negotiator」 = もう一つのリソース調停者
💬 初期のHadoopはMapReduceがリソース管理も兼ねていて限界があったから、「もう一つの(Yet Another)」リソース管理の仕組みとして生まれたんだよ。ちなみにJavaScriptのパッケージマネージャ「Yarn」とは全くの別物だよ

参考資料

← 用語集にもどる