blog

Hadoop MapReduceの2つの一般的なフォールトトレランスのシナリオ分析

この記事では、我々は、HadoopのMapReduceの2つの一般的なフォールトトレランスシナリオを分析する最初のジョブのタスクがブロックされ、それらを解放することなく、長い時間のリソースを占有するこ...

Apr 21, 2017 · 3 min. read
シェア

この記事では、Hadoop MapReduceでよくある2つのフォールトトレランスシナリオを分析します。もう1つは、ジョブのすべてのMapタスクが実行し終わった後、Reduceタスクの実行プロセス中に、Mapタスクが配置されているノードがハングアップしたり、Mapタスクの結果保存ディスクが破損したりした場合です。

***シナリオ:あるタスクが、リソースを解放することなく、長時間リソースを占有しています。

このシナリオは通常、ソフトウェアのバグやデータの特異性などが原因で発生し、 プログラムがブロックされ、タスクが停止したまま実行されることがあります。外部からは、タスクがブロックされているように見えます。タスクが長い間リソースを占有したが、使用されていないため、このようなことがしばしば発生し、リソースの使用率が低下し、システムは良くないので、Hadoop MapReduceは、このような状況に遭遇したどのように対処するのですか?

タスクトラッカーでは、各タスクが定期的に新しい進捗状況をタスクトラッカーに報告し、タスクトラッカーはさらにジョブトラッカーに報告します。タスクがブロックされると、そのタスクの進捗状況は停滞し、タスクトラッカーに進捗状況が報告されなくなるため、タイムアウト制限に達する必要があります。タスクトラッカーはタスクを終了し、タスクのステータスをジョブトラッカーに報告します。

実用的なアプリケーションのシナリオでは、データベースを読み込む Map タスクや、他の外部システムに接続する必要があるタスクなど、タスクの読み込みや出力が長期間行われない通常のジョブがあります。 このようなアプリケーションでは、Mapper や Reducer を記述する際に、Reporter コンポーネントを通じて定期的に TaskTracker にハートビートを報告する追加のスレッドを起動する必要があります。このタイプのアプリケーションでは

2つ目のシナリオ:ジョブのすべてのマップタスクが実行された後、Reduceタスク中にマップタスクが配置されているノードがハングアップしたり、マップ結果のストレージディスクが破損したりした場合、どのように対処すればよいでしょうか?

このシナリオはより複雑であり、別途議論する必要があります。

ノードがハングアップした場合、ジョブトラッカーはハートビート機構を通じてタスクトラッカーが停止したことを認識し、実行中のタスクと実行中のジョブで実行が終了したマップタスクのスケジュールを再スケジュールします。

ノードがハングアップしておらず、マップ・タスクの結果を保存しているディスクだけが破損している場合、2つのシナリオが考えられます:

すべてのリデュース・タスクがシャッフル・フェーズを完了

シャッフル・フェーズを完了していないReduceタスクがまだいくつかあり、Mapタスクを読み込む必要があります。

については、全てのReduceタスクが順調に実行されれば、既に完了まで実行されたMapタスクの処理を行う必要はありませんし、一定時間経過後に一部のReduceタスクが実行に失敗しても、2番目のケースと同様に処理されます。

2つ目のケースとして、Reduceタスクが実行を終了したMapタスクの結果をリモートで読み込む際、何度も読み込みを試み、その回数がある上限を超えた場合、Mapタスクの結果が破損していることを、ReduceタスクのあるTaskTrackerに伝え、TaskTrackerはさらにRPC経由でJobTrackerに結果が破損していることを伝えます。ジョブトラッカーはこのメッセージを受信すると、マップタスクのスケジュールを組み直し、生成された結果を再計算します。

ここで、noFailedFetchesはMAX{10, numMaps/30}の値をとります。つまり、マップタスクの数が300の場合、マップタスクの結果が破損していることを見つけるために10回試行する必要があり、試行の時間間隔はそれぞれ10秒、13秒、21秒、28秒、28秒です。numMaps/30}、つまりマップタスクの数が300の場合、マップタスクの結果が破損していることを発見するために10回試行する必要があり、試行の時間間隔は10s、13s、21s、28s、37s、48s、62s、81s、106sとなり、発見するのに非常に時間がかかり、マップタスクの数が多いほど発見時間が遅くなります。マップタスクの数が多ければ多いほど、発見時間は遅くなります。ジョブタスクの数が多ければ多いほど、この問題が発生する可能性が高くなるため、通常はここをチューニングする必要があります。

、すべてのタスクがMRAppMasterと直接対話し、中間層などのTaskTrackerに似ている必要はありませんが、全体のプロセスは、上記のプロセスに似ている、我々はここで繰り返さない、あなたは本を読むことができます"Hadoopテクノロジーインサイダー:YARNのアーキテクチャ設計と実装の原則の詳細な分析"第8章オフラインコンピューティングフレームワークMapReduceの"。

Read next

「Huawei Elastic Compute Cloudの概要

ファーウェイの "Elastic "コンピューティングクラウドサービスは、IaaSサービスの最下層、すなわちコンピュート、ストレージ、ネットワークリソースを統合することにより、オンデマンド、従量制、ワンストップのITコンピューティングリソースレンタルサービスを提供し、開発者やIT管理者が大規模でスケーラブルなITインフラリソースを1回限りの投資なしで迅速に展開、管理できるようにします。スケーラブルなITインフラリソース

Apr 14, 2017 · 2 min read