web-dev-qa-db-ja.com

YARNのコンテナとは何ですか?

YARNのコンテナとは何ですか? nodemanagerのタスクが実行される子JVMと同じですか、それとも異なりますか?

36
rahul

特定のクラスターの単一ノード上のリソース(メモリ)を表します。
コンテナは

  • ノードマネージャーの監督下
  • リソースマネージャーによってスケジュールされた

1つのMRタスクは、このようなcontainer(s)で実行されます。

25
Lorand Bendig

単一のNode(または単一の非常に大きなもの)に複数のコンテナが存在する可能性があります。

システム内のすべてのノードは、最小サイズのメモリ(たとえば512MBまたは1 GB)の複数のコンテナで構成されていると見なされます。 ApplicationMasterは、最小メモリサイズの倍数として任意のコンテナを要求できます。

ソース 、セクションResourceManager/Resource Modelを参照してください。

15
alien01

単語「コンテナ」は、YARNで2つのコンテキストで使用されます。

Container:ApplicationMasterに割り当てられたリソースを示します。 ResourceManagerは、リソース/コンテナをApplicationMasterに発行する責任があります。 コンテナ APIを確認してください。

コンテナの起動:割り当てられたリソース(コンテナ)に基づいて、ApplicationMasterはNodeManagerにコンテナの起動を要求し、ノードでタスクを実行します。 ContainerManager APIを確認してください。

5
Saket

Hadoop 2.xでは、コンテナは作業単位が発生する場所です。たとえば、各MapReduceタスク(ジョブ全体ではなく)は1つのコンテナで実行されます。

アプリケーション/ジョブは、1つ以上のコンテナーで実行されます。

システムリソースのセットは各コンテナーに割り当てられ、現在はCPUコアとRAMがサポートされています。Hadoopクラスターの各ノードは複数のコンテナーを実行できます。

Hadoop 1.xでは、各MapReduceタスクを実行するためにJobTrackerによってスロットが割り当てられます。次に、TaskTrackerはタスクごとに個別のJVMを生成します(JVMの再利用が有効になっていない場合を除く)。

5

コンテナはリソース割り当てです。これは、特定のResourceRequestを許可するResourceManagerの成功した結果です。コンテナは、特定のホスト上で特定の量のリソース(メモリ、CPUなど)を使用する権利をアプリケーションに付与します。

1

簡単に言えば、コンテナはYARNアプリケーションが実行される場所です。各ノードで使用できます。アプリケーションマスターは、コンテナ(リソースマネージャのコンポーネントの1つ)とコンテナをネゴシエートします。コンテナはNode Managerによって起動されます。

1
Amitesh Ranjan

入力データのサイズに応じて、複数の入力分割が作成されます。 MRジョブは、このデータ全体を処理する必要があるため、複数のタスクが作成されます(タスクのマッピングと削減)。したがって、入力ごとに1つのタスクで分割が処理されます。このタスクの実行方法は、リソースマネージャーによって提案されています。リソースマネージャは、どのノードマネージャが無料でどれが忙しいかを知っています。大学の同様の校長とノードマネージャは大学のクラス教師であり、校長はどの先生が無料かを知っています。そのため、ノードマネージャーに、そのタスク(ジョブ全体のごく一部)をコンテナー(jvmなどのメモリー領域)で実行するように要求します。そのため、ジョブはコンテナ内でアプリケーションマスターとして実行されます。

0
Kapil

コンテナは、アプリケーションがタスクを実行する場所です。クラスターで実行中のコンテナーの総数を知りたい場合は、クラスターのYarn-ResourceマネージャーUIで確認できます。

糸のURL: http:// Your-Active-ResourceManager-IP:45020/cluster/apps/RUNNING

「コンテナの実行」列で、合計番号実行中のコンテナの詳細が存在します。

注:sparkを使用している場合、spark executorはコンテナ内で実行されます。1つのコンテナは複数のspark executorに対応できます。

0
Prasanna
Container : 

リソースの論理リースとノードで生成される実際のプロセスは、同じ意味で使用されます。タスク(またはAM)が実行されるプロセスと同じです。コンテナを開始するには、コンテナオブジェクトと、タスク(またはAM)を実行するコマンドのリストを設定するCLC(ContainerLaunchContext)を提供します。

nmClient.startContainer(container, clcObj)

ContainerLaunchContext code snippet :

<code>
.
.
.
 /**
   * Add the list of <em>commands</em> for launching the container. All
   * pre-existing List entries are cleared before adding the new List
   * @param commands the list of <em>commands</em> for launching the container
   */
  @Public
  @Stable
  public abstract void setCommands(List<String> commands);
</code>
0
RahulV