YARNとは

YARNについて

  本章ではYARNについてを説明します。YARNとは以下の通りになります。

こちらについてもう少し詳しく説明します。 YARNファミリーのそれぞれの役割、およびHadoopクラスタの位置付けを図で示すとこのようになります。

YARNファミリー
Application Master
コンテナ
Task

BD_Images_What_is_YARN_001

YARNを使ったアプリケーション実行の流れについて

  上記説明通り、YARNを利用するとResourceManager、NodeManagerの配置が実施されます。このような体制でクライアントからアプリケーションを起動してみます。すると以下の流れでYARN処理が実施されます。

  1. クライアントにて MapReduce、Sparkなどアプリケーションを実行
  2. マスタサーバ/ネームノード側でResourceManagerが受け取り、AppllicationMasterへ仲介指示
  3. ApplicationMaster側がアプリケーションを実行するためにはどれほどかのリソースを確認(=DAG)
  4. ApplicationMaster側がResourceManager側へ処理に必要なコンテナ(単位)の割当を依頼
  5. ResourceManager側はコンテナ(単位)を受け取り、NodeManagerそれぞれへリソース配布
  6. NodeManagerにて処理に必要なタスクをそれぞれ実施
  7. NodeManagerにて処理が行き詰ったり問題が出たらResourceManagerへ通知し、その分のコンテナ(単位)を別のNodeManagerへ割当(またはコンテナ(単位)を増やすなど調整)
  8. NodeManagerで持ちTask処理が終わればResourceManagerへ通知
  9. 全てのNodeManagerの処理が終われば、アプリケーション結果をクライアントに返してアプリケーション終了

BD_Images_What_is_YARN_001

TensorFlow on YARN

  AlibabaCloud E-MapReduceにTensorFlow on YARNがあります。こちらはApache Hadoo上で分散型機械学習を運用するために開発されたフレームワークです。YARNのリソース管理やコンテナ構築などのタスク処理を応用した、TensorFlowのジョブをHadoopクラスタに割り当てて分散処理を実現します。同時に、スケジューリングや種類に応じたリソース要求処理、メモリの割当調整ができます。

より詳しくはこちらのドキュメントを参照してください。 * Native Support of TensorFlow on Hadoop https://engineering.linkedin.com/blog/2018/09/open-sourcing-tony--native-support-of-tensorflow-on-hadoop * An Orchestrator for Distributed Machine Learning Jobs https://arxiv.org/abs/1904.01631

まとめ

  YARNはHadoopやSparkなど大規模なJob分散処理において欠かせない存在となっています。今後、TensorFlow on YARNのようにYARNは様々な分野で活躍していきますので、YARNの存在意義を理解いただければ幸いです。