Установка имени хоста как IP в Linux для виртуальной машины Hadoop

1959
EngineerBetter_DJ

Как можно настроить виртуальную машину сервера Ubuntu /etc/hostname/на значение, автоматически назначенное виртуальному IP-адресу при запуске?

Я создаю образ виртуальной машины сервера Ubuntu для запуска Hadoop. Когда клиент взаимодействует с Hadoop, он возвращает адреса узлов в кластере (даже если в этом случае они все процессы на одном компьютере) для взаимодействия с клиентом. Эти адреса определяются разрешением имени хоста Java, которое, как я понимаю, не совсем надежно. Мне посоветовали лучший способ обойти это - /etc/hostname/назначить IP-адрес единственного сетевого интерфейса. В качестве альтернативы может быть подход установки переменной окружения и последующей передачи ее JVM, выполняющей каждый процесс Hadoop.

3
Как настроен IP? DHCP? Будет ли использование фиксированного IP-адреса вариант? terdon 11 лет назад 0

2 ответа на вопрос

6
EngineerBetter_DJ

I added

hostname `hostname -I` 

to '/etc/rc.local` and that set the hostname correctly to the currently-assigned IP address.

Теперь я чувствую себя глупо. +1 terdon 11 лет назад 0
Это работает и для JMeter Paul Nelson Baker 9 лет назад 0
3
terdon

Using a fixed IP would be the simplest solution. If you can do that, just change /etc/hostname on the guest so that it looks like this (using the right IP of course):

192.168.1.10 

If you can't/don't want to use that, you can set up a cronjob that reads the system's IP and updates /etc/hostname accordingly. This command will give you your IP:

ifconfig | grep Bcast | awk '' | sed 's/addr://' 

Now add a new crontab for root:

sudo crontab -e 

This will bring up whicever editor you have defined. Add this line to the crontab file:

@reboot ifconfig | grep Bcast | awk '' | sed 's/addr://' > /etc/hostname 

This will run the command once each time the machine boots and save its output (the IP) to /etc/hostname. A possible problem is that the cron daemon is started before an IP is assigned. In that case, you could set it to be run every five minutes or so:

*/5 * * * * ifconfig | grep Bcast | awk '' | sed 's/addr://' > /etc/hostname