Могут быть две проблемы, которые я обрисую ниже.Я также хотел бы отметить, что это очень распространенный вопрос, и вы должны посмотреть на ранее заданные вопросы Hadoop.
Ваш mapred.tasktracker.map.tasks.maximum
может быть установлен на низком уровне conf/mapred-site.xml
.Это будет проблемой, если при проверке JobTracker вы увидите несколько незавершенных задач, но только несколько запущенных задач.Каждая задача представляет собой отдельный поток, поэтому вам может понадобиться 32 максимальных слота на этом узле.
В противном случае, вероятно, ваши данные не будут разбиты на достаточное количество фрагментов.Вы работаете над небольшим количеством данных?Возможно, ваше задание MapReduce выполняется только через несколько входных разбиений и, следовательно, не требует дополнительных картографов.Вместо этого попробуйте выполнить свою работу на сотнях МБ данных и посмотрите, сохраняется ли у вас такая же проблема.Hadoop автоматически разбивает ваши файлы.Количество блоков, на которые разделен файл, - это общий размер файла, деленный на размер блока.По умолчанию одна задача карты будет назначена каждому блоку (не каждому файлу).
В вашем файле конфигурации conf/hdfs-site.xml
есть dfs.block.size parameter
.Большинство людей устанавливают это на 64 или 128 МБ.Однако, если вы пытаетесь сделать что-то крошечное, вы можете настроить это, чтобы разделить работу больше.
Вы также можете вручную разбить файл на 32 части.