2014-02-07 3 views
1

Я запускаю некоторые задачи по сокращению карты на хауопе. Mapper используется для генерации данных и, следовательно, не зависит от размещения блока hdfs. Для тестирования моей системы я использую 2 узла и один главный узел. Я делаю свое тестирование на hadoop-2.0 с пряжей.плохое планирование задач hadoop

Есть что-то очень неудобное, что я нашел с hadoop. Я сконфигурировал его для запуска 8 задач с картами. К сожалению, hasoop запускает все 8 задач карты на одном узле, а другой узел почти идеален. Есть 4 редуктора, и он не балансирует эти редукторы. Это действительно приводит к низкой производительности, когда это происходит.

Я эти свойства, установленные в mapred-site.xml как на работу трекера и задач трекера

<property> 
    <name>mapreduce.tasktracker.map.tasks.maximum</name> 
    <value>2</value> 
    </property> 
    <property> 
    <name>mapreduce.tasktracker.reduce.tasks.maximum</name> 
    <value>2</value> 
    </property> 

Может кто-нибудь объяснить, если эта проблема может быть решена или почему такая проблема существует с Hadoop?

+0

Вы можете описать больше о «генерации данных и, следовательно, не зависит от размещения блока hdfs». понимать источник данных для работы? – rVr

+0

В основном это как генератор случайных текстов в hadoop, где mappers генерируют случайные данные. Для этого вам не нужен исходный источник данных. – 0xhacker

ответ

0

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

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

Чтобы создать четное распределение, вы можете попробовать выделить достаточное количество памяти для каждого преобразователя/редуктора, чтобы он потребовал целого узла. Например, 4 узла, 8 карт. Принудительно, чтобы каждый картограф имел 50% бара на каждом узле. Не уверен, что это будет работать так, как ожидалось, но на самом деле балансировка нагрузки Hadoop - это что-то хорошее в теории, но, возможно, это не так для небольших ситуаций с данными.

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