2016-11-30 2 views
0

私はマッパーが常にマップ操作のカップルを実行し、リデューサーは常にリダクション操作のカップルを実行することを知っています。別の言い方をすれば、マッパー(減速器)とマップ(減速)操作との間のマッピングは1対多数である。
私はtasktrackerとmapperの間のマッピングが1対1または1対多のマッピングかどうか質問します。ハントープのマッパーまたはレデューサーに対応するタスクトラッカーですか?

答えて

2

まず第一に、私は、タスクトラッカーはまさにあなたに説明します:

A TaskTrackerは、タスクを受け入れ、クラスタ内のノードである - 地図、 は、業務を削減し、シャッフル - JobTrackerから。

すべてのTaskTrackerには一連のスロットが設定されています。これらは、受け入れることができるタスクの数を示します。 JobTrackerがMapReduce操作内でタスクをスケジュールする場所を見つけようとすると、データを含むDataNodeをホストする同じサーバー上の空のスロットが最初に検索され、見つからない場合は空のスロットが検索されます。同じラック。

TaskTrackerは実際の作業を行うために別々のJVMプロセスを生成します。これは、プロセス障害がタスク・トラッカーを停止させないようにするためです。 TaskTrackerはこれらの生成されたプロセスを監視し、出力コードと終了コードをキャプチャします。プロセスが正常に終了すると、トラッカーはJobTrackerに通知します。また、JobTrackerは、JobTrackerに、通常数分おきにハートビートメッセージを送信し、JobTrackerがまだ生きていることを確認します。これらのメッセージはJobTrackerに利用可能なスロット数を通知するので、JobTrackerはクラスタワーク内のどこに委任できるかを最新の状態に保つことができます。

はい、これは(実際の仕事はすなわち、マップタスクを減らす)ジョブトラッカーで多くの操作を行う一つのタスクトラッカーという点に私たちをリードし、ので、あなたの質問にお答えすることは

1(ジョブトラッカー)になります多くの(タスクトラッカー)関係

1

最後の行は正しくありません。

訂正:クラスタ内のDataNodeごとに1つのタスクトラッカーがあり、クラスタ内のNameNodeごとに1つのジョブトラッカーしかありません。これはMRV1(非YARN)Hadoopクラスター(Hadoop 1)バツ)。

0

In mapreduce - マッパーの数は、入力スプリットの数によって異なります。

、キューに実行される

場合に複数存在する場合、入力は、単一のノード-(データ局所性最適化の通り)分割内側分割データノードごとに1つのタスクトラッカーが存在するであろう対応するマシンのJVM(デフォルトでは、操作を実行するノードあたり2つのJVMがあります)。

上記のシナリオを考慮すると、タスクトラッカーとMAPPERのマッピングは1対多にマッピングされます。

関連する問題