2016-03-27 14 views
2

私はHDFSへのジョブ投入とHadoopの中YARNアーキテクチャに関する質問のカップルを持っていた:YARNとHadoopの

だから、Hadoopのエコシステムで使用すると、保存データ、任意の数のノードを含めることができ、各クラスタに1人の名前ノードを持っていますあなたのデータ。 Hadoopにジョブをサブミットすると、NameNode上のジョブトラッカーは各ジョブを選択し、それをデータノード上のファイルが存在するタスクトラッカーに割り当てます。

私の質問は、HDFSでYARNのコンポーネントがどのように連携して動作するかです。

したがって、YARNはNodeManagerとResource Managerで構成されています。これらの2つのコンポーネントのうち、NodeManagerはすべてのDataNodeで実行され、ResourceManagerは各クラスタのNameNodeで実行されますか?したがって、(各DataNode内の)タスクトラッカーが(NameNode内の)ジョブトラッカーからタスクを割り当てられると、特定のデータノード内のNodeManagerは、NameNodeのResourceManagerからリソースを要求するコンテナを作成します。したがって、このリソースマネージャーとノードマネージャーは、データノードのタスクトラッカーがNameNodeのジョブトラッカーからジョブを取得したときに機能します。NodeManagerは、ResourceManagerにジョブの実行リソースを要求します。これは正しいです?

答えて

3

あなたは部分的に正しいです。 YARNは、スケジューリングと監視の両方を行うJobtrackerの負担を避けるために絵に描かれました。だからヤーンでは、あなたはジョブトラッカーやタスクトラッカーを持っていません。 Job Trackerで実行されたジョブは、スケジューラ(アプリケーションへのリソースの割り当て)とApplicationsManager(ジョブの送信を受け入れ、障害発生時にApplicationMasterを再起動する)の2つの主要コンポーネントを持つResource Managerによって実行されます。各アプリケーションには、アプリケーションを実行するスケジューラからコンテナ(ジョブが実行される)をネゴシエートするApplicationMasterがあります。

Nodemanagerはすべてのスレーブノード/データノードで動作します。リソースマネージャは、namenodeが存在する場所にインストールされていても、インストールされていなくてもかまいません。大規模なクラスタの場合、通常はマスターを分離する必要があり、負荷は1台のマシンには流れません。

+1

こんにちはVignesh、これははっきりしています! JobTrackerやTaskTrackerがなくても、ResourceManagerはすべてのジョブ "配布"を処理し、各DataNode上のNodeManagerと通信して、そのDataNodeに "タスク"を実行するためのリソースとコンテナを割り当てることができるかどうかを確認します。クライアントがHDFSにジョブを送信すると、まずResourceManagerまたはNameNodeと通信しますか?まずNameNodeがそのメタデータの使用にしかアクセスできないHDFS上にファイルが存在する場所を特定する必要があるでしょうか? – LP45

+1

いいえ、ネームノードのヘルプは必要ありません。入力分割の計算は、クライアント側のJobまたはJobSubmitterによって行われ、分割はHDFSに配置されます(RMはメタデータを必要としません)。これは、Resource Managerがアプリケーションの送信依頼を受け取る前に行われます。 –

+0

これは、ジョブをHDFSに送信する(HDFSから読み込む)ときにNameNodeと対話して、どのファイルがどのDataNodeに残っているかを把握することを意味します。 – LP45

関連する問題