Хм .. здесь путаница, или позвольте мне создать путаницу здесь.
Предположим, у вас есть проблема, которую можно решить, скажем, O(n) complexity
что будет делать hadoop, если вы примените, допустим, K машин , тогда это уменьшит сложность в K раз. Так что в вашем случае задача должна была выполняться быстрее (задача hadoop).
Что пошло не так ?????
Предполагается, что у вас есть стандартная установка hadoop и все стандартные конфигурации hadoop, а также если вы по умолчанию запускаете hadoop в локальном режиме.
1) Вы запускаете программу на одном узле, поэтому не ожидайте времени выполнения чего-либо меньшего, чем стандартная программа. (Случай был бы другим, если бы вы использовали многоузловой кластер)
Теперь возникает вопрос, поскольку используется одна машина, время работы должно быть одинаковым ???
Ответ - нет, в hadoop данные сначала считываются устройством чтения записей, которое выдает пары значений ключа, которые передаются в преобразователь, который затем обрабатывает и выдает пары значений ключа (предположим, что объединитель не используется), затем данные сортируются и перемешивается и затем передается на фазу редуктора, после чего выполняется запись в hdfs. Итак, смотрите, здесь намного больше накладных расходов. И вы воспринимаете ухудшенную производительность по этим причинам.
Вы хотите посмотреть, что может сделать hadoop. Запустите ту же задачу на кластере узлов K и получите петабайты данных, а также запустите однопоточное приложение. Я обещаю, вы будете поражены.