Hadoop2系-YARN

前の記事から1ヶ月が経過してしまいました。 今回は、Hadoop1系のMapReduce分散処理基盤の課題を解消するしくみであるYARNについて書きます。


YARNの仕組み

Hadoop1系のMapReduce処理基盤の問題については以前の記事でお伝えしたとおりです。YARNではリソース管理ジョブ管理を分離することでマスタノードで生じるオーバーヘッドを軽減するように実装されています。
特に、ジョブ管理を分離したことで、MapReduce以外の処理についてもMapReduceと同じように扱えることができるようになりました。YARNではアプリケーションを動作させるための共通的な仕組みを提供しています。この仕組みを利用してMapReduceやそれ以外の処理についても同じリソース上での動作を実現しました。

YARNを構成するノードについて説明します。

ResouceManager

分散処理を実行するために処理に利用するノードのリソースを管理するマスタノードです。Hadoop1系のJobTrackerのリソース管理部分を切り出したという位置づけです。

NodeManager

分散処理の実行を制御するスレーブノードです。Hadoop1系のTaskTracker相当の位置づけです。

ApplicationMaster

アプリケーションを制御する役割を果たします。Hadoop1系のJobTrackerのジョブ管理部分を切り出したという位置づけです。MapReduceアプリケーションは、ApplicationMasterとして動作します。 ApplicationMasterは、NodeManager上で動作します。

Container

アプリケーションを実際に実行する役割を果たします。Hadoop1系のTaskTracker上で実行するMapタスク/Reduceタスクに関するChildプロセスの位置づけです。

JobHistoryServer

厳密にはYARNのノードでは無いですが、MapReduceジョブのログや履歴を管理するためのノードです。

これらのノードの細かな仕組みは別の機会で書きたいと思います。

YARN上のアプリケーション

現在、MapReduce以外のアプリケーションをYARN上で動作させるために、様々なプロジェクトが動いています。代表的なプロジェクトとしては、以下のものがあります。

  • Apache Spark : HDFS上のデータをインメモリで分散処理させるための仕組み
  • Apache Storm : ストリーミング処理基盤 Storm on YARNとして取り組まれている
  • HOYA (HBase) : 分散カラム指向型ストアであるHBaseをYARNリソース上で動作させる仕組み
  • Giraph : グラフ処理

YARN処理基盤の発展とともに、色々なアプリケーションがYARN上で動くようになるかもしれませんね。