HADOOP - получить имя внутри маппера

Я пишу маппер и хотел бы знать, возможно ли получить имя узла, где работает маппер.

2 ответа

Hadoop автоматически перемещает вашу программу MapReduce туда, где находятся ваши данные, поэтому я думаю, что вы можете просто выполнить getHostName() (если вы используете Java), и он должен вернуть имя узла, на котором работает ваша программа.

java.net.InetAddress.getLocalHost().getHostName();

Если вы используете другие языки, такие как Python, Ruby и т. Д. (Т. Е. Используете HadoopStreaming), то же самое справедливо, поэтому вы должны иметь возможность использовать соответствующую функцию / метод, доступную на этих языках, для получения имени хоста.

Значение конфигурации fs.default.name скорее всего, даст вам URL-адрес наменода, и если вы получите экземпляр файловой системы (Filesystem.get(conf)) Вы должны быть в состоянии позвонить getUri() способ получить ту же информацию.

Другие вопросы по тегам