HADOOP - получить имя внутри маппера
Я пишу маппер и хотел бы знать, возможно ли получить имя узла, где работает маппер.
2 ответа
Hadoop автоматически перемещает вашу программу MapReduce туда, где находятся ваши данные, поэтому я думаю, что вы можете просто выполнить getHostName() (если вы используете Java), и он должен вернуть имя узла, на котором работает ваша программа.
java.net.InetAddress.getLocalHost().getHostName();
Если вы используете другие языки, такие как Python, Ruby и т. Д. (Т. Е. Используете HadoopStreaming), то же самое справедливо, поэтому вы должны иметь возможность использовать соответствующую функцию / метод, доступную на этих языках, для получения имени хоста.
Значение конфигурации fs.default.name
скорее всего, даст вам URL-адрес наменода, и если вы получите экземпляр файловой системы (Filesystem.get(conf)
) Вы должны быть в состоянии позвонить getUri()
способ получить ту же информацию.