Hadoop:MapReduceの最適化手法

MapReduceの最適化手法

MapReduce 最適化手法では、主にデータ入力、Map ステージ、Reduce ステージ、IO 送信、データ スキュー問題、一般的に使用されるチューニング パラメーターの 6 つの側面を考慮します。

データ入力

ここに画像の説明を挿入します

マップステージ

ここに画像の説明を挿入します

リデュースフェーズ

ここに画像の説明を挿入します
ここに画像の説明を挿入します

I/O传输

ここに画像の説明を挿入します

データの偏りの問題

ここに画像の説明を挿入します
ここに画像の説明を挿入します

よく使用されるチューニングパラメータ

1) リソース関連パラメーター
(1) 以下のパラメーターは、ユーザー自身の MR アプリケーション (mapred-default.xml) で設定することで有効になります。
設定パラメーター パラメーターの説明
mapreduce.map.memory.mb 使用できるリソースの上限MapTask によって使用されます (単位:MB)。デフォルトは 1024 です。MapTask によって実際に使用されるリソースの量がこの値を超えると、MapTask は強制的に強制終了されます。
mapreduce.reduce.memory.mb ReduceTaskで使用できるリソースの上限値(単位:MB)、デフォルトは1024です。ReduceTask によって実際に使用されるリソースの量がこの値を超えると、ReduceTask は強制的に強制終了されます。
mapreduce.map.cpu.vcores 各 MapTask が使用できる CPU コアの最大数 デフォルト値: 1
mapreduce.reduce.cpu.vcores 各 ReduceTask が使用できる CPU コアの最大数 デフォルト値: 1
mapreduce.reduce shuffle.Parallelcopies 各 Reduce がマップからデータをフェッチするために使用する並列コピーの数。デフォルト値は 5 です。
mapreduce.reduce.shuffle.merge.percent ディスクへの書き込みを開始するバッファ内のデータの割合。デフォルト値は 0.66 です。
mapreduce.reduce.shuffle.input.buffer.percent バッファ サイズは、Reduce の使用可能なメモリの割合を占めます。デフォルト値は 0.7 です
。mapreduce.reduce.input.buffer.percent は、バッファにデータを保存するために使用されるメモリの割合を指定します。デフォルト値は 0.0 です。

(2) YARN が有効になる前に、サーバー構成ファイル (yarn-default.xml) で構成する必要があります。
構成パラメーター パラメーターの説明
yarn.scheduler.minimum-allocation-mb アプリケーション コンテナーに割り当てられる最小メモリ、デフォルト値: 1024yarn.scheduler.maximum
-allocation-mb アプリケーションコンテナに割り当てられる最大メモリ、デフォルト値: 8192yarn.scheduler.minimum
-allocation-vcores 各コンテナに適用される CPU コアの最小数、デフォルト値: 1
yarn.scheduler.maximum-allocation-vcores 各コンテナに適用される CPU コアの最大数、デフォルト値: 32yarn.nodemanager.resource.memory-
mb コンテナに割り当てられる最大物理メモリ、デフォルト値: 8192

(3) シャッフル パフォーマンス最適化の主要パラメータは、YARN の開始前に設定する必要があります (mapred-default.xml)
設定パラメータ パラメータの説明
mapreduce.task.io.sort.mb シャッフル リング バッファ サイズ、デフォルト 100m
mapreduce.map .sort.spill .percent リング バッファ オーバーフローしきい値、デフォルトは 80%

2) フォールト トレランス関連パラメータ (MapReduce パフォーマンス最適化)
設定パラメータ パラメータの説明
mapreduce.map.maxattempts 各マップ タスクの最大再試行回数 この値を超えると、マップ タスクは失敗したとみなされます デフォルト値:4.
mapreduce.reduce.maxattempts 各 Reduce タスクの最大再試行回数。再試行回数がこの値を超えると、Map タスクは失敗したとみなされます。デフォルト値: 4。
mapreduce.task.timeout タスク タイムアウトは、多くの場合設定が必要なパラメータです。このパラメータの意味は次のとおりです: タスクが一定期間内にエントリを持たない場合、つまり、タスクは新しいデータを読み取ったり、出力したりしませんタスクがブロック状態にあると見なされます スタックしている可能性があります または、永久にスタックしている可能性があります ユーザプログラムが永久にブロックされて終了しないことを防ぐために、タイムアウト期間 (ミリ秒) が強制的に設定されますデフォルトは 600000 (10 分) です。プログラムが各入力データを処理するのに時間がかかりすぎる場合 (たとえば、データベースにアクセスしたり、ネットワーク経由でデータを取得したりするなど)、このパラメーターを増やすことをお勧めします。パラメーターが小さすぎると、次のエラー メッセージが表示されます。多くの場合、「AttemptID:attempt_14267829456721_123456_m_000224_0 Timed out after 300 secsContainer Killed by the ApplicationMaster.」というメッセージが表示されます。

おすすめ

転載: blog.csdn.net/weixin_45427648/article/details/131817171