Немного интро - я узнаю о Hadoop. Я реализовал алгоритм машинного обучения поверх Hadoop (кластеризация) и протестировал его только на небольшом примере (30 МБ).Настройка выполнения Hadoop на YARN
Пару дней назад я установил Амбари и создал небольшой кластер из четырех машин (мастер и 3 рабочих). Мастер имеет диспетчер ресурсов и NameNode.
Теперь я тестирую свой алгоритм, увеличивая объем данных (300 МБ, 3 ГБ). Я ищу указатель, как настроить мой мини-кластер. Конкретно, я хотел бы знать, как определить настройки MapReduce2 и YARN в Амбари.
Как определить минимальную/максимальную память для контейнера, зарезервированную память для контейнера, Сортировка распределения памяти, память карты и сокращение памяти?
Проблема в том, что выполнение моих работ на Hadoop очень медленное (а кластеризация - это итеративный алгоритм, что еще хуже).
У меня есть ощущение, что моя установка кластера не хорошо, из-за следующей причине:
- я бегу на работу для набора данных 30Мб (я установка блока памяти для этой работы, чтобы быть 8MB , так как данные малы и интенсивность обработки) - время выполнения 30 минут
- Я запускаю одно и то же задание, но умножаю один и тот же набор данных 10 раз - 300 МБ (тот же размер блока, 8 МБ) - время выполнения 2 часа
- Теперь такая же сумма данных - 300 МБ, но размер блока 128 МБ - такое же время выполнения, может быть, даже немного больше 2 часов
Размер блоков на HDFS составляет 128 МБ, поэтому я думал, что это приведет к ускорению, но это не так. Я сомневаюсь, что настройка кластера (минимальный/максимальный размер ОЗУ, карта и сокращение ОЗУ) не очень хороша, поэтому она не может улучшиться, даже если достигнута большая локальность данных.
Это может быть следствием плохой настройки, или я не прав?