2013-08-17 2 views
1

ChainMapper.addReducer & 7-й аргумент addMapper - данные пропуска в качестве значения или ссылки. Я не понимаю, как данные могут передаваться в качестве ссылок, когда редуктор может работать на другой машине, чем у устройства отображения.Как хаоп проходит по ссылке?

эксперты Hadoop, пожалуйста, любезно ответить

ответ

2

В Chain классы добавляют дополнительные Mapper преобразования до или после Mapper или Reducer. Это происходит в рамках локальных вычислений на рабочем месте. В этом нет ничего, что требует, чтобы ключи и значения были сериализованы, отправлены на другую машину и снова обработаны. Это просто происходит в режиме онлайн.

Вот почему это может сбивать с толку, так как мы не привыкли к Mapper, видя в буквальном смысле тот же вывод объекта другой операцией. Это было бы более эффективным, чтобы пройти по ссылке. Но возможно, что код предполагает, что он по стоимости, так как Hadoop работает иначе. Например, вы можете предположить, что вы можете изменить состояние ключа или объекта значения в цепочке Mapper и очень удивляться тому, что Reducer, прежде чем он примет это изменение. (Я думаю, что это плохой дизайн, хотя.)

Итак, этот аргумент управляет тем, что Hadoop просто сериализует и десериализует объект в любом случае - в принципе, создает клон через сериализацию. Это дополнительная работа.

Аргумент byValue отсутствует в новых API Hadoop. По умолчанию true, и вы можете придерживаться этого, если не знаете лучше. Если вы уверены, что не изменяете состояние объекта key/value, вы можете безопасно использовать false и получить небольшую скорость при прохождении по ссылке.

Конечно, все это немного запутывает, так как Java всегда является языком с переходом. Но объекты никогда не передаются по значению, вместо этого ссылки на объекты передаются по значению. Конечно, в этом отношении Java не меняется.

+0

Для меня большая честь, что г-н Оуэн нашел время ответить на мой вопрос. Это отличный ответ. Не могли бы вы также поделиться некоторыми указателями, где я могу найти более подробную информацию? –

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