1

mapreduce と hadoop は初めてです。mapreduce の例と設計パターンを読みました...

わかりました、ポイントに来ます.私たちは、システムを監視し、5 秒ごとに定期的に CPU 使用率をキャプチャするソフトウェアを開発しています。また、過去 12 時間、先週などの CPU 使用率など、さまざまな期間のシステムの使用率グラフをプロットします。これには Oracle データベースを使用していました。そして現在、hadoop への移行を計画しています。

次のように mapreduce の設計について話し合い、提案しました。

2 つの mapreduce ジョブを実行する必要があります

最初の仕事:

すべてのシステムの永続化されたデータを収集し、それらをシステムの ID でグループ化 (削減) すると、次のように出力されます。

pc-1 : [ list of recorded cpu useges (in every 5 sec) ]

そして、これは次の仕事に渡されます

2番目のジョブ:

入力は次のとおりです: [システムの記録された CPU 使用量 (5 秒ごと) のリスト]

次に、このジョブはこのデータをグループ化し、次のような出力形式に減らします。


last 12 hrs : 20%(average)
last 24 hrs : 28%(average)
last week   : 10%(average) ....

出来ますか。または私たちの考えが間違っている..助けてください...

4

2 に答える 2

1

必要な作業は 1 つだけです。Map タスクが出力します - キー: システム ID、値: cpu-usage、日付。

Reduce タスクは、システム ID ごとに、要求された各時間範囲の平均を出力します。

Map の出力値は、Writeable から継承したカスタム クラスになります。

あなたは正確な例を提供しませんでしたが、そのようなもの:

地図:

proctected void map(LongWritable key, Text value, Context context) {
    String[] fields = value.split("\t");
    output.set(Integer.parseInt(fields[1]));
    context.write(new Text(fields[0]), new Details(fields[1],fields[2]));
}

減らす:

DoubleWritable average = new DoubleWritable();
protected void reduce(Text key, Iterable<Details> values, Context context) {
    int[] sums = new int{0,0,0........};
    int[] counts = new int{0,0,0.........};
    int sum = 0;
    int count = 0;
    for(IntWritable value : values) {
      //for last 24 hours
        //if value is of last day........
        sums[0] += value.get();
        counts[0]++;
     //for last week
       //if value is of last week........
        sums[1] += value.get();
        counts[1]++;
     }
    //for last 24 hours
    average.set(sums[0] / (double) counts[0]);
    context.Write(key, average);
    //for last week        
    average.set(sums[1] / (double) counts[1]);
    context.Write(key, average);
    //............
}
于 2013-10-30T07:37:11.177 に答える
0

2 つの別々の MR タスクは必要ありません。

氏の仕事:

MAP フェーズ出力 - 出力 {'system Id' , [CPU 使用率のリスト]}

レデューサー フェーズ - 平均およびその他の情報を計算します。

サンプル入力データを提供できる場合は、より詳細なキーと値のペアの説明を提供できます。

この種の監視作業を行う Nagios のようなシステムを使用しないのはなぜですか?

于 2013-10-30T07:42:42.727 に答える