【ヤーン】

YARN(ヤーン) とは?

💡 クラスタの「交通整理役」。限られた資源をみんなで上手にシェアする司令塔
📌 このページのポイント
YARN のアーキテクチャ ResourceManager クラスタ全体の司令塔 Spark / Flink アプリ投入 NodeManager 1 コンテナ A CPU:2 Mem:4G コンテナ B CPU:1 Mem:2G 空きリソース: CPU:1 Mem:2G NodeManager 2 コンテナ C CPU:2 Mem:8G 空き 空きリソース: CPU:2 Mem:4G ResourceManager がリソースを管理し、各 NodeManager にコンテナ(実行枠)を配置 Spark・Flink・MapReduce など複数フレームワークが同一クラスタを共有
YARN のリソース管理アーキテクチャ
ひよこ ひよこ

YARNって名前を聞くとJavaScriptのパッケージマネージャを思い浮かべちゃうんだけど、別物なの?

ペンギン先生 ペンギン先生

完全に別物だよ!Hadoop YARNは「Yet Another Resource Negotiator」の略で、Hadoopクラスタのリソースを管理するためのフレームワークなんだ。名前がかぶってるだけで、役割も技術領域もまったく違うよ

ひよこ ひよこ

リソースを管理するってどういうことなの?

ペンギン先生 ペンギン先生

たとえば100台のサーバーでできたクラスタがあるとするよね。そこで「Sparkで集計したい」「MapReduceでログ解析したい」と複数のリクエストが来たとき、どのサーバーにどれだけのCPUとメモリを割り当てるかを決めるのがYARNの仕事なんだ。オフィスの会議室予約システムみたいなものだね

ひよこ ひよこ

なるほど!会議室の予約係みたいな感じなんだね!

ペンギン先生 ペンギン先生

そうそう。YARNが登場する前のHadoopでは、MapReduceがリソース管理も処理実行も全部やっていたんだ。でもそれだとMapReduce以外の処理が動かせなかった。YARNがリソース管理を切り出したことで、Spark、Flink、Tezなど色んなフレームワークを同じクラスタで同時に動かせるようになったんだよ

ひよこ ひよこ

どういう仕組みで動いてるの?

ペンギン先生 ペンギン先生

大きく2つの役割があるよ。まず「ResourceManager」がクラスタ全体の司令塔として、どのジョブにどれだけリソースを割り当てるかを決める。次に各サーバーにいる「NodeManager」が、自分のマシンのCPUやメモリを監視して、ResourceManagerの指示どおりにコンテナを起動するんだ

ひよこ ひよこ

コンテナって出てきたけど、Dockerコンテナとは違うの?

ペンギン先生 ペンギン先生

いい質問だね。YARNのコンテナDockerコンテナとは別で、「CPUいくつ、メモリいくら」というリソースの枠のことを指すんだ。アプリケーションはこの枠の中で実行される。ただ最近のYARNはDockerコンテナ上でタスクを動かす機能も追加されているよ

ひよこ ひよこ

今でもYARNって使われてるの?Kubernetesとかもあるよね?

ペンギン先生 ペンギン先生

鋭いところを突くね。確かにKubernetesの普及でYARNの立ち位置は変わりつつあるよ。クラウド環境ではEMRやDataprocがYARNを内部で使いつつ抽象化してくれるし、Spark on Kubernetesのように直接Kubernetesで動かすパターンも増えている。でもオンプレミスの大規模Hadoopクラスタではまだまだ現役だし、YARNのキャパシティスケジューラはマルチテナント環境でのリソース配分に強みがあるんだよ

ひよこ ひよこ

YARNならではの強みもまだあるんだね!

ペンギン先生 ペンギン先生

そうだね。特にYARNのキューベースのリソース管理は、部署ごとに「最大50%まで使える」みたいな制限をかけられるから、大企業のデータ基盤ではとても重宝されているんだ。Hadoopを理解するうえでYARNは欠かせない存在だよ

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