2019独角兽企业重金招聘Python工程师标准>>>
昨天部署Hadoop时遇到一个问题,问题被找到但根源是因一个同事疏忽,未对自己Slave机配置/etc/hosts文件。但是这个问题不免让我感到疑惑:对局域网里但每个机子修改此文件,不是很影响Hadoop集群但可伸缩性吗?
"/etc/hosts"这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName和IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。
我们要测试两台机器之间知否连通,一般用"ping 机器的IP",如果想用"ping 机器的主机名"发现找不见该名称的机器,解决的办法就是修改"/etc/hosts"这个文件,通过把LAN内的各主机的IP地址和HostName的一一对应写入这个文件的时候,就可以解决问题。
在进行 Hadoop集群配置中,需要在"/etc/hosts"文件中添加集群中所有机器的IP与主机名, 这样Master与所有的Slave机器之间 不仅可以通过IP进行通信,而且还可以通过主机名进行通信。所以在所有的机器上的"/etc/hosts"文件 末尾中都要添加如下内容:
192.168.1.2 Master.Hadoop
192.168.1.3 Slave1.Hadoop
192.168.1.4 Slave2.Hadoop
192.168.1.5 Slave3.Hadoop
这样做的原因可能是局域网不像广域网那样有专门的DNS,需要通过先查找本地hosts文件,然后再确定目标主机IP。但这样做对后续是否产生不利但影响呢?如果集群中增加一台Slave,是不是要在集群中其他机器里添加这条记录?
也许比起部署集群来说,修改host文件已经算是代价很小了,但是喜欢简单的我却对此耿耿于怀,但苦于无计可施.特此发帖求教!