Я экспериментирую с переменными среды Hadoop MapReuce.
Мой случай использования довольно необычен, но это не причина, по которой я борюсь.
Моя цель состоит в том, чтобы экспортировать переменные окружения на все мои картографы и редукторы.
Для этого я использую настройки mapreduce.map.env
и mapreduce.reduce.env
conf следующим образом:
hadoop jar myJob.jar -Dmapreduce.map.env="A=foo"
Это прекрасно работает и действительно выставляет A
на всех моих картографах.
В этой связи я упомяну, что mapreduce.map.env
- это действительно отсутствие документации или примеров использования в Интернете.
Моя проблема в том, что мой проект выполняет задания MapReduce по слоям, каждый слой может передавать флаги команде Jadoop Jar, пока я не управляю верхними слоями.
Поэтому я могу запустить следующую команду:
hadoop jar -Dmapreduce.map.env="A=foo" -Dmapreduce.map.env="B=foo2"
Насколько мне известно и эксперименты (исправьте меня, если я ошибаюсь), эта команда только выставит "B = foo2" в моей среде картографа.
Я не могу найти ничего в сети, чтобы преодолеть эту проблему.
ВАЖНОЕ ПРИМЕЧАНИЕ: Поскольку я знаю только переменную env, которую я хочу представить во время выполнения (она динамическая и может изменяться), я не могу добавить переменные env в mapred-default / stie.xml