最適化された大規模なデータ[]のMapReduceの(ii)の最適化

スローランニングMapReduceの理由(☆☆☆☆☆)

A、二つのことでのMapReduceプログラム効率のボトルネックの嘘:

1)コンピュータのパフォーマンス
CPU、メモリ、ディスクの健康状態、ネットワーク
2)I / Oの最適化操作
(1)データの傾き
(2)不当設定されているマップの数を減らす
(3)あまりにも長い待ち時間を減らす
)あまりにも多くの小さなファイルを(4
(5 )大多数のファイルブロックすることはできません
こぼさあまりにも頻繁に(6)
(7)倍の過剰な数をマージします。

二、MapReduceの最適化方法(☆☆☆☆☆)

1)データ入力:
(1)小さなファイルで:MRタスクの小さなファイルがマージを行う前に、小さな多数のファイルが増加し、マップタスクの多くを生成します
ので、ロードマップタスクの数が多いと、ロードの作業は時間がかかり、 MRが遅く実行するように導きます。
小さなファイルのシーン数のアドレス入力端への入力として(2)ConbinFileInputFormat。
2)ステージマッピング
パラメータsort.spill.percent io.sort.mbトリガの増加メモリ制限流出を調整することにより、:スピルの数を減らす(1)
それによって、ディスクIOを低減する、スピルの数を減少させます。
、マージの数を減らす、差し込み文書の数を増やす、パラメータを調整することによってio.sort.factor:(2)マージの数を減らす
、それによって処理時間を短縮するMR。
(3)I / Oを減少させる、組み合わせるマップ後に処理されます
3)相減らす
(1)地図の合理的なセットの数削減:両方を低く設定することができない、それはあまりにも設定することができません。少なすぎるような仕事につながることができ
、スタンバイ、処理時間、あまりにも多くのタスクがタイムアウトエラーを処理し、その結果、リソースの競合削減、インターマップにつながります。
(2)設定マップは、共存を低減:slowstart.completedmaps調整パラメータがある程度実行マップするために、低減
始め動作を、待ち時間の減少を減らします。
接続のための時間設定で大量のデータを消費するネットワークを減らすため、迂回の(3)の使用は、低減します。
Reduc端バッファ(4)合理的なセットは、デフォルトでは、データは、バッファ内のデータがディスクに書き込まれ、その後、ディスクからすべてのデータを取得低減され、閾値に達しました。すなわち、バッファ、直接educeに関連していない、中間のディスク書き込みの複数- >ディスクはこれに欠点があるため、データバッファの部分を減少させるために直接送達することができるように、パラメータによって構成されていてもよい、プロセスを読み取ります、それによって、IOオーバヘッドを低減:mapred.job.reduce.input.buffer.percentを、デフォルト値は0.0です。値が0より大きい場合には、データを保持する直接バッファメモリ読み出しの指定された割合を減らす示しました。したがって、バッファメモリを設定する必要性は、メモリがデータを読み取る必要があるだけでなく、ジョブの操作に応じて、メモリを計算するように調整されるように減らします。
4)IO送信
(1)時間IOネットワークを低減する、データ圧縮モードを使用します。インストールとlzopのスナッピー圧縮コーダ。
バイナリSequenceFileを用いて(2)
5)データスキューの問題は、
(1)データスキュー現象
データ周波数傾斜-一つの領域のデータ量が他の領域よりもはるかに大きいです。傾斜データサイズ-平均値の記録部のサイズよりもはるかに大きいです。
収集したデータに対して傾斜方法(2)
出力処理記録機能キーマップの追加詳細を減らします。

public static final String MAX_VALUES = "skew.maxvalues";
private int maxValueThreshold;
@Override
public void configure(JobConf job) {
maxValueThreshold = job.getInt(MAX_VALUES, 100);
}
@Override
public void reduce(Text key, Iterator<Text> values, OutputCollector<Text, Text> output, Reporter reporter) throws IOException {
	int i = 0;
	while (values.hasNext()) {
		values.next();
		i++;
	}
	if (++i > maxValueThreshold) {
		log.info("Received " + i + " values for key " + key);
	}
}

方法(3)は、データ削減に対して傾斜している
方法1:サンプリングをし、パーティショニングの範囲は
       、元のデータ・パーティション境界プリセット値の結果セットをサンプリングすることによって得ることができます。
方法2:カスタム分割
       さらなる代替サンプリング範囲の分割をし、背景が出力キーカスタムパーティショニングに基づいています。例えば、本からのマップ出力キー・ワードの場合。そのうちのほとんどは、ワード(ストップワード)を省略しなければなりません。それは例えば、固定ワードのこの部分の一部を省略するを低減分割カスタムに送信することができます。他の人が残っているに送信されますが、インスタンスを減らします。
方法3:結合
       結合多量の使用は、傾斜データのデータサイズと傾き頻度を低減することができます。可能では、
結合オブジェクトを集約し、データを減少させます。

6)一般的なパラメータチューニング
(1)資源関連パラメータ
       ()次のパラメータは効果(mapred-default.xmlの)を取ることができ、ユーザ独自のアプリケーションのMRの構成にある
ここに画像を挿入説明       糸の開始前に(B)は、サーバに配置されます効果(糸-default.xmlのに)取るために、設定ファイル
ここに画像を挿入説明       の重要なパラメータは、(c)は、パフォーマンスの最適化をシャッフル、良いスタート(mapred-default.xmlの)糸前に設定されなければならない
ここに画像を挿入説明
(2)フォールトトレラントパラメータ(MapReduceのパフォーマンスの最適化)
ここに画像を挿入説明

公開された334元の記事 ウォンの賞賛227 ・は 80000 +を見て

おすすめ

転載: blog.csdn.net/BeiisBei/article/details/104601853
おすすめ