Запуск автономного приложения Hadoop на нескольких ядрах ЦП

Моя команда создала приложение Java, используя библиотеки Hadoop для преобразования набора входных файлов в полезный вывод. Учитывая текущую нагрузку, один многоядерный сервер будет работать хорошо в течение следующего года или около того. У нас (пока) нет необходимости использовать многосерверный кластер Hadoop, но мы решили запустить этот проект «в процессе подготовки».

Когда я запускаю это приложение в командной строке (или в eclipse или netbeans), я еще не удалось убедить его использовать более одной карты и / или уменьшить поток за раз. Учитывая тот факт, что инструмент очень сильно загружает процессор, эта «однопоточность» является моим текущим узким местом.

Когда я запускаю его в профилировщике netbeans, я вижу, что приложение запускает несколько потоков для различных целей, но только одну карту / уменьшение выполняется в тот же момент.

Входные данные состоят из нескольких входных файлов, поэтому Hadoop должен, по крайней мере, иметь возможность запускать 1 поток на каждый входной файл одновременно для фазы карты.

Что мне делать в хотя бы 2 или даже 4 активных потока работают (что должно быть возможно в течение большей части времени обработки этого приложения)?

Я ожидаю, что это будет что-то очень глупое, что я упустил из виду.


Я только что нашел это: https://issues.apache.org/jira/browse/MAPREDUCE-1367 Это реализует функцию, которую я искал в Hadoop 0.21 Он вводит флаг mapreduce.local.map.tasks.maximum для управления им.

На данный момент я также нашел решение, описанное здесь, в этом вопросе .

7
задан Community 23 May 2017 в 11:53
поделиться

2 ответа

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

В любом случае, чтобы установить максимальное количество запущенных картографов и редукторов, используйте параметры конфигурации mapred.tasktracker.map.tasks.maximum и mapred.tasktracker.reduce.tasks.maximum по умолчанию. эти параметры установлены на 2 , так что я могу быть прав.

Наконец, если вы хотите подготовиться к многоузловому кластеру, сразу запустите его полностью распределенным способом, но пусть все серверы (namenode, datanode, tasktracker, jobtracker, ...) работают на одной машине

5
ответ дан 7 December 2019 в 07:38
поделиться

Согласно этой ветке в списке рассылки пользователей hadoop.core , вы захотите изменить настройку mapred.tasktracker.tasks.maximum на максимальное количество задач. вы бы хотели, чтобы ваша машина обрабатывала (количество ядер).

Это (и другие свойства, которые вы, возможно, захотите настроить) также задокументированы в основной документации по настройке кластера / демонов .

0
ответ дан 7 December 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: