在 Linux 上将 Hadoop VM 的主机名设置为 IP

在 Linux 上将 Hadoop VM 的主机名设置为 IP

如何让 Ubuntu 服务器 VM/etc/hostname/在启动时自动设置为 VM 分配的 IP 地址的值?

我正在创建一个 Ubuntu 服务器 VM 映像来运行 Hadoop。当客户端与 Hadoop 交互时,它会返回集群中节点的地址(即使在这种情况下它们都是同一台机器上的进程)供客户端交互。这些地址由 Java 的主机名解析确定,我认为这根本不可靠。我被告知解决这个问题的最佳方法是设置/etc/hostname/为唯一网络接口的分配 IP 地址。或者,也可以设置环境变量,然后将其传递给运行每个 Hadoop 进程的 JVM。

答案1

我补充道

hostname `hostname -I`

到'/etc/rc.local',并将主机名正确设置为当前分配的 IP 地址。

答案2

使用固定 IP 是最简单的解决方案。如果可以,只需/etc/hostname在客户机上进行更改,使其看起来像这样(当然使用正确的 IP):

192.168.1.10

如果你不能或不想使用它,你可以设置一个计划任务读取系统的 IP 并进行/etc/hostname相应更新。此命令将为您提供您的 IP:

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

现在为 root 添加一个新的 crontab:

sudo crontab -e

这将调出您定义的编辑器。将此行添加到 crontab 文件:

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

这将在每次机器启动时运行一次命令并将其输出(IP)保存到/etc/hostname。一个可能的问题是 cron 守护程序在分配 IP 之前启动。在这种情况下,您可以将其设置为每五分钟左右运行一次:

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

相关内容