Festlegen des Hostnamens als IP unter Linux für Hadoop VM

3

Wie kann ich eine Ubuntu-Server-VM /etc/hostname/beim Start automatisch auf den Wert der zugewiesenen IP-Adresse der VM einstellen lassen ?

Ich erstelle ein Ubuntu-Server-VM-Image, um Hadoop auszuführen. Wenn ein Client mit Hadoop interagiert, gibt er die Adressen der Knoten im Cluster zurück (auch wenn sich in diesem Fall alle Prozesse auf demselben Computer befinden), mit denen der Client interagieren kann. Diese Adressen werden von Javas Hostnamen-Auflösung bestimmt, die meiner Meinung nach überhaupt nicht zuverlässig ist. Es wurde mir empfohlen, dies am besten zu umgehen, indem Sie /etc/hostname/die zugewiesene IP-Adresse der einzigen Netzwerkschnittstelle festlegen . Alternativ kann es eine Möglichkeit geben, eine Umgebungsvariable festzulegen und diese dann an die JVM weiterzuleiten, die jeden Hadoop-Prozess ausführt.

EngineerBetter_DJ
quelle
Wie ist die IP eingestellt? DHCP? Wäre die Verwendung einer festen IP eine Option?
Terdon

Antworten:

6

Ich fügte hinzu

hostname `hostname -I`

auf "/ etc / rc.local" setzen und den Hostnamen korrekt auf die aktuell zugewiesene IP-Adresse setzen.

EngineerBetter_DJ
quelle
Jetzt fühle ich mich albern. +1
Terdon
Dies funktioniert auch für JMeter
Paul Nelson Baker
3

Die Verwendung einer festen IP wäre die einfachste Lösung. Wenn du das kannst, ändere einfach /etc/hostnameden Gast so, dass er so aussieht (mit der richtigen IP natürlich):

192.168.1.10

Wenn Sie das nicht können / wollen, können Sie einen Cronjob einrichten , der die IP des Systems liest und entsprechend aktualisiert /etc/hostname. Dieser Befehl gibt Ihnen Ihre IP:

ifconfig | grep Bcast | awk '{print $2}' | sed 's/addr://'

Fügen Sie nun eine neue crontab für root hinzu:

sudo crontab -e

Daraufhin wird der von Ihnen definierte Editor aufgerufen. Fügen Sie diese Zeile zur crontab-Datei hinzu:

@reboot ifconfig | grep Bcast | awk '{print $2}' | sed 's/addr://' > /etc/hostname

Dadurch wird der Befehl bei jedem Systemstart einmal ausgeführt und die Ausgabe (die IP) in gespeichert /etc/hostname. Ein mögliches Problem ist, dass der Cron-Daemon gestartet wird, bevor eine IP zugewiesen wird. In diesem Fall können Sie festlegen, dass es etwa alle fünf Minuten ausgeführt wird:

*/5 * * * * ifconfig | grep Bcast | awk '{print $2}' | sed 's/addr://' > /etc/hostname
terdon
quelle