HADOOP — сокращение зависаний фазы при простом задании MR

Вот простая работа по уменьшению карты. Первоначально это просто простой способ копирования файлов из входного каталога в выходной каталог. Фаза карты завершается, но фаза редукции просто зависает. Что я делаю неправильно? Это небольшое количество кода, вот и вся работа:

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
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;

public class MapDemo {

    public static class Map extends Mapper<Object, Text, Text, NullWritable> {
        private Text word = new Text();
        public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
            String line = value.toString();
            word.set(line);
            context.write(word, NullWritable.get());
        }
    }

    public static class Reduce extends Reducer<Text, NullWritable, Text, NullWritable> {
        public void reduce(Text key, Iterable<NullWritable> values, Context context) throws IOException, InterruptedException {
            context.write(key, NullWritable.get());
        }
    }

    public static void main(String[] args) throws Exception {
        Configuration configuration = new Configuration();
        Job job = new Job(configuration, "MapDemo");
        job.setJarByClass(WordCount.class);
        job.setMapperClass(Map.class);
        job.setReducerClass(Reduce.class);
        job.setNumReduceTasks(10);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(NullWritable.class);
        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }

}

Он выполняется до сих пор, а затем просто зависает:

$ hadoop jar target/map-demo.jar /Users/dwilliams/input /Users/dwilliams/output
2013-09-16 11:51:19.131 java[6041:1703] Unable to load realm info from SCDynamicStore
13/09/16 11:51:19 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
13/09/16 11:51:19 INFO input.FileInputFormat: Total input paths to process : 1
13/09/16 11:51:19 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
13/09/16 11:51:19 WARN snappy.LoadSnappy: Snappy native library not loaded
13/09/16 11:51:19 INFO mapred.JobClient: Running job: job_201309150844_0012
13/09/16 11:51:20 INFO mapred.JobClient:  map 0% reduce 0%
13/09/16 11:51:25 INFO mapred.JobClient:  map 100% reduce 0%
... then nothing

Что здесь не так? Как это исправить?


person David Williams    schedule 16.09.2013    source источник
comment
Было бы полезно, если бы вы могли поделиться журналами TaskTracker, так как этому может быть n причин.   -  person Tariq    schedule 16.09.2013
comment
Не подскажете, где это может быть?   -  person David Williams    schedule 16.09.2013
comment
Конечно, внутри $HADOOP_HOME/logs (если вы не изменили расположение журналов по умолчанию). Мне нужно содержимое файла вида hadoop-dontariq-tasktracker-BANL119158415.local.log   -  person Tariq    schedule 16.09.2013
comment
Я переформулировал свой узел имени, и это сработало. Да!   -  person David Williams    schedule 17.09.2013
comment
Хм… не очень удачное решение… что, если вы работаете в производственном кластере?   -  person Tariq    schedule 17.09.2013
comment
Я знаю, но сейчас у меня нет логов, чтобы показать вам :(   -  person David Williams    schedule 17.09.2013
comment
Не ошибка. Продолжай халупить :)   -  person Tariq    schedule 17.09.2013


Ответы (2)


Требуется переформатировать namenode и перезапустить демоны. Это было на моем Mac OSX, вероятно, из-за сна.

person David Williams    schedule 23.09.2013
comment
Здравствуйте, @David Williams. Вы нашли точную причину проблемы? Я никогда не сталкивался с этим на своем Mac. Дайте мне знать, если вы найдете что-то необычное. Спасибо. - person Tariq; 26.09.2013
comment
Привет Тарик, спасибо за проверку. У меня еще не было времени, но я заметил одну вещь: когда у меня есть псевдораспределенный кластер 1 на моем Mac OSX, он периодически просто выходит из строя способами, которые я не понимаю, и я думаю, что это связано со сном, энергосбережением. и т.д., вещи, которые не происходят на реальном сервере. Сталкивались ли вы с подобными вещами? - person David Williams; 30.09.2013
comment
Привет Дэвид. Спасибо за ответ. Моя коробка работает непрерывно [по крайней мере, когда на ней что-то работает;)], поэтому никогда не сталкивалась с проблемами из-за настроек питания. Я проверю это один раз и посмотрю, так ли это. - person Tariq; 01.10.2013
comment
Это действительно помогло бы и проголосовало бы за это, если бы вы дали код для переформатирования/перезапуска здесь - person Andy Hayden; 16.11.2013
comment
Для уверенности. $ $HADOOP_HOME/bin/stop-all.sh, затем $ $HADOOP_HOME/bin/hadoop namenode -format, а затем $ $HADOOP_HOME/bin/start-all.sh. Однако это разрушительно, поэтому используйте его только в крайнем случае. - person David Williams; 19.11.2013
comment
У меня есть небольшой пост в блоге о настройке карт и демонстрации на MAC OSX, если это полезно asciirain.com/wordpress/2013/10/03/ - person David Williams; 19.11.2013
comment
@DavidWilliams Привет, Дэвид, я столкнулся с точно такой же проблемой с hadoop 1.2.1, и я попытался переформатировать namenode и перезапустить демонов, но у меня это не работает. У меня OS X Yosemite. - person sattu; 08.12.2015

Моя проблема была в памяти. Я использовал VirtualBox и использовал память 512 МБ по умолчанию. После увеличения памяти до 2G все заработало.

person Chaviv Perlman    schedule 24.11.2014