0

私は新しい API の実際の目的について頭を悩ませようとしており、インターネットで読んでいると、扱っていたのと同じ質問に対するさまざまな回答が見つかりました。

答えを知りたい質問は次のとおりです。

1) MRv2/YARN デーモンのうち、アプリケーション コンテナーの起動とアプリケーション リソースの使用状況の監視を担当するのはどれか。

2) MRv2/YARN が対処するように設計されている 2 つの問題はどれですか?

このスレッドを他の読者にとって有益で建設的なものにするために、私の検索から得たリソースと実際のデータを指定します。そのため、質問をして投稿するだけで十分な情報を提供しすぎたように見えないことを願っています。より短い。

最初の質問については、ドキュメントを読んで、頼りになる 3 つの主要なリソースを見つけることができました。

Hadoop のドキュメントから:

ApplicationMaster<-->NodeManager コンテナーを起動します。NMClientAsync オブジェクトを使用して NodeManager と通信し、NMClientAsync.CallbackHandler によってコンテナー イベントを処理します。

ApplicationMaster は YARN クラスターと通信し、アプリケーションの実行を処理します。非同期方式で操作を実行します。アプリケーションの起動時に、ApplicationMaster の主なタスクは次のとおりです。

a) ResourceManager と通信して、将来のコンテナーのリソースをネゴシエートおよび割り当てる。

b) コンテナーの割り当て後、YARN NodeManager (NM) に通信してアプリケーションコンテナーを起動します。

Hortonworks のドキュメントから

ApplicationMaster は、事実上、フレームワーク固有のライブラリのインスタンスであり、ResourceManager からのリソースをネゴシエートし、NodeManager と連携してコンテナーとそのリソース消費を実行および監視します。ResourceManager から適切なリソース コンテナーをネゴシエートし、それらの状態を追跡し、進行状況を監視する責任があります。

Cloudera のドキュメントから:

MRv2 デーモン -

ResourceManager – クラスタごとに 1 つ – ApplicationMasters を起動し、スレーブ ノードにリソースを割り当てます

ApplicationMaster – ジョブごとに 1 つ – リソースを要求し、個々の Map および Reduce タスクを管理します

NodeManager – スレーブ ノードごとに 1 つ – 個々のスレーブ ノードのリソースを管理します

JobHistory – クラスターごとに 1 つ – ジョブのメトリックとメタデータをアーカイブします

質問 (アプリケーション コンテナの起動とアプリケーション リソースの使用状況の監視を担当するデーモンはどれか) に戻ると、次のように自問します。

それはNodeManagerですか?それはApplicationMasterですか?

私が理解していることから、ApplicationMaster は NodeManager に実際に仕事をさせる人です。つまり、誰が箱を地面から持ち上げる責任があるのか​​ を尋ねるようなものです。体を動かしてリフティングをさせます...

難しい質問だと思いますが、答えは 1 つしかありません。

2 番目の質問については、オンラインで読むと、多くのリソースからさまざまな回答を見つけることができたので混乱しましたが、私の主な情報源は次のとおりです。

Cloudera のドキュメントから:

MapReduce v2 (「MRv2」) – YARN の上に構築 (Yet"Another Resource NegoGator)

– ResourceManager/NodeManager アーキテクチャを使用

– クラスタのスケーラビリティを向上

– ノード リソースは、あらゆるタイプのタスクに使用できます

– クラスタの使用率を向上

– 非/MR ジョブのサポート

質問に戻ると (MRv2/YARN が対処するように設計されている 2 つの問題はどれですか?)、私は MRv2 が JobTracker へのリソースの圧迫を防ぐなどのいくつかの変更を行ったことを知っています (MRv1 では、クラスター内のノードの最大数は約 4000 になる可能性があり、 MRv2 はこの数の 2 倍以上です)。また、MPI などの MapReduce 以外のフレームワークを実行する機能を提供することもわかっています。

ドキュメントから:

Application Master は従来の ResourceManager の機能の多くを提供するため、システム全体をより劇的に拡張できます。テストでは、最新のハードウェアで構成された 10,000 ノード クラスターを重大な問題なくシミュレートしました。

と:

すべてのアプリケーション フレームワーク固有のコードを ApplicationMaster に移動すると、システムが一般化され、MapReduce、MPI、グラフ処理などの複数のフレームワークをサポートできるようになります。

しかし、NameNode が単一障害点であり、新しいバージョンには高可用性モードを介したスタンバイ NameNode があるという事実にも対処したと思います (古い API と新しい API の機能を混同している可能性があります。 MRv1 対 MRv2 であり、それが私の質問の原因かもしれません):

Hadoop 2.0.0 より前は、NameNode は HDFS クラスターの単一障害点 (SPOF) でした。各クラスタには単一の NameNode があり、そのマシンまたはプロセスが使用できなくなった場合、NameNode が再起動されるか、別のマシンで起動されるまで、クラスタ全体が使用できなくなります。

では、3 つのうち 2 つを選択する必要がある場合、MRv2/YARN が対処するように設計されている 2 つの問題として機能する 2 つはどれでしょうか?

-JobTracker のリソース プレッシャー

-MPI など、MapReduce 以外のフレームワークを実行する機能。

- NameNode の単一障害点。

前もって感謝します!D

4

3 に答える 3

5

アプリケーション コンテナの起動とアプリケーション リソースの使用状況の監視を担当する MRv2/YARN デーモンはどれですか。

ResourceManager(RM) は、特定のジョブの ApplicationMaster(AM) を一度起動する責任があります。AM は、ジョブ リソース (コンテナー) のネゴシエーション、割り当て、および監視を行う AM の責任として起動されます。

MR1 と MR2 の両方でジョブ リソースがどのように割り当てられるかについての詳細な説明については、Hadoop Definitive Guide Ch6の MapReduce Job の解剖学を読むことをお勧めします。

MRv2/YARN が対処するように設計されている 2 つの問題はどれですか?

YARN は、MR1 の JobTracker の機能 (スケーリングのボトルネックであった) を独自の抽象化に分離しようとします。

  • クラスター リソース管理 - リソース マネージャー
  • アプリケーション ライフサイクル管理 - 特定のアプリケーション/ジョブのアプリケーション マスター

では、3 つのうち 2 つを選択する必要がある場合、MRv2/YARN が対処するように設計されている 2 つの問題として機能する 2 つはどれでしょうか?

-JobTracker のリソース プレッシャー

-MPI など、MapReduce 以外のフレームワークを実行する機能。

- NameNode の単一障害点。

3 つの回答のうち 2 つから、1 と 2 を選択します。

于 2015-01-13T05:48:58.317 に答える
0

上記の「ただし、ApplicationMaster コンテナは ResourceManager によって起動される」という意味を明確にするために、ResourceManager は NodeManager に Application Master Container を起動するように指示します。ApplicationMaster Container の実際の起動も NodeManager によって行われます

于 2015-08-26T10:28:44.797 に答える