2011-12-21 10 views
2

Я запускаю одно простое приложение для приложений, которое собирает информацию из 64-мегабайтного файла, карта завершается быстро, примерно через 2-5 минут, а затем уменьшает и работает быстро до 16%, затем он просто остановился.бесконечный цикл для org.apache.hadoop.mapred.TaskTracker

Это выход программы

 
11/12/20 17:53:46 INFO input.FileInputFormat: Total input paths to process : 1 
11/12/20 17:53:46 INFO mapred.JobClient: Running job: job_201112201749_0001 
11/12/20 17:53:47 INFO mapred.JobClient: map 0% reduce 0% 
11/12/20 17:54:06 INFO mapred.JobClient: map 4% reduce 0% 
11/12/20 17:54:09 INFO mapred.JobClient: map 15% reduce 0% 
11/12/20 17:54:12 INFO mapred.JobClient: map 28% reduce 0% 
11/12/20 17:54:15 INFO mapred.JobClient: map 40% reduce 0% 
11/12/20 17:54:18 INFO mapred.JobClient: map 53% reduce 0% 
11/12/20 17:54:21 INFO mapred.JobClient: map 64% reduce 0% 
11/12/20 17:54:24 INFO mapred.JobClient: map 77% reduce 0% 
11/12/20 17:54:27 INFO mapred.JobClient: map 89% reduce 0% 
11/12/20 17:54:30 INFO mapred.JobClient: map 98% reduce 0% 
11/12/20 17:54:33 INFO mapred.JobClient: map 100% reduce 0% 
11/12/20 17:54:54 INFO mapred.JobClient: map 100% reduce 8% 
11/12/20 17:54:57 INFO mapred.JobClient: map 100% reduce 16% 

В журнале узла данных, я вижу тонны того же сообщения снова и снова, следующий есть начинается,

 
2011-12-20 17:54:51,353 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201112201749_0001_r_000000_0 0.083333336% reduce > copy (1 of 4 at 9.01 MB/s) > 
2011-12-20 17:54:51,507 INFO org.apache.hadoop.mapred.TaskTracker.clienttrace: src: 127.0.1.1:50060, dest: 127.0.0.1:44367, bytes: 75623263, op: MAPRED_SHUFFLE, cliID: attempt_201112201749_0001_m_000000_0, duration: 2161793492 
2011-12-20 17:54:54,389 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201112201749_0001_r_000000_0 0.16666667% reduce > copy (2 of 4 at 14.42 MB/s) > 
2011-12-20 17:54:57,433 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201112201749_0001_r_000000_0 0.16666667% reduce > copy (2 of 4 at 14.42 MB/s) > 
2011-12-20 17:55:40,359 INFO org.mortbay.log: [email protected] JVM BUG(s) - injecting delay3 times 
2011-12-20 17:55:40,359 INFO org.mortbay.log: [email protected] JVM BUG(s) - recreating selector 3 times, canceled keys 72 times 
2011-12-20 17:57:51,518 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201112201749_0001_r_000000_0 0.16666667% reduce > copy (2 of 4 at 14.42 MB/s) > 
2011-12-20 17:57:57,536 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201112201749_0001_r_000000_0 0.16666667% reduce > copy (2 of 4 at 14.42 MB/s) > 
2011-12-20 17:58:03,554 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201112201749_0001_r_000000_0 0.16666667% reduce > copy (2 of 4 at 14.42 MB/s) > 

...

до

 
2011-12-20 17:54:51,353 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201112201749_0001_r_000000_0 0.083333336% reduce > copy (1 of 4 at 9.01 MB/s) > 
2011-12-20 17:54:51,507 INFO org.apache.hadoop.mapred.TaskTracker.clienttrace: src: 127.0.1.1:50060, dest: 127.0.0.1:44367, bytes: 75623263, op: MAPRED_SHUFFLE, cliID: attempt_201112201749_0001_m_000000_0, duration: 2161793492 
2011-12-20 17:54:54,389 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201112201749_0001_r_000000_0 0.16666667% reduce > copy (2 of 4 at 14.42 MB/s) > 
2011-12-20 17:54:57,433 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201112201749_0001_r_000000_0 0.16666667% reduce > copy (2 of 4 at 14.42 MB/s) > 
2011-12-20 17:55:40,359 INFO org.mortbay.log: [email protected] JVM BUG(s) - injecting delay3 times 
2011-12-20 17:55:40,359 INFO org.mortbay.log: [email protected] JVM BUG(s) - recreating selector 3 times, canceled keys 72 times 
2011-12-20 17:57:51,518 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201112201749_0001_r_000000_0 0.16666667% reduce > copy (2 of 4 at 14.42 MB/s) > 
2011-12-20 17:57:57,536 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201112201749_0001_r_000000_0 0.16666667% reduce > copy (2 of 4 at 14.42 MB/s) > 
2011-12-20 17:58:03,554 INFO org.apache.hadoop.mapred.TaskTracker: attempt_201112201749_0001_r_000000_0 0.16666667% reduce > copy (2 of 4 at 14.42 MB/s) > 

Вот код

package com.bluedolphin; 

import java.io.IOException; 
import java.util.Iterator; 

import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.io.LongWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Job; 
import org.apache.hadoop.mapreduce.Mapper; 
import org.apache.hadoop.mapreduce.Reducer; 
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; 
import org.apache.hadoop.util.GenericOptionsParser; 

public class MyJob { 
    private final static LongWritable one = new LongWritable(1); 
    private final static Text word = new Text(); 

    public static class MyMapClass extends Mapper<LongWritable, Text, Text, LongWritable> { 
     public void map(LongWritable key, 
        Text value, 
        Context context) throws IOException, InterruptedException { 
      String[] citation = value.toString().split(","); 
      word.set(citation[0]); 

      context.write(word, one); 
     } 
    } 

    public static class MyReducer extends Reducer<Text, LongWritable, Text, LongWritable> { 
     private LongWritable result = new LongWritable(); 
     public void reduce(
       Text key, 
       Iterator<LongWritable> values, 
       Context context) throws IOException, InterruptedException { 
      int sum = 0; 

      while (values.hasNext()) { 
       sum += values.next().get(); 
      } 
      result.set(sum); 
      context.write(key, result); 
     } 
    } 


    public static void main(String[] args) throws Exception { 
      Configuration conf = new Configuration(); 
      String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); 
      if (otherArgs.length != 2) { 
       System.err.println("Usage: myjob <in> <out>"); 
       System.exit(2); 
      } 
      Job job = new Job(conf, "patent citation"); 
      job.setJarByClass(MyJob.class); 
      job.setMapperClass(MyMapClass.class); 
      // job.setCombinerClass(MyReducer.class); 
      // job.setReducerClass(MyReducer.class); 
      job.setNumReduceTasks(0); 
      job.setMapOutputKeyClass(Text.class); 
      job.setMapOutputValueClass(LongWritable.class); 

      job.setOutputKeyClass(Text.class); 
      job.setOutputValueClass(LongWritable.class); 

      FileInputFormat.addInputPath(job, new Path(otherArgs[0])); 
      FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); 
      System.exit(job.waitForCompletion(true) ? 0 : 1); 
      } 

} 

Я не знаю, как продолжить поиск неисправностей.

Спасибо в advace.

+0

Похоже, что редукторы ломаются в фазе случайного перетасовки и сортировки. Было бы лучше, если бы вы могли узнать, какую пару ключевых значений выбрали ваши картографы. –

+0

Ехает ли процессор? –

+0

Я загрузил код. Редуктор действительно прост, я не вижу, чтобы он мог иметь бесконечный цикл. И использование процессора кажется прекрасным, я мог бы выполнять другие работы, такие как просмотр или даже установку и тестирование mahout без какого-либо медленного движения. – BlueDolphin

ответ

1

Я выяснил решение, в методе сокращения метода, я должен был использовать Iterable, а не Iterator. Из-за этого метод сокращения фактически не вызывался. Теперь он отлично работает, но я не знаю внутренней причины, по которой он висел раньше.

0

Возьмите 5 минут и проверить следующие вещи:

  1. ли код редуктора собирается когда-нибудь заканчивается цикл

  2. Что сделал Mapper излучающий? или, другими словами, что привело к получению пар?

Мы можем собирать промежуточные (M/R) выход, иди сюда Hadoop MapReduce intermediate output

+0

Я форматирую namenode, перезагрузил машину и перезапустил все, и попытался запустить снова. Застрял снова. Непосредственный файл журнала кажется пустым, только conf.xml. – BlueDolphin

+0

Эй, я хочу посмотреть ваш код. В соответствии с приведенными выше и ниже комментариями я видел, что вы уже загрузили код. Но, я новичок в stackov, если вы укажете, я получу его от thier. Кроме того, вы можете загружать образцы своих данных. Чтобы я мог проверить свой кластер. –

+0

Я обновил файл java. В настоящее время это только карта, отлично работает. раскомментируйте комбайн и уменьшите, и прокомментируйте строку setNumReduceTask, станет программой map/reduce. Данные: http://www.nber.org/patents/Cite75_99.zip, разархивируйте его в текстовый файл. – BlueDolphin

0

Пару вещей я заметил в вашем коде:

Поскольку вы обновляете текстовый объект «слово» в map и LongWritable «result» в сокращении для каждого вызова для сопоставления и сокращения соответственно, вы, вероятно, не должны объявлять их окончательными (хотя я не вижу в этом проблему как проблему, так как объекты изменяют только состояние).

Ваш код похож на тривиальное число слов, разница только в том, что вы просто эмулируете одно значение за запись на карте. Вы могли бы просто устранить сокращение (т. Е. Выполнить задание только для карты) и посмотреть, получаете ли вы от того, что вы ожидаете от карты.

+0

Я прокомментировал окончательный результат, как вы сказали, я не думаю, что это важно. Затем я прокомментировал job.setCombinerClass (MyReducer.class); и job.setReducerClass (MyReducer.class); Кажется, работа имеет свой собственный класс сокращения. Так или иначе, он все еще застревает на 16% при сокращении. – BlueDolphin

+0

На карте только работа, редуктор не должен даже запускаться. Попробуйте установить «job.setNumReduceTasks (0);» , Это явно устанавливает количество редукторов равным 0. Если вы все еще получите эту ошибку, я бы посоветовал вам привести пример вашей заявки. –

+0

Я установил job.setNumReduceTasks (0), затем только работа с картами, и она завершается успешно. Данные представляют собой выборочные данные http://www.nber.org/patents/Cite75_99.zip, извлечение в текстовый файл. Я заметил, что после зависания, а затем в следующий раз, когда я остановлюсь, и все начнется, номенем не начнется. Я должен сделать hasoop namenode -format, чтобы он снова работал. У меня есть два узла данных, один главный узел. Я также обновил код. – BlueDolphin

0

У меня также была эта бесконечная петля во время работы по сокращению. После борьбы за день решение оказывается отредактированным файлом/etc/hosts.

Кажется, что существование записи «127.0.1.1 your_Machine's_Name» смутило Hadoop. Одним из доказательств этого может быть неспособность получить доступ к подчиненному устройству: 50060, taskTracker на подчиненной машине, с главной машины.

До тех пор, пока эта запись «127.0.1.1 your_machine's_name» удалена и добавьте «your_machine's_name» в конце записи «127.0.0.1 localhost», моя проблема исчезла.

Надеюсь, это замечание может быть полезно.

Смежные вопросы