どのようにHadoopの治療失敗タスク(復刻版)の記録-MapReduce

1.1ブロックされたタスクを動作し、長期間の職業は、リソースを解放しません。

1.2 MapTaskタスクは、プロセスReduceTask動作を実行して終了した、ノードMapTaskはハングアップ、または破壊されMapTaskディスクストレージの結果

進捗状況は同じレポートでない場合、彼らはタイムアウト制限に達すると、TaskTrackerは、タスクを再スケジュールするためには、タスク、および状態KILLED YARNへの報告のタスクを殺すようTaskTrackerでは、各タスクは定期的に、TaskTrackerの進捗に報告します。

ケース1:ノードがハングアップしている場合は、JobTrackerハートビート・メカニズムは、TaskTrackerはすでに終了して実行MapTaskを再実行しているタスクのスケジューリングをし、ジョブを実行する前に、死んだ知っています

ケース2:ノードのみMapTask損傷したディスクの結果を格納にリンクされていない場合には、二つの可能性

#ReduceTask全てのフェーズが完了しているシャッフル

#いくつかのReduceTask完了していないシャッフルステージがありますが、あなたはタスクMapTaskを読む必要があります

以降mapreduce.reduce.java.opts = -Xmx5000mタスクを調整することによって実行されます。これは、4Gのメモリをシャッフルすることです

パラメータ調整
mapreduce.reduce.shuffle.merge.percentを= 0.4
mapreduce.reduce.shuffle.parallelcopiesの= 5
mapreduce.reduce.shuffle.input.buffer.percent = 0.6
mapreduce.reduce.shuffle.memory.limit.percent = 0.17
シャッフルメモリの4Gに任意の自然。shuffle.memory.limit.percentが役割を果たしていない感じます

物理メモリ・オーバーフローした場合、パラメータを調整する必要がmapreduce.reduce.memory.mb、デフォルトは1024です、

仮想メモリのオーバーフローが、yarn.nodemanager.vmem-PMEM比を調整する必要がある場合は、デフォルトでは、あなたが大規模な転送することができ、2.1であります

仮想メモリが限定されるものではなく、直接、すなわち(糸-site.xmlには、デフォルトはtrueにある)falseに設定されているyarn.nodemanager.vmemチェックが有効になって、

物理メモリは、(デフォルトはtrue)falseにyarn.nodemanager.pmemチェックが有効になってセットをチェックしない場合があります。

100Gの各処理についてのデータが、プログラムが実行されているが、CPUの使用率がタスクの終了までに100%に達する可能性があり、メモリ使用量が最大に達していません。NodeMangagerマシンでは、jpsを表示するコマンドを使用し、あなたはどうか、CPU使用率の低減を達成するために、YarnChildプロセスの数を減らすために、設定ファイルを変更することで、8つのYarnChildプロセスがあります。

 

1あなたはパラメータ指定mapreduce.map.cpu.vcoresとmapreduce.reduce.cpu.vcoresを使用できるように、リソースのスケジューリング機能、複数の種類を設定する、などfairscheduler、容量のスケジューラとして、マルチテナント型リソーススケジューラを使用することで、いくつかの方法がありますが、各タスクのCPU使用の数は、デフォルトでは、タスクパラメータmapreduce.map.memory.mbとmapreduce.reduce.memory.mb、還元によりメモリ使用量を増やすことができる唯一のメモリスケジューラをサポートし、デフォルトでは、1、その他でありますノード上の同時タスク数

この設定項目yarn.nodemanager.resource.memory-MBを設定する場合は、大きい方の値を変更するか、直接デフォルトで、その後、必要に応じて調整します


時間のNMR期間があれば、タスクからの質問に懸濁した理由は、その進捗状況報告書の中に受信されていない(デフォルトは10分で、ミリ秒単位で、mapred.task.timeoutプロパティの値によって設定することができます)、それにマークを付けます失敗します

###########################################

MapReduceの最適化
の最適化(1)リソースパラメータ:
以下のパラメータが効果を取ることができます彼らのMapReduceアプリケーションで設定されています

mapreduce.map.memory.mb:(単位:MB)を使用することができるマップ作業メモリーキャップ、デフォルトは1024です。リソースマップタスク実際の使用量がこの値を超えた場合、殺すために強制されます。
mapreduce.reduce.memory.mb:(単位:MB)を使用することができるタスクのリソース制限を減らし、デフォルトは、1024です。リソースの実際の使用量は、タスクがこの値を超える下げた場合、殺すために強制されます。
mapreduce.map.cpu.vcores:利用可能な、デフォルト値:. 1の各CPUコアMaptask最大数
のCPUコアデフォルトを使用して各Reducetask番号:. 1:mapreduce.reduce.cpu.vcores
mapreduce.map.java.opts:地図タスクJVMパラメータ、この例では、デフォルトのJavaヒープサイズやその他のパラメータを設定できます。「 - Xmx1024m -verbose:gcを-Xloggc:/tmp/@[email protected]」 
(@のtaskIdのHadoopフレームワーク@は、ラップされます対応のtaskId)は、デフォルト値:「」
mapreduce.reduce.java.opts:タスクJVM引数を減らして、あなたはこの例では、デフォルトのJavaヒープサイズやその他のパラメータを設定できます。「 - Xmx1024mは、-verbose:gcを-Xloggcを : /tmp/@[email protected]「デフォルト:」 "
を有効にするには、コンフィギュレーションサーバの設定ファイルに糸の前に開始する必要があります

デフォルトでMB 1024内の各容器内の最小構成yarn.scheduler.minimum割り当てMBのRM要求、。
MB、デフォルトでは8192で最大分布各容器内yarn.scheduler.maximum割り当てMBのRM要求、。
vcores。1-割当yarn.scheduler.minimum
yarn.scheduler.maximum-割当vcores 32
yarn.nodemanager.resource.memory-MBは、そのノード糸に使用可能な物理メモリの総量を表し、デフォルトは8192(MB)であり、注目あなたのノードに十分なメモリリソース8ギガバイトでない場合は、インテリジェントではない物理メモリの合計検出ノードYARNながら、あなたは、小さな値をTiaojianする必要があります。
主要なパラメータのパフォーマンスの最適化をシャッフルし、それが前に糸を開始するように設定する必要があります

円形のバッファサイズmapreduce.task.io.sort.mb 100シャッフルデフォルトの100メートルの
閾値は0.8リングバッファオーバーフロー、80%デフォルトmapreduce.map.sort.spill.percent

最適化は、(2)フォールトトレラントパラメータ:
mapreduce.map.maxattempts:パラメータがこの値を超えると、各マップタスクリトライ回数の最大数は、デフォルトマップタスクが失敗したと見なされ、再試行:4。

mapreduce.reduce.maxattempts:パラメータがこの値を超えると、各タスクを再試行削減最大回数は、デフォルト、地図タスクが失敗したとみなされ、再試行:4。

mapreduce.map.failures.maxpercent:不良率がこの値を超えたときにマップ作業はジョブ全体が失敗し、失敗した場合、デフォルト値は0です。アプリケーションは、あなたが入力されたデータの一部を破棄することができます場合は、値が0よりも大きい設定されています(リトライ回数は、マップタスクmapreduce.map.maxattemptsを超えた場合、対応する入力データは、任意の結果が得られないであろう、マップタスクが失敗したとみなされる)地図タスク失敗の5%未満である場合、値は、5は、例えば、それが示し、成功したと見なさジョブ全体を投げます。

mapreduce.reduce.failures.maxpercent:不良率がこの値を超えると、タスクが失敗したの削減、ジョブ全体が失敗し、デフォルト値は0です。

mapreduce.task.timeout:タスクは、新しいデータを読んでいないだろうこと、任意の時点で入力しない場合、出力データが存在しないブロック状態のタスクと考えられている、おそらく永遠に、一時的に貼り付けてもよいが立ち往生されます。ユーザーは決してブロックをプログラムを終了しませんので、防ぐために、その後のタイムアウト(ミリ秒)を設定することを強制、デフォルトは0 600,000値はタイムアウトが無効です。

最適化(3)安定性パラメータ(投機的実行タスク)との効率を:
ストラグル(落伍者)は、これらのタスクの非常にゆっくりと、しかし最終的には正常に完了したことを実行しています。地図取り残さタスクは、タスクを削減し始め防ぐことができます。

Hadoopのが、自動的に正しいタスクが残さない、それはこれらのタスクが遅い実行を識別することができ、それが最初に完了し、この時点で別のタスクが要求されますを使用して、タスクをバックアップタスクなどの他のと同等の結果を生成します実行を停止します。この技術は、投機的実行(投機的実行)と呼ばれています。

投機的実行をデフォルト。
プロパティの説明は、
投機実行制御タスクの地図mapreduce.map.speculative(デフォルト真)
投機的実行mapreduce.reduce.speculative制御タスク(デフォルトtrue)を削減する
タスクの合計数のmapreduce.job.speculative.speculativecapタスク投機実行機能をすることができます比(0.1デフォルトの範囲1〜0)
mapreduce.job.speculative.slownodethreshold TaskTrackerタスク投機(デフォルト1)のためのタスクの開始か否かを判断
mapreduce.job.speculative.slowtaskthresholdタスクはタスクが投機的に開始することができるかどうかを決定します(デフォルト1)
スライスmapreduce.input.fileinputformat.split.minsizeの最小サイズはスライスし、デフォルトの1を行うFileInputFormat。

mapreduce.input.fileinputformat.split.maxsize FileInputFormat最大サイズのスライススライスしたこと

 

おすすめ

転載: www.cnblogs.com/xinfang520/p/10994528.html